Não há uma maneira de fazer isso usando yum
, mas você pode criar um comando rpm
que fará basicamente o que você deseja. Você terá que utilizar a opção --queryformat
e percorrer a matriz de nomes de arquivos usando a opção pouco conhecida [..]
no --queryformat
.
NOTA: Todos esses recursos são discutidos no manual de RPM, RPM Máxima: Tomando o Vermelho Gestor de Pacotes do Hat ao Limite .
$ rpm -qa --queryformat '[%{NAME}: %{FILENAMES}\n]' | \
sed 's#\(/.*/\).*$##' | sort -u | grep '/usr/sbin' | head -10
abrt-addon-ccpp: /usr/sbin/
abrt-addon-pstoreoops: /usr/sbin/
abrt-addon-vmcore: /usr/sbin/
abrt-dbus: /usr/sbin/
abrt: /usr/sbin/
alsa-utils: /usr/sbin/
aoetools: /usr/sbin/
at: /usr/sbin/
authconfig: /usr/sbin/
avahi-autoipd: /usr/sbin/
...
Detalhes
O --queryformat
acima itera sobre a macro da matriz %{FILENAMES}
por meio da notação [...]
, imprimindo o nome ( %{NAME}
) do pacote em que estão contidos, junto com o caminho completo instalado.
$ rpm -q --queryformat '[%{NAME}: %{FILENAMES}\n]' fatrace
fatrace: /usr/sbin/fatrace
fatrace: /usr/sbin/power-usage-report
fatrace: /usr/share/doc/fatrace-0.5
fatrace: /usr/share/doc/fatrace-0.5/COPYING
fatrace: /usr/share/doc/fatrace-0.5/NEWS
fatrace: /usr/share/man/man1/fatrace.1.gz
Com este tipo de saída, simplesmente precisamos cortar os nomes de arquivos à direita dos caminhos acima. Para isso usei sed
. Em seguida, executo a saída por meio de sort -u
para condensar quaisquer linhas duplicadas, pois, muitas vezes, muitos pacotes instalam uma grande quantidade de arquivos em um único diretório. Finalmente eu uso grep ...
para encontrar os pacotes que possuem arquivos em um determinado diretório. Para facilitar isso, você pode fazer isso:
grep $(pwd)
Exemplo
$ pwd
/usr/sbin
$ rpm -qa --queryformat '[%{NAME}: %{FILENAMES}\n]' | \
sed 's#\(/.*/\).*$##' | sort -u | grep $(pwd)
Uma lista de apenas nomes de pacotes
Para obter apenas os nomes dos pacotes em uma lista única, você pode fazer o seguinte:
$ rpm -qa --queryformat '[%{NAME}: %{FILENAMES}\n]' | \
sed 's#\(/.*/\).*$##' | sort -u | grep $(pwd) | \
awk -F: '{print $1}' | head -10
abrt-addon-ccpp
abrt-addon-pstoreoops
abrt-addon-vmcore
abrt-dbus
abrt
alsa-utils
aoetools
at
authconfig
avahi-autoipd