Збереження пакетів 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