On Debian-based systems, can one view the man page of packages that aren't yet installed? I want to check what they are capable first, before installing them.
Debian – View man page of not installed package
debianman
Related Solutions
Starting from @derobert's answer, I worked my way to getting exactly the current version of all packages to reinstall.
Short version:
sudo dpkg -l | grep '^ii ' | sed 's/ */\t/g' |cut -f 2,3 | sed 's/\t/=/' | xargs apt-get install --reinstall -y --ignore-missing
Explained:
The key is actually specifying the required version of each package.
The general command is:
apt-get install --reinstall <package>=<version>
Breaking down the long command line:
$ dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-===========================================================-==================================-============-========================================================================
ii adduser 3.113+nmu3 all add and remove users and groups
ii apt 0.9.7.8+rpi1 armhf commandline package manager
ii apt-utils 0.9.7.8+rpi1 armhf package managment related utility programs
ii aptitude-common 0.6.8.2-1 all architecture indepedent files for the aptitude package manager
ii atmel-firmware 1.3-4 all Firmware for Atmel at76c50x wireless networking chips.
$ dpkg -l | grep '^ii '
...gets rid of the header lines and a few packages with status 'hold
' (marked as hi
instead of ii
)
$ dpkg -l | grep '^ii ' | sed 's/ */\t/g'
... converts any number of spaces to a single TAB character, preparing the ground for cut
.
(Btw: why, oh why, doesn't sed
support x+
regex for "character x, one or more times"? It can be emulated with xx*
- meaning 'x' once followed by 'x' zero or more times)
The output looks like this:
ii adduser 3.113+nmu3 all add and remove users and groups
ii apt 0.9.7.8+rpi1 armhf commandline package manager
ii apt-utils 0.9.7.8+rpi1 armhf package managment related utility programs
ii aptitude-common 0.6.8.2-1 all architecture indepedent files for the aptitude package manager
ii atmel-firmware 1.3-4 all Firmware for Atmel at76c50x wireless networking chips.
Next:
$ dpkg -l | grep '^ii ' | sed 's/ */\t/g' | cut -f 2,3 | sed 's/\t/=/'
...gets the name and version of each package (the 2nd and 3rd fields), and replaces the tab that separates them with an '='
adduser=3.113+nmu3
apt=0.9.7.8+rpi1
apt-utils=0.9.7.8+rpi1
aptitude-common=0.6.8.2-1
atmel-firmware=1.3-4
Finally, pipe each of the above to apt-get as a long list of arguments using xargs
.
Notice the parameter --ignore-missing
- this command is run as 'best effort' - I don't want the updating to stop because some packages are not available to reinstall (those will stay unmodified)
$ dpkg -l | grep '^ii ' | sed 's/ */\t/g' |cut -f 2,3 | sed 's/\t/=/' | xargs apt-get install --reinstall --ignore-missing
While testing, I also added a --dry-run
argument to apt-get.
For the system using RPM (yum) package manager, for instance (here) CentOS, use yum provides
or yum whatprovides
:
provides or whatprovides
Is used to find out which package provides some feature or
file. Just use a specific name or a file-glob-syntax wildcards
to list the packages available or installed that provide that
feature or file.
For pcresyntax
, you can try:
yum whatprovides "*/pcresyntax"
From RHL documentation,
yum provides "*/file_name"
is a useful way to find the packages that contain file_name.
Also visit How do I find which rpm package supplies a file I'm looking for?
For Debian/Ubuntu based system which use APT as default package-manager, there is apt-file
(thanks @Gilles for pointing out) command which can do a job what you're looking for.
DESCRIPTION
apt-file is a command line tool for searching files in packages for the APT package management system.
search Search in which package a file is included. A list of all packages containing the pattern pattern is returned.
So, use apt-file search
to find a package that includes a file you're looking for.
In another words, manpage is provided by files (usually from /usr/share/man) and possible duplicate of How to find out which (not installed) package a file belongs to?!
Best Answer
You can use debman to view man pages before installing a package. See: http://www.debian-administration.org/articles/454.