}

How to upgrade LEDE Linux using opkg (or trying to do opkg upgrade)

Created:

Introduction

opkg is the package manager that is shipped with LEDE linux. With opkg you can't do the usual "upgrade" like you do with apt, dnf, etc . With opkg the upgrade requires the package name.

We provide commands to upgrade every package install in the router. The idea of the script is to use opkg list-upgradable, then we use bash to pipe the list to opkg upgrade.

Commands to upgrade all packages on LEDE

#!/bin/ash

echo "Updating package list..."
opkg update > /dev/null

if [ `opkg list-upgradable | cut -d " " -f1 | wc -l` -gt 0 ]; then
  echo "Available updates:"
  opkg list-upgradable
  echo ""

  valid=0
  while [ $valid == 0 ]
  do
    read -n1 -s -p "Upgrade all available packages? [Y/n]" choice
    case $choice in
      y|Y|"" )
        valid=1
        echo ""
        echo "Upgrading all packages..."
        opkg list-upgradable | cut -d " " -f1 | xargs -r opkg upgrade
        ;;
      n|N)
        valid=1
        echo ""
        echo "Upgrade cancelled"
        ;;
      *)
        echo ""
        echo "Unknown input"
        ;;
    esac
  done
else
  echo "No updates available"
fi

The important code in the script is this:

opkg list-upgradable | cut -d " " -f1 | xargs -r opkg upgrade

This bash command will pipe upgradable packages to opkg upgrade. All other code in the script is user workflow.