On Fedora or CentOS, on way to find out what package providing a file we can use yum whatprovides [FILENAME] or dnf whatprovides [FILENAME] on a DNF-aware system.

# dnf whatprovides tmux
Last metadata expiration check: 2:33:06 ago on Wed 09 Sep 2020 09:45:07 PM AEST.
tmux-3.0a-2.fc32.x86_64 : A terminal multiplexer
Repo        : @System
Matched from:
Provide    : tmux = 3.0a-2.fc32

tmux-3.0a-2.fc32.x86_64 : A terminal multiplexer
Repo        : fedora
Matched from:
Provide    : tmux = 3.0a-2.fc32

I really need this similar tool on Gentoo, and it looks like the emerge command doesn’t have this function built it. Fortunately, there is a utility called e-file (provided by pfl package) which kinda provides this whatprovides option as in yum and dnf.

So let’s check for this pfl package using another of my favorite tools eix.

# eix app-portage/pfl
* app-portage/pfl
     Available versions:  3.1 {+network-cron PYTHON_TARGETS="python3_6 python3_7 python3_8"}
     Homepage:            http://www.portagefilelist.de https://github.com/portagefilelist/client
     Description:         Searchable online file/package database for Gentoo

We’re now ready to install it.

# emerge -av app-portage/pfl

After it’s done, you don’t have to update the database (in case of eix, we have to run sudo eix update); we can start using e-file command. Here is an example to find out what package provides tree command.

# e-file tree
 *  games-server/crossfire-server
        Available Versions:     1.71.0-r1
        Homepage:               http://crossfire.real-time.com/
        Description:            Server for the crossfire clients
        Matched Files:          /usr/share/crossfire/maps/styles/exitstyles/generic/tree;

 *  sci-physics/geant
        Available Versions:     4.10.6_p1 4.10.6_p1-r1 4.10.6_p2
        Homepage:               https://geant4.web.cern.ch/
        Description:            Toolkit for simulation of passage of particles through matter
        Matched Files:          /usr/src/debug/sci-physics/geant-4.10.6_p2/geant4.10.06.p02/source/analysis/g4tools/include/tools/xml/tree; /usr/src/debug/sci-physics/geant-4.10.6_p2/geant4.10.06.p02/source/analysis/g4tools/include/tools/wroot/tree; /usr/src/debug/sci-physics/geant-4.10.6_p2/geant4.10.06.p02/source/analysis/g4tools/include/tools/rroot/tree; /usr/src/debug/sci-physics/geant-4.10.6_p1-r1/geant4.10.06.p01/source/analysis/g4tools/include/tools/xml/tree; /usr/src/debug/sci-physics/geant-4.10.6_p1-r1/geant4.10.06.p01/source/analysis/g4tools/include/tools/wroot/tree; /usr/src/debug/sci-physics/geant-4.10.6_p1-r1/geant4.10.06.p01/source/analysis/g4tools/include/tools/rroot/tree; /usr/include/Geant4/tools/xml/tree; /usr/include/Geant4/tools/wroot/tree; /usr/include/Geant4/tools/rroot/tree;

 *  app-shells/yash
        Available Versions:     2.49 2.50
        Homepage:               https://yash.osdn.jp/
        Description:            Yash is a POSIX-compliant command line shell
        Matched Files:          /usr/share/yash/completion/tree;

 *  app-text/tree
        Available Versions:     1.6.0-r1 1.7.0 1.8.0
        Homepage:               http://mama.indstate.edu/users/ice/tree/
        Description:            Lists directories recursively, and produces an indented listing of files
        Matched Files:          /usr/share/bash-completion/completions/tree; /usr/share/bash-completion/tree; /usr/bin/tree;

And of course the package app-text/tree provides the /usr/bin/tree.