Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I know there's a which command, that echoes the full name of a binary (e.g. which sh). However, I'm fairly sure there's a command that echoes the package that provides a particular binary. Is there such a command? If so, what is it? I'd like to be able to run this:

commandName ls

and get

coreutils

for example.

share|improve this question
up vote 18 down vote accepted

I guess you are looking for the dpkg -S command (also see frequently used options for dpkg).

share|improve this answer
1  
Thank you! dpkg -S `which COMMANDHERE` worked for me. – Delan Azabani May 30 '10 at 7:47
    
Gentoo: qfile <name> – Sergei May 20 '14 at 13:24

If you want to find files in a package that you haven't installed, use apt-file

apt-get install -y apt-file
apt-file update

Then, to find something:

apt-file search /usr/bin/file

or

apt-find search file

Where "file" is the name of whatever you're searching for.

If you don't feel like going through this on every debian system, you can use this script:

#!/bin/bash
which apt-get >/dev/null || { echo apt-get not found >&2; exit 1; }
which apt-file >/dev/null || { apt-get install -y apt-file;  apt-file update; }
unset i; IFS=$'\x0a'; select i in $( apt-file search "/$@" ); do 
    test -n "$i" || break; apt-get install "${i%% *}"; done

I just whipped that up then, but it seems to work well.

Note: "dpkg -S" only finds things that you've already installed.

share|improve this answer
2  
Using the -y parameter is dangerous, it could say yes to any number of things. In the script it might be fine, but the first command should really read apt-get install apt-file without the -yas you can't know what the user's system looks like. – jmiserez Jun 11 '15 at 14:57

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .