web-dev-qa-db-ja.com

preinstスクリプト内で他のdpkgまたはapt- *コマンドを呼び出すことはできますか?

Ubuntu 12.04デバイスに展開されるカスタム(社内).debファイルの一部として、いくつかのPPAリポジトリを追加し、apt-get updateを実行して、それらのPPAからパッケージをインストールする必要があります。

これは、.debファイルの.preinstまたは.postinstスクリプト内で実行できますか?

.debファイル(Sudo dpkg -i testing.deb)をインストールすると、add-apt-repositoryapt-get updateapt-get installなどの特定のコマンドを呼び出せないロックまたはメカニズムが存在する可能性が高いと想定しています。

これは正しい仮定ですか?

8
Stéphane

あなたは正しいです。メンテナースクリプトは、パッケージをインストールするときに行われる変更を除き、aptまたはdpkgの状態を変更することは想定されていません。

ただし、/etc/apt/sources.list.dにファイルをインストールしても問題ありません。 「APTリポジトリXをシステムに追加するためにこのパッケージをインストールする」などの役割を満たすほとんどのパッケージは、単に(add-apt-repositoryを呼び出すのではなく)それを行います。リポジトリの署名に使用されるGPG公開キーを/etc/apt/trusted.gpg.dにドロップすることも一般的です。

ユーザーがソフトウェアの追加インストール手順を簡単に実行できるようにする場合は、ジョブを実行するスクリプトを出荷し、ユーザーにスクリプトを手動で実行するように指示するだけです。

しかし、本当に本当にapt-get updateapt-get installなどを自動的に呼び出したい場合、DebianやUbuntuでパッケージが完全に受け入れられないことを気にせず、ユーザーはパッケージがそのように動作する場合、既存のaptまたはdpkgロックをチェックする/etc/cron.dに何かを入れ、保持されていない場合は追加のインストール手順を実行し、それらの手順が再度実行されないように手配できます。そのアプローチはお勧めしません。

7
the paul