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の動作を変更しないでください(他のタスクを実行する前にコマンドを実行することを除く)。ボーナスでコマンドライン引数を解析し、実際に必要な場合にのみコマンドを実行できます。

(この回答は以下に基づいています。モハメドエットマダルの答え、ムルウのフィードバックを反映する)

答え3

.bashrcファイルで「エイリアス」を使用できます。たとえば、ルート .bashrc ファイルに次のように入力します。

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

コマンドライン引数は、エイリアスの末尾に自動的に追加されます。

echo blahblah必要なコマンドに置き換えてください。

ただし、この場合はコマンドを実行したときにのみ機能します。(スードではない)。

答え4

ファイルにエイリアスを使用してみてください.bashrc。そのファイルに対応するアカウントでログインしている場合にのみ有効です。エイリアスの構文は次のとおりです。

alias newcommand='command1; command2; command3' したがって、線は次のように見えます。

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

またはこれ:

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

2番目のケースでは、apt-get成功した場合にのみ実行されます。firstcommand

関連情報