패키지 종속성으로 인해 설치된 불필요한 파일을 최소화하는 방법은 무엇입니까?

패키지 종속성으로 인해 설치된 불필요한 파일을 최소화하는 방법은 무엇입니까?

시스템 크기가 중요하기 때문에 가능한 한 적은 수의 종속 파일을 포함하는 패키지를 설치하려고 합니다.

예를 들어, 패키지를 설치하려는 경우 이를 apt-get install다른 시스템에 설치한 다음 apt-cache depends(다소 큰) 패키지 목록이 생길 때까지 해당 패키지와 모든 종속성을 체계적으로 검사(이 패키지가 의존하는 모든 패키지 표시)할 수 있습니다.

그런 다음 해당 목록 dpkg -L(패키지에 설치된 모든 파일 표시)을 탐색하여 원래 패키지가 작동하도록 시스템에 복사해야 하는 (거대한) 파일 목록을 가져옵니다.

나는 python이 가방으로 이것을 했고 몇 번의 시도 후에 행운을 얻었습니다. 불행히도 다른 패키지는 더 복잡한 것 같습니다.

성공적인 패키지 설치에 실제로 필요한 가장 작은 파일 세트를 찾는 더 나은 방법이 있어야 합니다. 분명히 쓸모없는 후보는 등 입니다 /usr/share/man/*./usr/share/doc/*

종속성에서 어떤 특정 파일이 필요한지 알아내는 방법이 있나요? (예를 들어 전체 컬렉션에는 라이브러리 파일이 하나만 있습니다.)

일부 파일을 선택하고 여전히 작동하는지 시도하는 것 외에 최소한의 파일 세트를 얻는 다른 방법이 있습니까?

필요한 서류를 올바르게 수집하고 있나요?


또한: 소스에서 컴파일하는 것이 옵션인가요? 나는 아직 이 접근 방식에 완전히 익숙하지 않습니다. 다음에 살펴보겠습니다.

편집: XUbuntu 14.04를 사용하고 있습니다.

답변1

개별 파일을 삭제하는 것은 잘못된 접근 방식이라고 생각합니다. 무엇을 깨뜨릴지 확신할 수 없습니다.

어쩌면 파일 A를 삭제하고 패키지 B에서 함수 F1을 테스트하면 모든 것이 작동하는 것 같습니다. 하지만 F1에 A가 필요하지 않기 때문일 수도 있습니다. F2 기능을 사용하려고 시도한 지 일주일 후 파일 A가 필요하기 때문에 비참하게 실패하면 진단하거나 문제를 해결하기가 매우 어려워집니다.

이론적으로 패키저는 이미 종속성과 파일을 최소화하려고 시도합니다.

반면에 소프트웨어를 직접 컴파일하는 것이 더 나은 접근 방식일 수 있습니다. 많은 패키지는 (외부 라이브러리에 의존하지 않고) 정적 버전을 생성할 수 있는 가능성을 제공하므로 더 작은 공간을 확보할 수 있습니다.

이 접근 방식을 사용하더라도 상황은 모두 다릅니다. 이것도 꽤 시간이 걸립니다.

내 제안은 유사한 도구 deborphan(또는 배포판에서 이에 상응하는 도구)를 사용하는 것입니다. 종속성이 없고 안전하게 제거할 수 있는 패키지가 나열됩니다. 제거할 때마다 이제 제거해도 안전한 패키지가 더 많이 발견될 수 있으므로 이는 반복적인 프로세스입니다.

또한 deborphan -a이것을 시도하면 라이브러리 및 종속성뿐만 아니라 모든 후보가 나열됩니다.

관련 정보