ソフトウェアをインストールするためにパッケージが実行したコマンドが何であるかをどうやって知ることができますかapt-get install <package>
?
たとえば、ユーザーを生成するパッケージをインストールする場合、そのパッケージがそのユーザーを作成する方法をどのように知ることができますか?
答え1
インストール後にスクリプトを見ると、実際にはdpkgによって実行されます。でこれらの内容を見つけることができます/var/lib/dpkg/info
。これらのスクリプトには、サフィックスが付いた関連バイナリパッケージの名前が含まれています.postinst
。
サフィックス付きのプレインストールスクリプトもありますが、パッケージがスクリプト.preinst
にpostinst
新しいユーザーを作成する可能性が高いと思います。
具体的な例はありますか?
たとえば、ユーザーを作成するpostgresql-commonがありますpostgres
。以下は文書から抜粋したものです/var/lib/dpkg/info/postgresql-common.postinst
。
# Make sure the administrative user exists
if ! getent passwd postgres > /dev/null; then
adduser --system --quiet --home /var/lib/postgresql --no-create-home \
--shell /bin/bash --group --gecos "PostgreSQL administrator" postgres
fi
答え2
それがすることはパッケージで実行されるだけですapt-get install
。dpkg -i
パッケージがインストールされたときに何をするかを理解するには、パッケージを解放する必要があります。/var/cache/apt/archives/
パッケージがまだあることを確認してください。
パッケージにはデータアーカイブ(data.tar.gz
)と制御アーカイブ(control.tar.gz
)があります。コントロールアーカイブには、インストール後に実行されるスクリプト(postint
)とパッケージの削除後に実行されるスクリプト(postrm
)が含まれています。エディタでこのスクリプトを開き、実際のインストールプロセスを確認してください。
荷物などから取り出す:
ar x package.deb
制御アーカイブを解凍する(パッケージを解凍した後):
tar xfz control.tar.gz