Find out what 'apt-get install' did

How can I find out what commands a package ran to install the software with apt-get install <package>?

For example, if I install a package that creates a user, how can I find out how it created that user?

Asked By: Grasshopper


You look at the post-installation script, which is actually run by dpkg. You can find these in /var/lib/dpkg/info. Such scripts contain the name of the binary package in question, and have the suffix .postinst.

Note that there are also pre-installation scripts, which have the suffix .preinst, but I think that a package is much more likely to create a new user in a postinst script.

Did you have a particular example in mind?

An example is postgresql-common, which creates the postgres user. Here is an extract from the file /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
Answered By: Faheem Mitha

What apt-get install does is executing dpkg -i on the packages.

To find out what a package does while installing you have to unpack it. Look in /var/cache/apt/archives/ if your package is still there.

Inside the package is a data archive (data.tar.gz) and a control archive (control.tar.gz). Inside the control archive is a script to execute after the installation (postint) and one to execute after deleting the package (postrm). Open those scripts in an editor and see what the installation process does.

To unpack the package:

ar x package.deb

To unpack the control archive (after unpacking the package):

tar xfz control.tar.gz
Answered By: chaos