사용자에게 배포하려는 바이너리가 있고 대부분의 종속성은 빌드 중에 정적으로 연결되지만 leveldb
이와 같은 종속성을 설치해야 하는 경우는 거의 없습니다. 이러한 종속성은 apt get install
명령을 사용하여 설치됩니다.
이것을 배포하는 가장 좋은 방법은 무엇입니까? 내 아이디어는 deb나 docker를 사용하는 대신 바이너리가 포함된 단순한 zip 파일 아카이브입니다. 너무 지나친 것 같지만 종속성 설치를 어떻게 "자동화"할 수 있습니까? 이와 같은 bash 파일에는 바이너리를 실행하기 전에 줄이 run.sh
포함될 수 있지만 apt get install
설치하기 전에 종속성을 사용할 수 없는지 어떻게 확인합니까?
답변1
"가장 좋은" 접근 방식은 대상 운영 체제에 맞는 패키징 시스템을 사용하는 것입니다. 패키지의 요점은 설명하는 내용을 정확하게 수행하는 것입니다. deb나 rpm 등 사용자가 설치하기를 원하는 모든 것을 만드세요.
달리 주장하는 경우 또 다른 일반적인 접근 방식은 바이너리와 configure
. 이는 일반적으로 소스 코드를 컴파일하는 Makefile과 함께 제공되지만 귀하의 경우 구성 스크립트가 종속성이 존재하는지 확인하고 필요한 경우 설치하도록 할 수 있습니다. 당신이 언급했으므로 apt get
Debian 및 Debian 파생 시스템만 대상으로 한다고 가정합니다. 이 경우 확인이 필요하므로 dpkg
다음과 같이 할 수 있습니다.
dpkg -l | awk '$1=="ii" && $2=="leveldb"' >/dev/null || apt install leveldb
그러나 이 모든 것이 잘못된 것 같습니다. Debian 기반 시스템에서 사용자는 deb 파일을 기대하며 이것이 프로그램이 배포되는 방식입니다.