LINUX.ORG.RU

Сообщения ALPINE

 

Как грамотно слинковать приложение для распространения в бинарном виде на другие ПК?

Добрый день.

Написал GUI-приложение (игру) с использованием SDL, OpenAL, ну и всяких там libpng. Задача - скомпилировать всё так, чтобы результат можно было распространять в бинарном виде на другие ПК и чтобы не было проблем с зависимостями.

Изначально планировал положить в папку все основные .so-файлы, которые выдаёт ldd mygame. Но, во-первых, я не уверен, что это правильное решение, а во-вторых, упёрся как минимум в одну дебильную проблему. Я работаю в Debian 9, в которой пакет libSDL2 имеет версию 2.0.5+dfsg1-2. При запуске на виртуальной машине с чистым Debian 8 получаю ./libSDL2-2.0.so.0: undefined symbol: wl_proxy_marshal_constructor_versioned. При этом, если пакет libSDL2 установить в Debian 8 (версия пакета 2.0.2+dfsg1-6), все работает. Что ж это, брать более старую версию?

Чистый Ubuntu 12.04 ругается на отсутствие libXss.so.1, libwayland-client.so.0 и др., которых в папке с игрой действительно нет и я не уверен, при чём тут вообще wayland.

Кстати, в папку даже положил libstdc++.so.6, иначе ругается на version CXXABI_1.3.9 not found, version GLIBCXX 3.4.21 not found и т.д., -static-libstdc++ не дает никакого эффекта.

Короче, как грамотно поступить-то? Для справки, некоторые библиотеки под LGPL, их надо линковать только динамически. Но большинство под лицензией BSD/MIT/ZLib/WTFPL.

 , , , ,

ALPINE
()

Не удаляется сломанный пакет

Имеется 64 битный Debian. Ставил через apt-get :i386-пакеты для компилирования 32-битных проектов. Что-то пошло не так, пакет gir1.2-ibus-1.0:i386 поломался. Теперь при каждом удобном случае apt-get мне пишет вот это:

$ sudo apt-get autoremove
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
обновлено 0, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
не установлено до конца или удалено 1 пакетов.
После данной операции, объём занятого дискового пространства возрастёт на 0 B.
Настраивается пакет gir1.2-ibus-1.0:i386 (1.5.14-3) …
dpkg-query: ошибка: --listfiles требует корректное имя пакета, «gir1.2-ibus-1.0» таковым не является: неоднозначное имя пакета «gir1.2-ibus-1.0» с более чем одним установленным экземпляром

Используйте параметр --help для вывода справки по запросам пакетов.
Traceback (most recent call last):
  File "/usr/bin/py3compile", line 290, in <module>
    main()
  File "/usr/bin/py3compile", line 270, in main
    options.force, options.optimize, e_patterns)
  File "/usr/bin/py3compile", line 154, in compile
    for fn, versions_to_compile in filter_files(files, e_patterns, versions):
  File "/usr/bin/py3compile", line 106, in filter_files
    for fn in files:
  File "/usr/share/python3/debpython/files.py", line 71, in filter_public
    for fn in files:
  File "/usr/share/python3/debpython/files.py", line 53, in from_package
    raise Exception("cannot get content of %s" % package_name)
Exception: cannot get content of gir1.2-ibus-1.0
dpkg: ошибка при обработке пакета gir1.2-ibus-1.0:i386 (--configure):
 подпроцесс установлен сценарий post-installation возвратил код ошибки 1
При обработке следующих пакетов произошли ошибки:
 gir1.2-ibus-1.0:i386
E: Sub-process /usr/bin/dpkg returned an error code (1)

Как от того избавиться? Фиг с ними с :i386, мне это на один раз, соберу в виртуальной машине.

Пробовал -f remove, --force-yes remove, dpkg --purge --force-all. Безрезультатно.

- - - -

Решение:

Проблему решил.

Вот это (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=770265#10) нарыл еще до обращения сюда, но не догадался, что с этим делать.

Суть проблемы - баг в пакете gir1.2-ibus-1.0 (в обоих i386 и amd64 версиях).

Решение:

Распаковываем .deb, в файлах DEBIAN/postinst и DEBIAN/prerm дописываем ко всем упоминаниям пакета архитектуру (чтобы вместо gir1.2-ibus-1.0 и получилось gir1.2-ibus-1.0:i386), запаковываем в .deb обратно, устанавливаем исправленный пакет через dpkg -i fixed.deb. Повторить то же самое и для amd64.

Готово.

 ,

ALPINE
()

Браузер по умолчанию выставлен как Firefox, но xdg-open все равно открывает Chromium

Во всех найденных mimeapps.list, defaults.list в качестве браузера вписан Firefox.

Проверяем:

$ xdg-mime query default x-scheme-handler/http
firefox.desktop
$ xdg-mime query default x-scheme-handler/https
firefox.desktop
$ xdg-mime query default text/html
firefox.desktop
$ xdg-open http://localhost &
И на последней строчке открывается chromium.

Предположив, что в firefox.desktop может вписана команда запуска хромиума, проверил:

$ cat `locate firefox.desktop` | grep Exec
Exec=firefox %u
Exec=firefox -new-window
Exec=firefox -private-window

Всё чисто. Какого, собственно, хрена? Где еще искать упоминания хромиума?

(Возможно, запуск Firefox под рутом и кнопка «Установить как браузер по умолчанию» сработает, но я хочу сначала разобраться, куда всё-таки залез хромиум).

 , , , ,

ALPINE
()

Сервер на Debian самопроизвольно перезагружается раз в несколько дней

Раз в несколько дней (неравномерно и спонтанно, то 4 дня, то 10 дней) перезагружается сервер. VPS на KVM. Провайдер (mne.ru) утверждает, что он не при делах.

Система - Debian 8. Всё по умолчанию, поднят apache и одно моё самописное предложение, не жрущее память и большую часть времени не делающее ничего. Памяти 512 Мб, мегабайт 100 всегда свободно, т.к. сервер фактически пустой, еще не начал ничего на нём делать.

Проверил крон на слово reboot:

grep -R reboot /etc/ | grep cron
Пусто. (Всё выполняю от рута.)

Syslog выглядит так:

Dec 26 20:15:01 kvm14901 CRON[28611]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Dec 26 20:17:01 kvm14901 CRON[28618]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Dec 26 20:25:01 kvm14901 CRON[28621]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Dec 26 20:35:01 kvm14901 CRON[28628]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Dec 26 20:39:01 kvm14901 CRON[28631]: (root) CMD (  [ -x /usr/lib/php5/sessionclean ] && /usr/lib/php5/sessionclean)
Dec 26 20:45:01 kvm14901 CRON[28652]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Dec 26 20:52:33 kvm14901 rsyslogd: [origin software="rsyslogd" swVersion="8.4.2" x-pid="494" x-info="http://www.rsyslog.com"] start
Dec 26 20:52:33 kvm14901 systemd-fsck[225]: /dev/sda1 was not cleanly unmounted, check forced.
Dec 26 20:52:33 kvm14901 systemd-fsck[225]: /dev/sda1: 328/24096 files (23.2% non-contiguous), 34879/96256 blocks
Dec 26 20:52:33 kvm14901 keyboard-setup[157]: Setting preliminary keymap...done.
Dec 26 20:52:33 kvm14901 kbd[261]: Setting console screen modes.
Dec 26 20:52:33 kvm14901 kbd[261]: setterm: $TERM is not defined.
Dec 26 20:52:33 kvm14901 networking[262]: Configuring network interfaces...done.
Dec 26 20:52:33 kvm14901 rpcbind[357]: Starting rpcbind daemon....
Dec 26 20:52:33 kvm14901 rpc.statd[422]: Version 1.2.8 starting
Dec 26 20:52:33 kvm14901 sm-notify[423]: Version 1.2.8 starting
Dec 26 20:52:33 kvm14901 nfs-common[411]: Starting NFS common utilities: statd idmapd.
Dec 26 20:52:33 kvm14901 console-setup[318]: Setting up console font and keymap...done.
Dec 26 20:52:33 kvm14901 cron[455]: (CRON) INFO (pidfile fd = 3)
Dec 26 20:52:33 kvm14901 cron[455]: (CRON) INFO (Running @reboot jobs)
Dec 26 20:52:33 kvm14901 dbus[463]: [system] Successfully activated service 'org.freedesktop.systemd1'
Dec 26 20:52:33 kvm14901 kernel: [    0.000000] Initializing cgroup subsys cpuset
Dec 26 20:52:33 kvm14901 kernel: [    0.000000] Initializing cgroup subsys cpu
...далее загрузка системы

Как узнать причину? Записи с временем Dec 26 20:52:33 пишутся ведь уже после перезагрузки? До них тишина.

Меня, кстати, брутфорсит китаец (btmp 30 Мб, пытается под рутом зайти с 218.25.208.90). Это может быть связано с перезагрузкой? Вход под рутом через ssh отключён (PermitRootLogin no).

 ,

ALPINE
()

RSS подписка на новые темы