etckeeper, apt 및/또는 dpkg 잠금 메커니즘에 대한 공식 문서는 어디에 있습니까?

etckeeper, apt 및/또는 dpkg 잠금 메커니즘에 대한 공식 문서는 어디에 있습니까?

문맥:

자물쇠를 추가하고 싶어요etckeeper/apt특수 백업 중 후크 활동.

그 목적은 전체 패키지의 무결성을 유지하는 것입니다. 예를 들어 패키지 설치가 완료될 때까지 기다린 다음 특수 백업이 완료될 때까지 새 설치가 시작되지 않도록 합니다.

아래 쉘 스크립트를 찾으십시오.예약 된 일들잠그려는 시도인 것 같습니다.

/var/cache/etckeeper/packagelist.pre-install

그러나 실제로는 원자적으로 실행되지 않으므로 결함이 있습니다. 제 생각에는예약 된 일들쉘 스크립트는 다음의 일부입니다.우분투16.04설치(의 일부가 아님)관리자를 기다려주세요풀어 주다. 결함이 있는 잠금 코드는 아래와 같습니다.

찾다관리자를 기다려주세요/var/cache/etckeeper/packagelist.pre-install잠금 파일 사용에 대한 문서입니다. 문서를 찾을 수 없습니다. 하지만 /var/cache/etckeeper/packagelist.pre-install잠긴 파일로 처리하지 않고 쓸 수 있는 스크립트 파일을 찾았습니다 . 지금은 /var/cache/etckeeper/packagelist.pre-install잠금 파일 인터페이스로 사용하려는 의도가 아니라고 가정합니다.관리자를 기다려주세요. /var/cache/etckeeper/packagelist.pre-installEtckeeper 내부 스크립트는 아래와 같이 잠금 파일로 간주 되지 않습니다 .

질문 1: etckeeper의 잠금 메커니즘에 대한 문서가 (있는 경우) 있습니까, 아니면 설명을 요청할 수 있는 개발자 포털이 있습니까?

질문도 많고 토론도 많았어요스택 교환이용사이트에 대해

/var/lib/apt/lists/lock    (we call it apt lock below)

그리고

/var/lib/dpkg/lock     (we call it dpkg lock below)

자물쇠로쉬운그리고포장 백각기. 모든 통신은 고정된 잠금, 진단 방법 및 잠금 해제 방법과 관련이 있습니다. 그러나 공식적인 언급은 찾지 못했습니다.쉬운그리고포장 백이러한 잠금 파일은 공식 인터페이스에 대한 문서 역할을 하도록 지정됩니다.

질문 2: 관련 문서가 있습니까?쉬운잠금 장치 및/또는포장 백공개 인터페이스로서의 잠금 메커니즘?

결함이 있는 잠금 시도 셸 스크립트로 인해 발생할 수 있음우분투16.04:

$ sudo cat /etc/cron.daily/etckeeper
#!/bin/sh
set -e
if [ -x /usr/bin/etckeeper ] && [ -e /etc/etckeeper/etckeeper.conf ]; then
    . /etc/etckeeper/etckeeper.conf
    if [ "$AVOID_DAILY_AUTOCOMMITS" != "1" ]; then
        # avoid autocommit if an install run is in progress
        lockfile=/var/cache/etckeeper/packagelist.pre-install
        if [ -e "$lockfile" ] && [ -n "$(find "$lockfile" -mtime +1)" ]; then
            rm -f "$lockfile" # stale
        fi
        if [ ! -e "$lockfile" ]; then
            AVOID_SPECIAL_FILE_WARNING=1
            export AVOID_SPECIAL_FILE_WARNING
            if etckeeper unclean; then
                etckeeper commit "daily autocommit" >/dev/null
            fi
        fi
    fi
fi

관리자를 기다리고 있습니다내부적으로 쉘 scipt는 packagelist.pre-install잠금으로 처리하지 않고 작성하므로 잠금 인터페이스로 사용하려는 의도는 아닌 것 같습니다.

$ sudo cat /etc/etckeeper/pre-install.d/10packagelist 
#!/bin/sh
# This list will be later used when committing.
mkdir -p /var/cache/etckeeper/
etckeeper list-installed > /var/cache/etckeeper/packagelist.pre-install
etckeeper list-installed fmt > /var/cache/etckeeper/packagelist.fmt

답변1

  1. 크론 작업은 /var/cache/etckeeper/packagelist.pre-install설치가 처리되고 있다는 증거로 간주되므로 아직 아무 것도 보관해서는 안 됩니다. 이 파일은 잠금 파일이 아니어야 하지만 cron 작업에서 이를 대체 파일로 사용하고 있습니다.

    하지만 etckeeper잠금 파일이 있거나 없거나 에 대해 특별히 걱정하지는 않습니다. 관리되는 트리의 일관된 백업을 원할 경우 etckeeperVCS 기능을 사용하십시오(단, 무시되는 파일도 잊지 마십시오).

  2. 이러한 dpkg잠금은 공용 인터페이스로 문서화되어 있습니다(간단하지만).frontend.txt( /usr/share/doc/dpkg-dev/frontend.txt존재하다 dpkg-dev).

관련 정보