Якщо ви хочете бачити, які пакети доступні для оновлення під час входу через 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
Щоб скрипт коректно працював, потрібно щоб список доступних пакетів був оновлений. Це можна реалізувати:
На пристроях із обмеженим обсягом пам’яті (16–32 МБ) це споживає ресурси. Для таких випадків див. наступний метод.
Оновлення раз на тиждень:
crontab -e
Додайте:
1 0 * * 0 /bin/opkg update # щонеділі о 00:01 # crontab має завершуватися порожнім рядком або коментарем
Працює лише якщо ви часто перезавантажуєте пристрій. Також споживає RAM.
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, але краще залишити системні файли без змін.
Успіхів!