そうみたいです apt-get install
はDebianパッケージをダウンロードし、次のインストールスクリプトを実行しようとします。
私は本当にそれに興味があり、何が起こっているのかを段階的に理解したいと思っています。それを見る方法はありますか? 「ドライラン」モードでのシェルコマンドの印刷のように?
要するに:apt-get install
は、システムが新しくインストールされたソフトウェアアプリケーションを正常に実行できるようにするために必要なすべてを実行します。
長いバージョン:
予備知識:
manpage から:
インストール用に指定されたパッケージに必要なすべてのパッケージも取得され、インストールされます。
これらのパッケージは、ネットワーク(インターネット)のリポジトリに保存されます。したがって、apt-get
は、必要なすべてのパッケージを一時ディレクトリ(/var/cache/apt/archives/
)にダウンロードします。それらは、Webサーバーまたはftpサーバーからダウンロードされます。それらはいわゆるsources.list
で指定されます。パッケージマネージャーaptのリポジトリのリスト。それ以降、手続き的に1つずつインストールされます。
最初にインストールされるのは、それ以上の依存関係がないものです。したがって、正しく機能するために他のパッケージをインストールする必要はありません。これにより、他のパッケージ(以前は依存関係があった)は依存関係を失いました。指定されたパッケージがインストールされるまで、システムはそのプロセスを繰り返し実行し続けます。
各パッケージにはインストール手順があります。
パッケージのインストール手順:
UbuntuやMintなどのDebianベースのLinuxディストリビューションでは、これらのパッケージは、deb-> Debianバイナリパッケージ形式 と呼ばれる指定された標準化された形式になっています。
このようなパッケージには、システムにインストールされるファイルが含まれています。また、 制御ファイル が含まれています。そのファイルには、パッケージングシステムが特定の状況で実行する必要のあるスクリプトが含まれています。いわゆる メンテナスクリプト 。これらのスクリプトは次のように分割されています。
preinst
:システムのファイル階層にファイルをインストールする前postinst
:インストール後prerm
:アンインストール前postrm
:アンインストール後これらのスクリプトは、特定のユーザーが作成される場所、再起動が必要なサービス、またはパッケージが機能するために必要なその他の予備的な場所です。
これらのスクリプトに加えて、パッケージシステムには特定のイベントを対象とした triggers があります。たとえば、新しいカーネルバージョンまたはldconfigまたはman-dbをインストールするときのinitrdの再生成。これらは1つ以上のパッケージによってアクティブ化され、インストールプロセス全体の最後に実行されます。
新しいパッケージのインストール手順を示す興味深い写真があります。
さらに多くの制御ファイルがありますが、最も重要なものは次のとおりです。
control
:A 依存関係のリスト 、およびパッケージを識別するためのその他の有用な情報conffiles
:A 設定ファイルのリスト (通常は/etc
にあるもの)debian-binary
:debパッケージバージョンが含まれています 現在は2.md5sums
:検証用のパッケージ内の各ファイルのmd5sumのリストtemplates
:インストール中の エラーの説明とダイアログ のファイル興味がある場合は、(ダウンロード後に)debパッケージを手動で解凍し、中身を確認できます。
# to only download the package (no installation)
apt-get download package
# to unpack the deb file
ar x package.deb
これで、ファイルを含むdata.tar.gz
というファイルと、4つのメンテナスクリプトと上記の制御ファイルを含むcontrol.tar.gz
というファイルが表示されます。