一部のアプリケーションをインストールすると、インストール時に自動的に実行されるアプリケーションからプロセスまたはサービスが開始される場合があります。起動せずにインストールするにはどうすればよいですか?
ベストアンサー
少しハックですが、これを行うには非常に信頼性の高い方法があります。これは、自動インストールスクリプトでしばらく使用しています。
まず、/root/fake
などのディレクトリを作成します 、/bin/true
へのシンボリックリンクが含まれています 呼ばれる:
initctl
invoke-rc.d
restart
start
stop
start-stop-daemon
service
deb-systemd-helper
また、何もせずに成功を返すbashスクリプトにすることもできます。
次に、そのディレクトリを$PATH
の前に含めます パッケージをインストールする場合:
PATH=/root/fake:$PATH apt-get install whatever
これは、initramfsの作成などがまだ行われている間、デーモンが起動/再起動するのを防ぐだけです。
説明
パッケージのインストールおよび削除時に実行されるスクリプトは、invoke-rc.d
を実行します。 またはサービスを開始および停止するための上記のコマンドの他のもの。ただし、絶対パスで呼び出すことはありません(少なくとも、絶対パスで呼び出すものはありません)。
したがって、$PATH
の先頭に偽の「nooperation」コマンドを挿入します 、実際のコマンドが呼び出されることはありません。
サービスの開始/停止に使用されるコマンドのみが偽造されているため、他のすべて、特にinitramfs-imagesの更新/作成などの重要なタスクは引き続き機能します。