У меня был быстрый вопрос о dpkg / debian-izing. Я пытаюсь создать .deb
(вручную - в основном в учебных целях), и я свернул ar
-chive с control.tar.gz
, data.tar.gz
и debian-binary
файлы.
Это скрученное вручную .deb
отлично работает при регулярных установках, чистках и т. д. Однако когда я указываю --instdir
во время установки, dpkg
сообщает об ошибке "файл не найден" при попытке запустить postinst
сценарий. Это не проблема prerm
скрипт, кстати (который отлично работает).
Бег dpkg
с участием --debug=2000
и глядя на /var/log/dpkg.log
мало помогло.
Есть мысли о том, почему это могло происходить?
TIA.
Чтобы дать дополнительный контекст и задать еще один вопрос: я пытаюсь получить --instdir
работать в основном потому, что каталог верхнего уровня, в который устанавливается содержимое моего пакета, также является точкой монтирования и при выполнении dpkg -P foo
, dpkg
пытается удалить этот каталог. Если кто-нибудь может предложить обходной путь для этого, это также послужит моей цели (т.е. мне не понадобится --instdir
работать). Кроме того, этот каталог верхнего уровня не пуст, поэтому не знаю, почему dpkg
пытается убери это. Помещение .placeholder
файл там тоже не помог.
Как указано здесь (https://stackoverflow.com/questions/8921626/run-time-installation-directory-of-debian-package-contents) пути к динамическим каталогам не поддерживаются в пакетах deb с предварительно упакованными двоичными файлами. Но вы можете указать путь к каталогу не во время выполнения, а в вашем контрольном файле. А для упрощения создания пакетов вы можете использовать некоторые графические инструменты (например, упомянутые здесь: https://askubuntu.com/questions/8055/graphical-tool-for-creating-deb-packages).