opkg - полезные советы

Используем пакеты, расширяющие возможности оборудования
Аватара пользователя
Zyxmon
Администратор
Сообщения: 1911
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 05 мар 2017, 10:51

Если Вы поставили пакет wget и он перестал работать, то
1) Если у Вас установлен пакет busybox из entware, выполните

Код: Выделить всё

rm -f /opt/bin/wget
ln -s /opt/bin/busybox /opt/bin/wget

2) Если пакет busybox не установлен, то наверняка в прошивке рабочий вариант wget. В этом случае

Код: Выделить всё

rm -f /opt/bin/wget


После переустановки библиотек (предыдущее сообщение) переустановите и wget

Код: Выделить всё

opkg install --force-reinstall wget


PS Лучше без необходимости пакет wget не устанавливать, т.к. wget часть системы пакетов opkg и при обновлении, например, libopenssl он может перестать работать и требовать ручного вмешательства по восстановлению работоспособности.

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1911
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 05 мар 2017, 10:54

Entware следует минималистскому подходу пакетов openwrt. Это не всегда удобно. Например стандартный perl разбит на 100+ пакетов и определить какие Вам нужны не всегда просто. Проще всего не разбираться и установить сразу все пакеты perlbase-*. Это можно сделать одной командой:

Код: Выделить всё

opkg list | grep perlbase- | sed 's/ - .*//' | xargs opkg install

HuduGuru
Сообщения: 15
Зарегистрирован: 06 июл 2017, 22:52

Сообщение HuduGuru » 30 мар 2019, 15:17

1. opkg upgrade убивает систему.

2. rm -f /opt/bin/wget ; ln -s /opt/bin/busybox /opt/bin/wget ; opkg upgrade

тоже убивает систему, потому, что opkg в процессе обновления переставляет wgets обратно.

Как получилось обновиться:
1. opkg install wget --force-depends
Эта команда убьёт wget, но, зато, потом opkg не будет его переустанавливать

2. заменим wget на работающий:
rm -f /opt/bin/wget ; ln -s /opt/bin/busybox /opt/bin/wget

3. opkg upgrade
этот upgrade уже не убьёт ранее обновлённый wget, но грохнется, переустановив busybox — перенаправленный wget тоже будет убит, и все пакеты после этого не поставятся

4. opkg upgrade
Просто тупо еще раз opkg upgrade, busybox переустановлен и работоспособен, всё поставилось до конца.

Перезагрузился, вошел в SSH, продолжаю наблюдение.
Вернуть wgets обратно или не вернуть?

Добавлю: ДЕЛАЙТЕ РЕЗЕРВНЫЕ КОПИИ!

UP:
В результате, насколько я вижу, busybox перелинковал на себя всё, до чего смог дотянуться, в том числе SSH. И не может обновиться пакет openssh-client, которому мешают /opt/bin/scp -> ../sbin/busibox /opt/bin/ssh -> ../sbin/busybox.

Обновляется после удаления /opt/bin/scp и /opt/bin/ssh.

И появилась проблема с XMail - не стало библиотек libssl.so.1.0.0 и lybcrypto.1.0.0, пришлось скопировать их из бэкапа, вроде заработало.
Последний раз редактировалось HuduGuru 31 мар 2019, 10:52, всего редактировалось 2 раза.

Аватара пользователя
Александр Рыжов
Сообщения: 443
Зарегистрирован: 12 авг 2015, 14:14
Откуда: Смоленск

Сообщение Александр Рыжов » 30 мар 2019, 15:35

Всё описанное справедливо исключительно для кинетиков. О возможных засадах установки полнокровного wget'а на них сказано много раз.
Раз профильную тему кинетиков читают не только лишь все ©, пусть останется ещё одно предупреждение здесь.

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1911
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 30 мар 2019, 16:00

HuduGuru писал(а):Источник цитаты 1. opkg install wget --force-depends

Правильнее вместо этого `opkg remove wget` и после всей процедуры `opkg install wget`

kaztost
Сообщения: 223
Зарегистрирован: 17 июл 2017, 00:29

Сообщение kaztost » 30 мар 2019, 20:54

Небольшое ИМХО. Пакетный менеджер не должен настолько зависеть от внешних бинарей, которыми он сам управляет. Идеал из тех, с которым имел дело, это apk Alpine Linux-а. Возможные меры исправления:
1. Встроить код wget в код opkg. Возможно это не так легко.
2. Тащить с wget бизибоксный бинарь wget по некоторому пути (типа /opt/share или /opt/libexec). И добавлять этот путь в PATH при вызове opkg. Сам opkg можно даже запатчить, чтобы всегда вызывался именно этот бинарь.

Аватара пользователя
Александр Рыжов
Сообщения: 443
Зарегистрирован: 12 авг 2015, 14:14
Откуда: Смоленск

Сообщение Александр Рыжов » 30 мар 2019, 22:35

kaztost, уж если домысливать в эту сторону, opkg должен быть собрать статически и не зависеть от внешних библиотек.

Код: Выделить всё

~ # ldd /opt/bin/opkg
        libpthread.so.0 => /opt/lib/libpthread.so.0 (0x77bf2000)
        libgcc_s.so.1 => /opt/lib/libgcc_s.so.1 (0x77bcc000)
        libc.so.6 => /opt/lib/libc.so.6 (0x77a3e000)
        /opt/lib/ld.so.1 (0x77c1f000)

До смены uclibc на glibc в Entware-ng так и было.

По моему мнению opkg должен оставаться работоспособным даже если вся остальная система в руинах.

п.п.1 и 2 придётся проделать для бинарника gzip так же, как и для wget.

kaztost
Сообщения: 223
Зарегистрирован: 17 июл 2017, 00:29

Сообщение kaztost » 31 мар 2019, 00:37

Александр Рыжов писал(а):Источник цитаты opkg должен быть собрать статически

ну да, но это дело техники, в общем-то.
Александр Рыжов писал(а):Источник цитаты п.п.1 и 2 придётся проделать для бинарника gzip

Если не ошибаюсь, то и от "cp". В каких-то старых версиях opkg вызывал cp, чтобы "скачать" с локального "file://..." репозитория. Может сейчас как-то по другому. Тут нужно отметить, что в Андроиде 4.0 этого самого cp может не быть, только cat.

Аватара пользователя
Александр Рыжов
Сообщения: 443
Зарегистрирован: 12 авг 2015, 14:14
Откуда: Смоленск

Сообщение Александр Рыжов » 31 мар 2019, 10:22

kaztost писал(а):Источник цитаты ну да, но это дело техники, в общем-то.

Не так всё просто. Статическая линковка с libpthread в новом тулчейне по словам тов.Zyxmon'а невозможна.

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1911
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 31 мар 2019, 10:46

Александр Рыжов писал(а):Источник цитаты по словам тов.Zyxmon'а невозможна

Скажем так - мне это сделать не удалось. В Google описаны подобные проблемы. Невозможность собрать статически появилась, когда в opkg появилась многопоточность - как пример - расжатие индекса в отдельном thread.


Вернуться в «Entware/Qnapware/Optware/Zyxware - обсуждаем репозитории пакетов»

Кто сейчас на конференции

Всего 0 посетителей :: 0 зарегистрированных, 0 скрытых и 0 гостей (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (162) здесь было 16 ноя 2019, 18:33

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей