Создание пакета Debian, который не удаляет каталоги после его очистки

Я пытаюсь создать пакет Debian, который не удаляет пустой каталог после его очистки. В частности, я создаю свой собственный пакет, содержащий некоторые сертификаты CA, которым я доверяю.

Я следую предложенному Debian методу установки сертификатов в /usr/local/share/ca-certificates . Проблема, с которой я столкнулся, заключается в том, что пакет ca-certificates создает /usr/local/share/ca-certificates когда он установлен, и я хотел бы, чтобы этот каталог оставался при очистке моего пакета.

Моя цель – установить мою цепочку доверия в /usr/local/share/ca-certificates/mychain но когда мой пакет Debian удален, я хочу, чтобы dpkg не удалял /usr/local/share/ca-certificates/mychain если он пуст, так как ca-certificates package явно создал этот каталог.

Я обыскал для окончательного ответа, но все, что мне удалось найти, это длинные сообщения на форуме и темы электронной почты.

  • Конфигурация FTP-сервера (VSFTP) «write_enable = YES» для каждого пользователя
  • зарезервировать дисковое пространство перед копированием файлов
  • Резервная система seLinux работает строго
  • Изменение Debian и системных часов?
  • Как сопоставить идентификаторы жесткого диска Linux, такие как «sd 3: 0: 0: 0:», например, «ata8:»?
  • Как установить ssh для пользователя на debian?
  • Виртуальный всегда подключенный сетевой интерфейс со статическим IP?
  • linux-sunxi - make failed, неопределенные ссылки clk_ *
  • 2 Solutions collect form web for “Создание пакета Debian, который не удаляет каталоги после его очистки”

    Добавить скрипт postrm :

     #!/bin/sh set -e case "$1" in purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) # Recreate the /usr/local/share/ca-certificates directory, since we are # ignoring Debian Policy by intentionally installing here. Removal of # ca-certificates-local removes this directory if empty. if [ ! -e /usr/local/share/ca-certificates ]; then if mkdir /usr/local/share/ca-certificates 2>/dev/null; then chown root:staff /usr/local/share/ca-certificates chmod 2775 /usr/local/share/ca-certificates fi fi ;; *) echo "postrm called with unknown argument \`$1'" >&2 exit 1 ;; esac #DEBHELPER# exit 0 

    Этот код находится из ca-certificate-local :

    Это пример исходного пакета-заглушки, который включает фиктивный сертификат ЦС в локальном каталоге /. Удалите фиктивный сертификат, скопируйте доверенный локальный корневой ЦС (в формате PEM с именем файла, заканчивающимся на «.crt»), в каталог local /, отредактируйте файлы в каталоге debian / по желанию и создайте свой собственный пакет.

    См. README , Шаги по созданию собственного локального корневого пакета CA из этого примера.

    Итак, быстрый способ создания и установки таких пакетов:

     git clone git://anonscm.debian.org/collab-maint/ca-certificates.git ~/ca-certificates cd ~/ca-certificates/examples/ca-certificates-local/ rm local/Local_Root_CA.crt cp <path-to-your-cert> local/ # edit debian/control: change package-name, description, etc # install build dependencies: http://unix.stackexchange.com/questions/177505/how-to-install-parse-build-dependencies-from-debian-control/211319#211319 dpkg-buildpackage dpkg -i ../<package-name-version>.deb 

    Установите на другой локальный путь и напишите postinst скрипт для создания каталога в /usr/local и скопируйте туда файлы.

    Как вы можете себе представить, это, вероятно, нарушает как букву, так и дух политики Debian. Но это ваша сеть, ваши правила, ваши пользователи (и их легко обнаруживаемые обходные пути).

    Для лучшего удобства использования вы можете пометить эти файлы как conffiles, чтобы по крайней мере они были удалены, если вы очистите пакет, но оставайтесь, если просто удалите его.

    В нижней строке, файлы dpkg не знают, он не может удалить.

    Interesting Posts

    Любая причина не использовать LUKS на резервном диске?

    используя stat, чтобы обеспечить метку времени для касания

    Awk: сравнить два файла

    Как определить беспроводную сетевую карту на моем ноутбуке?

    Будут ли поддерживаться символические ссылки, если путь цели остается тем же, но все передается на новый диск?

    Ошибка `ls` при удалении каталога

    Удивительный: переключатель раскладки клавиатуры

    Почему копируемый исполняемый файл rm не будет работать на другой Linux-машине?

    Пакет докеров не устанавливается из debian, но нормально с ubuntu

    Проблемы с RDP-доступом к пакету обновления 1 для Windows 7 с удаленного рабочего стола Remmina

    Печатать только уникальные строки, которые появляются последним в файле журнала на основе даты / времени

    В каких ситуациях PS2, PS3, PS4 используются в качестве подсказки?

    Как вставить строки с номерами от X до Y в другой файл после строки Z?

    Запустить скрипт на блокировку экрана в KDE

    Gentoo: Как обновить только один порт?

    Linux и Unix - лучшая ОС в мире.