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?
-
Similar on SU superuser.com/questions/82923/… on Ubuntu: askubuntu.com/questions/32507/…– Ciro Santilli Путлер Капут 六四事May 12, 2015 at 10:56
-
Both ubuntu and debian have web for this, for example packages.ubuntu.com/focal/amd64/tldr/filelist– RickJun 21 at 8:29
4 Answers
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
-
10Keep 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. Dec 23, 2009 at 17:33
-
2The dollar is meant to be understood as a variable, meaning you need to replace
$package
with the actual name of the package.– raphinkJan 15, 2017 at 23:37 -
1conffiles of a package (if any) are listed by command
dpkg --status $package
. For the reverse operation usegrep $filename /var/lib/dpkg/info/*.conffiles
. Mar 8, 2018 at 17:38 -
1
-
1@samshers,
apt-file update
command populates the db whichapt-file
uses for searches. Oct 28, 2020 at 19:49
dpkg -S /path/to/file/in/question
As far as I'm concerned, dpkg is the low-level tool that apt-get depends on.
-
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 May 9, 2010 at 12:06
-
It can be done with some creative piping from apt-get though, see my answer below :) Jan 11 at 5:24
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.
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.