List of files installed from apt package

148,428

Solution 1

Note: in the following commands, a command beginning with 'root#' means it needs to be run as root.

To find which files were installed by a package, use dpkg -L:

$ dpkg -L $package

apt-file can tell you which files will be installed by a package before installing it:

root# apt-get install apt-file
root# apt-file update
$ apt-file list $package

Or if you have the package as a .deb file locally already, you can run dpkg on it:

$ dpkg --contents $package.deb

To find which package provides a file that is already on your system, use:

$ dpkg -S /path/to/file

To find which package provides a file that is not currently on your system, use apt-file again:

$ apt-file search /path/to/file

Solution 2

dpkg -S /path/to/file/in/question

As far as I'm concerned, dpkg is the low-level tool that apt-get depends on.

Solution 3

Here is a function that should do it for you without the need to downloading the package to disk.

apt_list () 
{ 
    local packages=("$@");
    for pkg in $(seq 0 1 $((${#packages[@]}-1)));
    do
        echo -e "\n#### ${packages[$pkg]} ####\n";
        apt-get download -o Dir::Cache::archives="./" --print-uris ${packages[$pkg]} | awk -F\' '{print $2}' | xargs -I '{}' curl -skL '{}' | dpkg-deb -c /dev/stdin | perl -ne 's,(:\d\d )[.]/,$1/,g;print';
        echo;
    done
}

Then use apt_list <package name1> [package name 2]

e.g. apt_list curl wget

As for reverse checking files from packages apt-file would be the best bet.

Solution 4

If you have installed dlocate, you can use dlocate -L the same way as dpkg -L. It works exactly the same in this case, but has a number of other options.

Share:
148,428

Related videos on Youtube

David Nehme
Author by

David Nehme

Updated on September 17, 2022

Comments

  • David Nehme
    David Nehme over 1 year

    How do I get a list of files that were or will-be installed when I apt-get a package? Conversely, can I find what package(s) caused a particular file to be installed?

  • Zoredache
    Zoredache over 14 years
    Keep in mind that while this will get you most of what you need it will not give you everything. Several packages create configuration files as part of their setup scripts. These files will not be reported by dpkg.
  • Araejay
    Araejay about 14 years
    Yes, dpkg is the command that adds and removes software and files from you mcomputer. apt (incl. Apt-get, aptitude, synaptic, etc.) is the programme that calls dpkg
  • Alecz
    Alecz over 7 years
    $ dpkg -L package not $ dpkg -L $package putting the $ in front of the package names returns an error
  • BJladu4
    BJladu4 over 7 years
    The dollar is meant to be understood as a variable, meaning you need to replace $package with the actual name of the package.
  • Uwe Geuder
    Uwe Geuder about 6 years
    conffiles of a package (if any) are listed by command dpkg --status $package. For the reverse operation use grep $filename /var/lib/dpkg/info/*.conffiles.
  • samshers
    samshers over 3 years
    bit late Q - - what does sudo apt-file update do ??
  • Victor Yarema
    Victor Yarema over 3 years
    @samshers, apt-file update command populates the db which apt-file uses for searches.
  • confiq
    confiq over 3 years
    what if you don't have apt-file?
  • Speeddymon
    Speeddymon over 2 years
    @confiq if you don't have apt-file, run sudo apt-get -y install apt-file then run sudo apt-file update. After that you can use the tool as described above.
  • linuxgeek
    linuxgeek over 2 years
    It can be done with some creative piping from apt-get though, see my answer below :)
  • Admin
    Admin almost 2 years
    I find apt-file list $package the most useful. dpkg -L $package lists directories. Thanks!