소프트웨어를 설치하기 위해 패키지가 실행한 명령이 무엇인지 어떻게 알 수 있습니까 apt-get install <package>
?
예를 들어, 사용자를 생성하는 패키지를 설치하는 경우 해당 패키지가 해당 사용자를 생성하는 방법을 어떻게 알 수 있습니까?
답변1
설치 후 스크립트를 보면 실제로는 dpkg에 의해 실행됩니다. 에서 이러한 내용을 찾을 수 있습니다 /var/lib/dpkg/info
. 이러한 스크립트에는 접미사가 붙은 관련 바이너리 패키지의 이름이 포함되어 있습니다 .postinst
.
접미사가 붙은 사전 설치 스크립트도 있지만 .preinst
패키지가 postinst
스크립트에 새 사용자를 생성할 가능성이 더 높다고 생각합니다.
구체적인 예가 있나요?
예를 들어 사용자를 생성하는 postgresql-common이 있습니다 postgres
. 다음은 문서에서 발췌한 내용입니다 /var/lib/dpkg/info/postgresql-common.postinst
.
# Make sure the administrative user exists
if ! getent passwd postgres > /dev/null; then
adduser --system --quiet --home /var/lib/postgresql --no-create-home \
--shell /bin/bash --group --gecos "PostgreSQL administrator" postgres
fi
답변2
그것이 하는 일은 패키지에서 실행되는 것뿐입니다 apt-get install
.dpkg -i
패키지가 설치되었을 때 어떤 일을 하는지 이해하려면 패키지를 풀어야 합니다. /var/cache/apt/archives/
패키지가 아직 있는지 확인하세요 .
패키지 내에는 데이터 아카이브( data.tar.gz
)와 제어 아카이브( control.tar.gz
)가 있습니다. 컨트롤 아카이브에는 설치 후 실행되는 스크립트( postint
)와 패키지 제거 후 실행되는 스크립트( postrm
)가 포함되어 있습니다. 편집기에서 이 스크립트를 열고 실제 설치 프로세스를 확인하세요.
짐 등에서 꺼내다:
ar x package.deb
제어 아카이브의 압축을 푼다(패키지 압축을 푼 후):
tar xfz control.tar.gz