SuSE를 실행하기 위해 Linux 이미지를 축소하려고 하며 strip
시스템의 모든 실행 파일에서 실행하는 것을 고려하고 있습니다. 이 방법으로 많은 디스크 공간을 확보할 수는 없지만 그렇게 하면 어떤 해가 있습니까?
답변1
Linux에서는 그렇지 않지만(방금 확인했습니다...) 다른 시스템(BSD, OSX 등)에서는 이렇게 하면 부작용으로 setuid/setgid 권한이 제거됩니다. 또한(여전히 OSX에 초점을 맞추고 있음) 파일 소유권이 변경될 수 있습니다(작성하는 사용자의 경우).
Linux의 경우 초기에는 공유 라이브러리를 제거하면 해당 라이브러리에 대한 연결이 차단되었던 것으로 기억됩니다. 지금은 그게 문제가 아니지만도서관 안내이렇게 하면 디버거가 쓸모없게 됩니다. 정적 라이브러리에 대한 링크를 방지합니다.
추가 자료:
답변2
대부분의 배포판,OpenSUSE 포함, 실행 파일을 빌드 스크립트의 일부로 포함합니다. 이미 완료되었으므로 시스템의 실행 파일을 제거할 필요가 없습니다.
일부 바이너리는 제거할 수 없습니다. 패키지 관리자는 패키지 제거를 방지하기 위해 올바른 빌드 옵션을 사용하도록 주의를 기울입니다. 여기 에는 일반적인 부팅 시 로딩이나 일반 오래된 dlopen
.strip
참고 사항: 공간을 절약하고 싶다면 OpenSUSE가 적합하지 않습니다. OpenSUSE의 패키지 세분성은 매우 거칠습니다. 소규모 시스템의 경우 필요한 부분만 설치할 수 있도록 보다 세분화된 패키지 세분화를 갖춘 배포판을 사용하세요. 데스크탑/서버 범위에서는 Debian과 Arch가 좋은 선택입니다. WRT와 같은 임베디드 시스템을 대상으로 하는 배포를 고려할 수도 있습니다.
답변3
리포지토리에서 바이너리 패키지를 설치하는 배포판을 실행하는 경우(SUSE를 포함한 대부분의 배포판이 이 작업을 수행함) 실행 파일에 대한 변경 사항은 다음에 해당 패키지가 포함된 패키지를 업데이트(또는 다시 설치)할 때 무시됩니다. 는 가려져있어.
또한 실행할 때마다 잘못된 체크섬과 크기(및 strip
해당 --preserve-dates
옵션을 사용하지 않은 경우 날짜) 가 있는 것으로 보고됩니다.설치된 패키지 확인. 너할 수 있다rpm
변경사항을 다음과 같이 일치시키세요.설치된 파일에서 패키지 다시 빌드.
설치용 바이너리를 원하는 경우 strip
소스에서 이러한 패키지를 빌드하는 것이 좋습니다.컴파일러/링커 플래그 조정. 이 작업을 수행하려면 배포판 자체 도구를 사용하여 패키지를 구축해야 합니다(예:rpm 빌드,dpkg 빌드 패키지, 또는makepkg). 이러한 광범위한 사용자 정의가 필요한 사람들을 위해 다음이 있습니다.소스 기반 배포그리고 심지어처음부터 리눅스. 그러나 소스에서 빌드하는 것은 더 작은 바이너리를 사용하여 궁극적으로 절약되는 것보다 시간이 더 오래 걸리고 더 많은 디스크 공간을 사용합니다.