Я имею, создают пользовательский debian пакет с конфигурациями перезаписи shuold lightdm (автовход в систему). Мой сценарий установки (debian/install) содержит следующие строки:
lightdm/* /etc/lightdm/lightdm.conf.d/
Но я получаю следующую ошибку при установке моего пользовательского пакета:
dpkg: error processing /var/cache/apt/archives/AAA (--unpack):
trying to overwrite `/etc/lightdm/lightdm.conf.d/20-lubuntu.conf', which is also in package CCC
dpkg-deb: subprocess paste killed by signal (Broken pipe)
Errors were encountered while processing:
AAA E: Sub-process /usr/bin/dpkg returned an error code (1)
Я знаю, что могу использовать параметрический усилитель - перезапись силы для установки пакета через dpkg. Но я хочу установить его как зависимость другого пакета. Таким образом, как я могу позволить моему пакету перезаписывать файлы конфигурации других пакетов?
Я попробовал это, но это работа привычки (debian/rules):
#!/usr/bin/make -f
%:
dh $@
override_dh_command:
dh_command -- --force-overwrite
override_dh_installdeb:
dh_installdeb -- --force-overwrite
Я понял. Существует только на оставленной вещи. Теперь я могу отклонить исходный conf файл. Но контрольные суммы моего DEBIAN/conffile недопустимы, таким образом, я удалил его. Мой debian/rules файл:
overrider dh_installdeb:
dh_installdeb
rm debian/mypackage-name/DEBIAN/conffiles
Я получаю предупреждение follwing:
Configuration file `/etc/lightdm/lightdm.conf.d/20-ubuntu.conf'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** bash.bashrc (Y/I/N/O/D/Z) [default=N] ?
Как я могу удалить предупреждающее сообщение?
Это - содержание моего debian/preinst файла:
#!/bin/bash
dpkg-divert --add --package mypackage-name --rename --divert /etc/lightdm/lightdm.conf.d/20-lubuntu.conf.real /etc/lightdm/lightdm.conf.d/20-lubuntu.conf
Содержание моего debian/install файла:
lightdm/* /etc/lightdm/lightdm.conf.d/
Содержание debian/rules:
#!/usr/bin/make -f
%:
dh $@
override_dh_builddeb:
dh_builddeb -- -z1
overrider dh_installdeb:
dh_installdeb
rm debian/mypackage-name/DEBIAN/conffiles
Спасибо.
Вы не делаете. Вы вместо этого отклоните их. Для удобства я использую вспомогательный пакет типа config-package-dev
. С помощью config-package-dev
вы даете вашим файлам конфигурации некоторые конкретные имена, и установка автоматически выполнит требуемое переключение.
Например, если ваш пакет называется foo-bar
, то:
Ваш debian/rules
будет иметь:
%:
dh $@ --with config-package
.foo
(например, lightdm/20-lubuntu.conf.foo
создается процессом сборки пакета) - для этого расширения используется первое слово в имени вашего пакета. У вас есть config-package-dev
в качестве Build-Зависит от вашего debian/control
. Например:
Build-Depends: debhelper (>= 7.0.0~), config-package-dev (>= 5.0)
Это означает, что config-package-dev
необходимо установить до того, как вы попытаетесь собрать пакет, но не для установки.
В дополнение к файлу debian/install
создайте файл displace
, в котором перечислены все файлы, которые необходимо перенаправить. Например, он будет содержать:
/etc/lightdm/lightdm.conf.d/20-lubuntu.conf.foo