O comando apt-file
O apt-file é uma ferramenta de linha de comando para procurar arquivos em pacotes para o sistema de gerenciamento de pacotes APT. Esta ferramenta é muito útil em diversos casos, como por exemplo lembrar o nome de um comando mas não de um pacote. Veremos a seguir alguns exemplos de utilização do comando apt-file.
Antes de utilizar o apt-file, é necessário que seua lista de arquivos seja sincronizada com a lista dos repositórios Debian este procedimento deve ser realizado com o comando apt-file update, como demonstrado a seguir:
leandro@matrix:~$ apt-file update apt-file is now using the user's cache directory. If you want to switch back to the system-wide cache directory, run 'apt-file purge' Downloading complete file http://http.debian.net/debian/dists/jessie/main/Contents-amd64.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 23.2M 100 23.2M 0 0 1619k 0 0:00:14 0:00:14 --:--:-- 2344k Downloading complete file http://http.debian.net/debian/dists/jessie/contrib/Contents-amd64.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 81710 100 81710 0 0 59503 0 0:00:01 0:00:01 --:--:-- 59503 Downloading complete file http://http.debian.net/debian/dists/jessie/non-free/Contents-amd64.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 694k 100 694k 0 0 413k 0 0:00:01 0:00:01 --:--:-- 1813k Ignoring source without Contents File: http://security.debian.org/dists/jessie/updates/main/Contents-amd64.gz Downloading complete file http://ftp.br.debian.org/debian-multimedia/dists/jessie/main/Contents-amd64.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 197k 100 197k 0 0 422k 0 --:--:-- --:--:-- --:--:-- 422k
Para listar todos os arquivos que contém um pacote, podemos utilizar o seguinte exemplo:
leandro@matrix:~$ apt-file list sysstat sysstat: /etc/cron.d/sysstat sysstat: /etc/cron.daily/sysstat sysstat: /etc/init.d/sysstat sysstat: /etc/sysstat/sysstat sysstat: /etc/sysstat/sysstat.ioconf sysstat: /usr/bin/cifsiostat sysstat: /usr/bin/iostat sysstat: /usr/bin/mpstat sysstat: /usr/bin/nfsiostat sysstat: /usr/bin/pidstat sysstat: /usr/bin/sadf sysstat: /usr/bin/sar.sysstat sysstat: /usr/lib/sysstat/debian-sa1 sysstat: /usr/lib/sysstat/sa1 sysstat: /usr/lib/sysstat/sa2
O parâmetro list funciona de forma semelhante ao comando dpkg -l. Com o parâmetro search, pesquisamos as ocorrências com o nome de terminado arquivo dentro dos pacotes disponíveis no repositório. Por exemplo, para verificar em qual pacote está o arquivo resolv.conf podemos utilizar a seguinte linha de comandos:
leandro@matrix:~$ apt-file search resolv.conf cloud-init: /etc/cloud/templates/resolv.conf.tmpl debian-lan-config: /usr/share/debian-lan-config/fai/config/files/etc/resolv.conf/DISKLESS_CLIENT dhcpcd5: /lib/dhcpcd/dhcpcd-hooks/20-resolv.conf gscanbus: /etc/guid-resolv.conf gscanbus: /etc/oui-resolv.conf manpages: /usr/share/man/man5/resolv.conf.5.gz manpages-de: /usr/share/man/de/man5/resolv.conf.5.gz manpages-es: /usr/share/man/es/man5/resolv.conf.5.gz manpages-fr: /usr/share/man/fr/man5/resolv.conf.5.gz manpages-ja: /usr/share/man/ja/man5/resolv.conf.5.gz manpages-pl: /usr/share/man/pl/man5/resolv.conf.5.gz manpages-pt: /usr/share/man/pt/man5/resolv.conf.5.gz namebench: /usr/share/namebench/templates/resolv.conf.tmpl resolvconf: /etc/resolvconf/resolv.conf.d/base resolvconf: /etc/resolvconf/resolv.conf.d/head rinse: /usr/lib/rinse/common/10-resolv.conf.sh switchconf: /usr/share/doc/switchconf/examples/home/etc/resolv.conf switchconf: /usr/share/doc/switchconf/examples/work/etc/resolv.conf
Desta forma recebemos todas as ocorrências de pacotes que possuem resolv.conf em seu nome. Porém geralmente procuramos por aruivos binários, desta forma podemos redirecionar a saída para um pipe:
leandro@matrix:~$ apt-file search lsblk |grep bin util-linux: /bin/lsblk
Desta forma a saída torna-se mais limpa e o entendimento mais simples. A seguir são exibidas mais algumas opções úteis do comando apt-file:
-a, –architecture architecture
Define para arquitetura. Esta opção é útil para procurar pacotes de uma arquitetura diferente do que a instalada no sistema.
-c, –cache cache-directory
Define o diretório de cache ao invés dopadrão. Se executado como um usuário diferente do root, localiza-se em $HOME/.cache/apt-file with fall-back ao invés de /var/cache/apt/apt-file. Este último quando executado como root.
-d, –cdrom-mount cdrom-mount-point
Utiliza cdrom’s ao invés de repositórios.
-l, –package-only
Exibe somente nomes de pacotes ao invés de nomes de arquivos.
-s, –sources-list sources.list
Define um arquivo sources.list diferente do padrão /etc/apt/sources.list, útil para procurar pacotes em outros releases.
-v, –verbose
Executa o apt-file no modo verbose.
-x, –regexp
Utiliza explressões regulares em Perl. Veja perlreref(1) para mais detalhes. Sem esta opção, o padrão é tratado como uma string literal para procurar.
O comando apt-file é muito útil na administração de sistemas Debian, ele pode efetuar desde pequenas buscas até buscas mais detalhadas em repositórios remotos.