apt-get을 사용하여 다운로드하기 전에 어떻게 명령을 실행할 수 있나요?

apt-get을 사용하여 다운로드하기 전에 어떻게 명령을 실행할 수 있나요?

패키지 다운로드를 시작하기 전에 apt-get 명령을 어떻게 실행할 수 있나요?

dpkg 사전 호출 후크에 대해 알고 있습니다(스크립트를 apt-get에 연결합니다.), 그런데 다운로드 후에는 실행되는 것 같습니다.

$ apt-get update
Get: 11 http://security.debian.org/ wheezy/updates/main qemu amd64 1.1.2+dfsg-6a+deb7u7 [115 kB]
Fetched 70.9 MB in 10s (6,776 kB/s)
refreshing freenet index
--2015-05-19 15:55:25--  http://127.0.0.1:8888/freenet:USK@oRy7ltZLJM-w-kcOBdiZS1pAA8P-BxZ3BPiiqkmfk0E,6a1KFG6S-Bwp6E-MplW52iH~Y3La6GigQVQDeMjI6rg,AQACAAE/deb.mempo.org/-42/

우리에게 필요한 것은 명령을 실행하는 것입니다앞으로다운로드. 보다 정확하게는 apt-get을 호출한 후 apt-get이 온라인 리소스에 액세스하기 전에 스크립트를 실행해야 합니다.

사전 다운로드 후크 같은 것이 있나요?

중요한 점은 apt-get 스크립트를 바꾸지 않고(그리고 업데이트로 인해 취소될 수 있는 추가 작업을 수행하지 않고도) 설치를 완료할 수 있다는 것입니다.

답변1

적절한 호출 전/후 후크를 사용하는 것은 어떻습니까?

본질적으로 dpkg 사전/사후 호출 후크와 유사하지만 apt용입니다(이것이 실제로 사용 사례에서 중요한 후크라고 가정합니다). AFAIK 다른 것도 있지만 저는 이것만 사용했습니다.

예를 들어

$ sudo cat /etc/apt/apt.conf.d/05new-hook
APT::Update::Pre-Invoke {"your-command-here"};

답변2

먼저 apt-get 이 어디에 사용 whereis apt-get되는지 결정하십시오.which apt-get/usr/bin/apt-get

그런 다음 파일을 만듭니다./usr/local/bin/apt-get다음 콘텐츠가 포함되어 있습니다:

#!/bin/bash
# (commands to run before apt-get)
exec /usr/bin/apt-get "$@"

지금 chmod +x /usr/local/bin/apt-get.

이는 배포판의 모든 업그레이드에 존재해야 하지만 apt-get의 동작을 변경해서는 안 됩니다(다른 작업을 수행하기 전에 명령을 실행하는 것 제외). 보너스로 명령줄 인수를 구문 분석하고 실제로 필요할 때만 명령을 실행할 수 있습니다.

(이 답변은 다음을 기반으로 합니다.모하메드 에트마달의 답변, muru의 피드백을 반영함)

답변3

.bashrc 파일에서 "별칭"을 사용할 수 있습니다. 예를 들어 루트 .bashrc 파일에 다음을 입력합니다.

alias apt-get='echo blahblah && apt-get'

명령줄 인수는 별칭 끝에 자동으로 추가됩니다.

echo blahblah필요한 명령으로 바꾸십시오 .

하지만 이 경우에는 명령을 실행할 때만 작동합니다.뿌리(Sudo 아님).

답변4

파일에 별칭을 사용해 보십시오 .bashrc. 해당 파일에 해당하는 계정으로 로그인한 경우에만 유효합니다. 별칭 구문은 다음과 같습니다.

alias newcommand='command1; command2; command3' 따라서 라인은 다음과 같이 보일 수 있습니다.

alias apt-get='firstcommand; apt-get'

아니면 이거:

alias apt-get='firstcommand && apt-get'

두 번째 경우에는 apt-get성공한 경우에만 실행됩니다.firstcommand

관련 정보