클라이언트 장치에 설치하고 싶은 .deb 패키지가 있습니다. 현재 개인 키를 통해서만 액세스할 수 있는 개인 저장소에 이러한 패키지가 있습니다. 하지만 고객(또는 패키지를 다운로드할 수 있는 사람)이 패키지를 풀고 코드를 보거나 변경하는 것을 방지하고 싶습니다. 내 생각은 시스템에 암호 해독 키가 있는 경우에만 설치/압축해제할 수 있는 deb 패키지를 갖는 것이지만 쉽지 않은 것 같습니다.
내 생각은 두 개의 .deb 패키지를 갖는 것입니다. 나는 이미 "일반" 패키지(내부라고 부르자)와 또 다른 패키지(외부)를 갖고 있는데 그 패키지에 있는 유일한 것은 다음과 같습니다.
- 암호화된 내부 패키지는 /tmp/inner.deb.enc에 저장됩니다.
- postinst 스크립트에 복호화 키가 있는지 확인하고, 있으면 내부 패키지를 복호화하여 설치한다.
중요한 문제가 있습니다. postinst 스크립트에서 다음과 같이 내부 deb를 설치합니다 dpkg -i /tmp/inner.deb
. 그래서 아웃소싱을 설치하려고 하면 다음과 같은 오류가 발생합니다 dpkg: error: dpkg database lock was locked by another process with pid 10024
. 나는 이것이 외부 패키지가 설치될 때 dpkg 데이터베이스를 잠그고 그 과정에서 (내부 패키지를 설치하기 위해) dpkg를 다시 호출하려고 시도하면 외부에 설치된 잠금과 충돌하기 때문이라고 생각합니다.
dpkg -i /tmp/inner.deb
로 변경하면 apt install /tmp/inner.deb
비슷한 문제가 발생합니다. 아웃소싱을 설치하려고 하면 잠금이 해제될 때까지 기다립니다.
어떤 제안이 있으십니까? 이 사고 방식을 따르거나 완전히 다른 것을 선택하십시오.