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

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

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

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

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

Скопіюйте 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

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

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

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

Показує кожен пакет, встановлений після прошивки (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

Ця команда перелічує всі пакети, пов’язані з файлами, які змінилися в порівнянні з початковим образом 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
This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2025/05/26 20:39
  • by vazaz