разработка пакета человечности, пытающаяся перезаписывать конфигурацию другого пакета

Я имею, создают пользовательский 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

Спасибо.

1
задан 18 February 2015 в 05:59

1 ответ

Вы не делаете. Вы вместо этого отклоните их. Для удобства я использую вспомогательный пакет типа config-package-dev . С помощью config-package-dev вы даете вашим файлам конфигурации некоторые конкретные имена, и установка автоматически выполнит требуемое переключение.

Например, если ваш пакет называется foo-bar, то:

  1. Ваш debian/rules будет иметь:

    %:
        dh $@ --with config-package
    
  2. Ваша конфигурация файлы заканчиваются на .foo (например, lightdm/20-lubuntu.conf.foo создается процессом сборки пакета) - для этого расширения используется первое слово в имени вашего пакета.
  3. У вас есть config-package-dev в качестве Build-Зависит от вашего debian/control. Например:

    Build-Depends: debhelper (>= 7.0.0~), config-package-dev (>= 5.0)
    

    Это означает, что config-package-dev необходимо установить до того, как вы попытаетесь собрать пакет, но не для установки.

  4. В дополнение к файлу debian/install создайте файл displace, в котором перечислены все файлы, которые необходимо перенаправить. Например, он будет содержать:

    /etc/lightdm/lightdm.conf.d/20-lubuntu.conf.foo
    
2
ответ дан 10 November 2019 в 10:57

Другие вопросы по тегам:

Похожие вопросы: