정리 후 디렉터리를 삭제하지 않는 데비안 패키지 만들기

정리 후 디렉터리를 삭제하지 않는 데비안 패키지 만들기

정리 후에 빈 디렉터리를 제거하지 않는 데비안 패키지를 만들려고 합니다. 특히 저는 제가 신뢰하는 일부 CA 인증서가 포함된 자체 패키지를 만들고 있습니다.

나는 데비안에서 제안한 인증서 설치 방법을 따르고 있습니다 /usr/local/share/ca-certificates. 내가 겪고 있는 문제는 ca-certificates패키지가 설치 시 생성되고 /usr/local/share/ca-certificates패키지를 지울 때 해당 디렉터리가 유지되기를 원한다는 것입니다.

내 목표는 신뢰 체인을 설치하는 것이지만 /usr/local/share/ca-certificates/mychain데비안 패키지가 제거되면 dpkg가 다음을 수행할 수 있기를 원합니다.아니요/usr/local/share/ca-certificates디렉터리가 비어 있으면 ca-certificates패키지가 명시적으로 생성했기 때문에 삭제됩니다.

명확한 답변을 찾기 위해 여기저기 찾아봤지만 찾은 것은 긴 포럼 게시물과 이메일 스레드뿐이었습니다.

답변1

스크립트 추가 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-인증서-로컬:

이것은 local/ 디렉터리에 가상 CA 인증서가 포함된 샘플 스텁 패키지입니다. 가상 인증서를 삭제하고, 신뢰할 수 있는 로컬 루트 CA(PEM 형식, ".crt"로 끝나는 파일 이름)를 local/ 디렉터리에 복사하고, 필요에 따라 debian/ 디렉터리의 파일을 편집한 다음 사용자 정의 패키지를 빌드합니다.

바라보다읽어보기 파일,이 예를 기반으로 사용자 지정 로컬 루트 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

답변2

다른 로컬 경로에 설치하고 postinst스크립트를 작성하여 디렉터리를 만들고 /usr/local거기에 파일을 복사합니다.

상상할 수 있듯이 이는 데비안 정책의 내용과 정신을 위반할 수 있습니다. 하지만 그것은 네트워크, 규칙, 사용자(그리고 쉽게 발견할 수 있는 해결 방법)입니다.

더 나은 사용성을 위해 이러한 파일을 구성 파일로 표시하여 패키지를 지우면 최소한 제거되지만 제거만 하면 그대로 유지되도록 할 수 있습니다.

가장 중요한 것은 파일을 dpkg알 수 없으며 삭제할 수 없다는 것입니다.

관련 정보