Як побачити оновлення пакетів після входу через SSH
Якщо ви хочете бачити, які пакети доступні для оновлення під час входу через SSH (не впливає на вхід через LuCI), це можна реалізувати двома простими способами:
- Створити скрипт профілю користувача, який перевіряє список оновлюваних пакетів
- Налаштувати автоматичне виконання
opkg update
через crontab для актуальності списків пакетів
Або просто інтегрувати перевірку оновлень у той самий скрипт профілю — тоді все відбуватиметься при кожному вході.
При запуску скрипта після входу в SSH ви побачите приблизно таке:
_______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M ----------------------------------------------------- OpenWrt 18.06.1, r7258-5eb055306f ----------------------------------------------------- 151 packages are installed. 4 packages can be upgraded. root@OpenWrt:~#
Після цього ви можете вручну оновити один, кілька або всі пакети однією командою.
Створення скрипта профілю користувача
Для створення скрипта потрібно зайти в систему через SSH під root'ом. У прикладі використовується редактор nano, але ви можете використовувати будь-який інший редактор.
nano ~/.profile
Вміст файлу:
#!/bin/sh opkgInstalled="$(opkg list-installed 2> /dev/null | wc -l)" opkgUpgradable="$(opkg list-upgradable 2> /dev/null | wc -l)" echo "$opkgInstalled packages are installed." echo "$opkgUpgradable packages can be upgraded." echo
Автоматичне оновлення списку пакетів
Щоб скрипт коректно працював, потрібно щоб список доступних пакетів був оновлений. Це можна реалізувати:
- за допомогою crontab
- при завантаженні системи
- при вході, у тому ж скрипті профілю
через crontab
На пристроях із обмеженим обсягом пам’яті (16–32 МБ) це споживає ресурси. Для таких випадків див. наступний метод.
Оновлення раз на тиждень:
- через LuCI: додайти наступні рядки в LuCi > System > Scheduled Tasks
- через термінал:
crontab -e
Додайте:
1 0 * * 0 /bin/opkg update # щонеділі о 00:01 # crontab має завершуватися порожнім рядком або коментарем
через скрипт автозапуску
Працює лише якщо ви часто перезавантажуєте пристрій. Також споживає RAM.
- через LuCI: додайте наступні рядки в LuCi > System > Startup > Local Startup
- через термінал:
nano /etc/rc.local
Додайте перед `exit 0`:
/bin/opkg update
через той самий скрипт профілю
Оновлення пакетів при вході — з перевіркою підключення до Інтернету та доступної RAM:
nano ~/.profile
Вставте:
#!/bin/sh if wget -q --spider https://openwrt.org/; then echo "You are connected to the internet. Checking for updates, please wait..." echo opkg update > /dev/null 2>&1 opkgInstalled="$(opkg list-installed 2> /dev/null | wc -l)" opkgUpgradable="$(opkg list-upgradable 2> /dev/null | wc -l)" echo "$opkgInstalled packages are installed." echo "$opkgUpgradable packages can be upgraded." echo memLimit=32000 if [ "$(grep MemFree /proc/meminfo | awk '{print$2}')" -lt $memLimit ]; then for opkg_package_lists in /var/opkg-lists/* do if [ -f "$opkg_package_lists" ]; then rm -r /var/opkg-lists/* echo "Warning: Memory limit $memLimit bytes. Removed downloaded package lists to save memory." echo fi done fi else echo "You are not connected to the internet. Unable to check for updates." echo fi
Збереження скрипта після оновлення прошивки
За замовчуванням, файл /root/.profile
не зберігається після оновлення OpenWrt.
Щоб додати його до списку файлів для резервного копіювання:
echo '/root/.profile # мій скрипт профілю' >> /etc/sysupgrade.conf
Інші змінені файли (наприклад, crontab
і /etc/rc.local
) вже включені до резервного списку.
Докладніше: Оновлення OpenWrt з командного рядка
Оновлення пакетів однією командою
Щоб оновити конкретний пакет:
opkg upgrade package_name
Щоб оновити всі: див. check_for_any_upgradable_packages
Оновлення пакетів відбувається без певного порядку. Переконайтесь, що на пристрої достатньо місця.
Автоматичне оновлення всіх пакетів не рекомендується, якщо ви не керуєте централізованим репозиторієм.
На завершення
Якщо ви маєте кращий варіант реалізації, оновіть цю інструкцію.
Можна також додати скрипт до /etc/profile
, але краще залишити системні файли без змін.
Успіхів!