How to check to which package an installed file
belongs in Debian, Ubuntu, Redhat, CentOS and FreeBSD
Every now and then every system administrator has to determine to
which installed package a certain file belongs.
This small article is about to give some few basics which will help
you to achieve the task on Linux and Unix/BSD operating
system.
Often times whenever we administrate a system we are required to
list the content of a certain installed package below you will see
a very basic ways to determine which file belongs to which package
on Linux and BSD as well as how to list a file content on a few
different *nix based operating systems. Of course there are
numerous ways to achieve this operation so this examples are
definitly not the only ones:
1. Determining a file belongs to which (.deb) package on Debian
Linux
- The straight way to determine a file belongs to which package
is:
debian:~# dpkg -S coreutils: /bin/ls
- Let's say you would like to check every installed package on your
Debian or Ubuntu Linux for a file name related to a certain file or
binary. To do so on this distros you might use
apt-file (by
default not included in debian and ubuntu), so install it and use
it to find out a binary is adherent to which package.
ubuntu:~# apt-get install apt-file
ubuntu:~# apt-get update
ubuntu:~# apt-file search cfdisk
dahb-html:
/usr/share/doc/dahb-html/html/bilder/betrieb/cfdisk.png
doc-linux-html:
/usr/share/doc/HOWTO/en-html/IBM7248-HOWTO/cfdisk.html
gnu-fdisk: /sbin/cfdisk
gnu-fdisk: /usr/share/info/cfdisk.info.gz
gnu-fdisk: /usr/share/man/man8/cfdisk.8.gz
manpages-fr-extra: /usr/share/man/fr/man8/cfdisk.8.gz
manpages-ja: /usr/share/man/ja/man8/cfdisk.8.gz
mtd-utils: /usr/sbin/docfdisk
util-linux: /sbin/cfdisk
util-linux: /usr/share/doc/util-linux/README.cfdisk
util-linux: /usr/share/man/man8/cfdisk.8.gz
- A good possible tip if you're on a Debian or Ubuntu Linux is to
list a certain package directly from the packages repository, e.g.
without having it installed locally on your Linux.
This is done through:
debian:~# apt-file list fail2ban
fail2ban: etc/default/fail2ban
fail2ban: etc/fail2ban/action.d/hostsdeny.conf
fail2ban: etc/fail2ban/action.d/ipfw.conf
fail2ban: etc/fail2ban/action.d/iptables.conf
fail2ban: etc/fail2ban/action.d/iptables-multiport.conf
...
- Another possible way to find out which package a file belongs is
via
dlocate . Dlocate is probably be the tool of choice if
you won't to automate the process of finding to which package a
file belongs in a shell script or smth.
Here is
dlocate's description
uses GNU locate to greatly speed up finding out which package a
file belongs to (i.e. a very fast dpkg -S). many other uses,
including options to view all files in a package, calculate disk
space used, view and check md5sums, list man pages, etc.
Debian and Ubuntu are not bundled by default with it so you will
have to install it separately.
ubuntu:~# apt-get install dlocate
Let's say you would like to check where does the
awk binary
belongs, issue:
ubuntu:~# dlocate -S /usr/bin/fdisk
testdisk:
/usr/share/doc/testdisk/html/microsoft_fdisk_de.html
testdisk:
/usr/share/doc/testdisk/html/microsoft_fdisk_fr.html
testdisk:
/usr/share/doc/testdisk/html/fdisk_de_microsoft.html
testdisk: /usr/share/doc/testdisk/html/microsoft_fdisk.html
util-linux: /sbin/sfdisk
util-linux: /sbin/cfdisk
util-linux: /sbin/fdisk
util-linux: /usr/share/man/man8/cfdisk.8.gz
util-linux: /usr/share/man/man8/sfdisk.8.gz
util-linux: /usr/share/man/man8/fdisk.8.gz
util-linux: /usr/share/doc/util-linux/README.cfdisk
util-linux: /usr/share/doc/util-linux/README.fdisk.gz
util-linux:
/usr/share/doc/util-linux/examples/sfdisk.examples.gz
- Now sometimes you will have to list the content of a package
binary, in Debian this is easily done with:
debian:~# dpkg -L bsdgames
...
var/games/bsdgames/hack
/var/games/bsdgames/hack/save
/var/games/bsdgames/sail
/usr/share/man/man6/teachgammon.6.gz
/usr/share/man/man6/rot13.6.gz
/usr/share/man/man6/snscore.6.gz
/usr/share/man/man6/morse.6.gz
/usr/share/man/man6/cfscores.6.gz
/usr/share/man/man6/ppt.6.gz
...
2. Here is also how o check which binary belongs to which
package on FreeBSD here
freebsd# pkg_info -W /usr/local/bin/moon-buggy
/usr/local/bin/moon-buggy was installed by package
moon-buggy-1.0.51_1
- Also you might need to list a binary package content in FreeBSD,
here is how:
freebsd# pkg_info -L bsdtris-1.1
Information for bsdtris-1.1:
Files:
/usr/local/man/man6/bsdtris.6.gz
/usr/local/bin/bsdtris
2. To check a package belongs to which package on Fedora,
Redhat, CentOS with rpm
[root@centos]# rpm -qf /bin/ls
coreutils-5.97-23.el5_4.2
Below command is above to show you all files which are contained in
the sample package
mysql-5.0.77-4.el5_5.3
[root@centos]# rpm -ql
mysql-5.0.77-4.el5_5.3