From Gentoo Wiki
Jump to:navigation Jump to:search

Portage File List (PFL) can be used to search for files (or strings) provided by packages that are not currently installed on a given system. This can be useful to find out what package to install given the name of a file from a desired tool. Optionally, the PFL tool can update the online PFL database from the list of locally installed files.

While most Linux distributions are provided as package archives of files to be installed, Gentoo is a metadistribution: the files to make up each package are generated on the user machine, just before installation, according to the current system configuration (USE flags, CFLAGS etc. see make.conf). As each system's files are generated just before a package is installed, there is no fixed central reference of all the files that make up Gentoo. There are so many possible system configurations that it would be impractical to build such a list on a centralized system.

PFL gets around this by querying participating user's machines to determine lists of files generated upon installation. These lists are uploaded, anonymously and with the user's permission, to the PFL server, to allow anyone to query what packages can provide a file with a given name.

The PFL should reference most file names that can be installed by Portage, though in practice there may be exceptions.

equery may be used to determine what package a locally installed file comes from. PFL may be used as a faster alternative, but only equery will be able to reliably determine this on a given machine.

PFL searches for file names, so the actual name of a file installed by a package is needed to find that package. For example, searching the PFL for "gnome" will find some packages that are known to install a file named "gnome", but not gnome-base/gnome itself.


USE flags

USE flags for app-portage/pfl Searchable online file/package database for Gentoo

network-cron Adds a cron job which does a weekly submit of the package database


Install app-portage/pfl with the following command:

root #emerge --ask app-portage/pfl


The package provides two cli commands. e-file and pfl


The online database can be queried from the command-line to search for files installed by ebuilds. Lets say glxgears is required, but it isn't installed. To search for the related package:

user $e-file glxgears

It is also possible to search from the PFL website. (for example: Search for glxgears :


If the network-cron USE flag is set, the command is executed weekly and sends incremental updates to the website.

An alternartive is to use the provided systemd timer. It is installed by default but inactive. The timer needs to be activated by hand: systemctl enable pfl.timer. Just make sure to use either of the crons.

To update the database by hand run:

user $pfl

See also

  • Equery — a tool to make several common Portage operations simpler.