dpkg는 정확히 언제 시작하고 잠금을 중지합니까?

dpkg는 정확히 언제 시작하고 잠금을 중지합니까?

하나의 패키지만 설치하고 해당 postinst가 실행될 때 계속 잠겨 있는지 궁금합니다.

답변1

dpkg파일 잠금은 패키지 관리 프로세스가 시작될 때 설정되며 /var/lib/dpkg/lock, 패키지 관리 프로세스가 종료되어야만 잠금이 해제됩니다.

확인해주십시오데비안 위키dpkg상하이dpkg 맨페이지자체 에 대한 추가 정보 dpkg. 링크도 추가하겠습니다dpkg.orgAPI 및 파일 처리에 대한 보다 구체적인 문서가 있습니다 dpkg.

게다가이 관련 Stack Exchange 게시물그것이 어떻게 /var/lib/dpkg/lock작동하는지 토론하십시오.

이 문서에 설명된 대로 dpkg프런트엔드 또는 자체 dpkg에서 사용될 때 fcntl권고 잠금을 설정하기 위해 시스템 호출이 호출됩니다. dpkg이 잠금 장치를 설치하고 돌아올 수 있어야 합니다 false. 이 잠금 장치가 이미 설정되어 있으면 계속할 수 없습니다. 기능이 완료되면 다른 프로세스를 사용할 수 있도록 예약을 dpkg해제합니다 ./var/lib/dpkg/lockdpkg

중요한 점은 잠금에 대한 경고가 표시되면 /var/lib/dpkg/lock파일을 삭제할 필요가 없고 사용자나 프로세스(예: 에서 시작한 프로세스 unattended-upgrades)가 이미 패키지 관리 프로세스를 실행하고 있는지 확인해야 한다는 것입니다. 이 프로세스가 중단될 수 있으므로 프로세스를 종료하고 잠재적인 데이터베이스 손상을 복구해야 합니다. 이는 다음의 조언을 따르면 달성됩니다.관련 게시물. 다시 한번 말씀드리지만, 파일을 삭제하는 것이 잠금을 해제하는 가장 좋은 방법은 아니라는 점을 상기시켜 드립니다. dpkg문제가 지속되면 악성 프로세스를 종료하고 수정해야 합니다.

특정 질문에 답변하려면:

...패키지만 설치하고 postinst를 실행하면 잠긴 상태로 유지됩니다.

dpkg패키지 관리 프로세스가 완료된 경우에만 잠가야 합니다. postinst 스크립트는 패키지 관리 프로세스에 속할 수 있지만 릴리스되거나 /var/lib/dpkg/lock그 변형이 예정된 경우 패키지 관리자에게 물어봐야 할 질문입니다.

관련 정보