8

I would like to search for which package provides an uninstalled command.

apt-cache search keyword

is good, but the search keyword can be all or part of a package name or any words used in its description, not necessary the name of a program/command.

Is there a better way?

For example, I can't tell which package contains the program xlock:

$ apt-cache search xlock
away - Terminal locking program
devrplay3 - rplay network audio system - basic library
librplay-perl - rplay network audio system - perl modules
librplay3 - rplay network audio system - shared libraries
librplay3-dev - rplay network audio system - development libraries
rplay-client - rplay network audio system - basic clients
rplay-contrib - rplay network audio system - contributed binaries
rplay-server - rplay network audio system - server
xautolock - Program launcher for idle X sessions

Thanks.

Tim
  • 25,177
  • Not a duplicate: this asks about searching online while https://askubuntu.com/questions/481/how-do-i-find-the-package-that-provides-a-file is about searching on the system. – ivan_pozdeev May 19 '19 at 06:43

3 Answers3

14

Install apt-file

sudo apt install apt-file

Perform an initial update of its database

sudo apt-file update

Then (for example)

$ apt-file search 'bin/xclock'
x11-apps: /usr/bin/xclock

See also How do I find the package that provides a file?

steeldriver
  • 136,215
  • 21
  • 243
  • 336
  • Thanks. In my example, xlock (not xclock) isn't installed, and I want to find out which package provides it. Does apt-file search only search among installed programs? – Tim Apr 03 '18 at 15:58
  • @Tim no - AFAIK it searches all the (up to date) repositories in your currently configured APT sources – steeldriver Apr 03 '18 at 16:04
  • Thanks. wondering why use apt-file search 'bin/xclock' instead of apt-file search xclock? – Tim Apr 03 '18 at 16:06
  • I didn't find anything meaningful by sudo apt-file search 'bin/xlock' or sudo apt-file search 'xlock'. – Tim Apr 03 '18 at 16:23
  • @Tim I used bin/xclock simply to narrow down the search - if you don't get any hits with bin/xlock then try with just xlock, If you don't get anything meaningful then there is no package in your repositories that provides a file of that name. – steeldriver Apr 03 '18 at 17:15
  • xlock might be a complicated case - it used to be in the xlockmore package, which a lot of distros have (sadly) urged to phase out in recent years. – rackandboneman Apr 03 '18 at 18:46
  • I had trouble finding what installs dig so I used apt-file search -x '/dig$' (or apt-file search --regexp '/dig$'). man apt-file says that -x is slow. You can also use apt-file search dig | grep '/dig$'. (It's also nice that you don't have to remember -x that way.) – David Winiecki Mar 16 '23 at 22:43
4

Normally on default installs of Ubuntu, when you type an uninstalled command in the terminal you should get a list of packages that provide it, or else a list of similarly-named commands if that specific command wasn't found; it seems that xlock is simply no longer provided in the main Ubuntu repositories. It was available for 12.04 (http://manpages.ubuntu.com/manpages/precise/en/man1/xlock.1.html), but no longer.

For xlock:

$ xlock
No command 'xlock' found, did you mean:
 Command 'mlock' from package 'mlock' (universe)
 Command 'xclock' from package 'x11-apps' (main)
 Command 'vlock' from package 'vlock' (universe)
 Command 'lxlock' from package 'lxlock' (universe)
 Command 'wlock' from package 'sendfile' (universe)
 Command 'slock' from package 'suckless-tools' (universe)
 Command 'rlock' from package 'ruby-lockfile' (universe)
 Command 'flock' from package 'util-linux' (main)
 Command 'clock' from package 'xview-clients' (universe)

Example for one not installed but available:

$ rlock
The program 'rlock' is currently not installed. You can install it by typing:
sudo apt install ruby-lockfile
JAB
  • 226
  • 2
  • 9
  • 2
    +1 And also these outputs are made by command-not-found package thats installed by default on Ubuntu. I guess its good to say the name of this package. – Ali Razmdideh Apr 03 '18 at 18:37
1

Go to packages.ubuntu.com and scroll down to "Search the contents of packages". Enter the program name in the box and click Search. A list of packages containing files named that will be displayed, without you having to install apt-file.

In this case, just like the other suggestions here, it will display nothing useful. That's because xlock came from the xlockmore package, xlockmore doesn't seem to have been shipped in Ubuntu since precise (released in 2012), and packages.ubuntu.com only has information for supported releases, currently back to trusty (released 2014).

hobbs
  • 1,128