Table of Contents

Збереження пакетів OpenWrt після оновлення

Дивіться також: Використання sysupgrade, Додаткові функції opkg, Додаткові можливості hotplug

Пакети, що були вручну встановлені або видалені, не зберігаються за замовчуванням під час оновлення прошивки. Є кілька рішень цієї проблеми.

Рішення

Sysupgrade

Включіть вручну встановлені пакети у резервну копію за допомогою sysupgrade.

sysupgrade -k -b - \
| tar -O -z -x -f - etc/backup/installed_packages.txt \
| awk -e '/\s(overlay|unknown)$/{print $1}'

Скрипт opkgscript від richb-hanover

Скопіюйте opkgscript на ваш роутер. Бажано — у каталог, що точно збережеться після прошивки, щоб не копіювати знову. Зробіть файл виконуваним:

chmod +x /path/to/the/opkgscript.sh

Створіть знімок встановлених пакетів:

/path/to/the/opkgscript.sh -v write

За замовчуванням список буде збережено у `/etc/config/opkg.installed`, і він збережеться після перепрошивки. Після оновлення підключіть інтернет, виконайте:

/path/to/the/opkgscript.sh -v install

Скрипт від gsenna

Default packages attitude 12.09rc2 tplink 1043nd

cat << "EOF" > /tmp/listuserpackages.sh
echo >&2 User-installed packages are the following:
sed -ne '/^Package:[[:blank:]]*/ {
    s///
    h
}
/user installed/ {
    g
    p
}' /usr/lib/opkg/status
EOF
chmod +x /tmp/listuserpackages.sh
/tmp/listuserpackages.sh

Скрипт від valentijn

Виводить лише список вручну та стандартно встановлених пакетів.

cat << "EOF" > /tmp/listuserpackages.awk
#!/usr/bin/awk -f
/^Package:/{PKG= $2}
/^Status: .*user installed/{print PKG}
EOF
chmod +x /tmp/listuserpackages.awk
/tmp/listuserpackages.awk /usr/lib/opkg/status

Скрипт від tboege

Показує кожен пакет, встановлений після прошивки (flash_time), якщо на нього не залежить жоден інший. Якщо ж такий пакет є залежністю — він все одно буде перевстановлений.

cat << "EOF" > /tmp/listuserpackages.awk
#!/usr/bin/awk -f
BEGIN {
    ARGV[ARGC++] = "/usr/lib/opkg/status"
    cmd="opkg info busybox | grep '^Installed-Time: '"
    cmd | getline FLASH_TIME
    close(cmd)
    FLASH_TIME=substr(FLASH_TIME,17)
}
/^Package:/{PKG= $2}
/^Installed-Time:/{
    INSTALLED_TIME= $2
    if ( INSTALLED_TIME > FLASH_TIME ) {
        cmd="opkg whatdepends " PKG " | wc -l"
        cmd | getline WHATDEPENDS
        close(cmd)
        if ( WHATDEPENDS == 3 ) print PKG
    }
}
EOF
chmod +x /tmp/listuserpackages.awk
/tmp/listuserpackages.awk

Скрипт від mforkel та Rafciq

Ідентифікація пакетів для перевстановлення після оновлення системи

Застарілі скрипти

Ця команда перелічує всі пакети, пов’язані з файлами, які змінилися в порівнянні з початковим образом OpenWrt.

Зверніть увагу: скрипт може показати пакети, що входять до стандартної установки OpenWrt — їх конфігурації автоматично резервуються й відновлюються. Також можуть відображатися пакети, які є залежностями інших. Важливо зафіксувати лише ті, які ви встановлювали вручну. Їхні залежності буде встановлено автоматично.

# Для OpenWrt 14.07 або раніше
find /overlay \
| while read -r FILE
do opkg search "${FILE#/overlay}"
done \
| sed -n -e "s/\s.*//p" \
| sort -u
 
# Для OpenWrt 15.05 або пізніше
find /overlay/upper \
| while read -r FILE
do opkg search "${FILE#/overlay/upper}"
done \
| sed -n -e "s/\s.*//p" \
| sort -u