Formatar saída “yum provides”

1

Estou escrevendo um pequeno programa que empacota arquivos de configuração como rpm e coloca uma série de% triggers para lidar com a instalação / atualização dos pacotes que trazem uma cópia / versão do mesmo arquivo.

Eu estou preso tentando formatar o yum fornece saída. A saída padrão é:

# yum provides */named.conf -q
32:bind-chroot-9.8.2-0.17.rc1.el6_4.6.i686 : A chroot runtime environment for the ISC BIND DNS server, named(8)
Repo        : base
Matched from:
Filename    : /var/named/chroot/etc/named.conf


sblim-cmpi-dns-test-1.0-1.el6.i686 : SBLIM WBEM-SMT Dns - Testcase Files
Repo        : base
Matched from:
Filename    : /usr/share/sblim-testsuite/named.conf

Mas eu preciso apenas do nome do pacote. Usar cut não parece ser uma boa ideia. O delimitador seria - mas existem vários pacotes com um - no meio do nome do pacote.

Idealmente, eu precisaria que a saída fosse formatável, como para as consultas do rpm:

rpm -qa --queryformat "%{NAME}\n"
make
rubygem-multi_json
attr
ncurses-base
rubygem-rack-test
strace
rubygem-polyglot
gpg-pubkey
rubygem-journey
tzdata
...
    
por Bruno9779 07.03.2014 / 17:45

2 respostas

0

Você será mais feliz se você dispensar yum em favor do comando repoquery do pacote yum-utils . Com isso, você acabou de executar:

$ repoquery --whatprovides '*/named.conf' --qf '%{NAME}'

Qual, no meu sistema, retorna:

bind
sblim-cmpi-dns-test
bind
bind-chroot
rubygem-openshift-origin-dns-bind
system-config-bind
logwatch
bind-chroot
    
por 07.03.2014 / 22:28
0

Eu criei uma solução feia para esse problema usando vários comandos yum, sed, grep e cut:

PKLIST='yum provides -q */$FILE | grep -v 'Repo\|Matched\|Filename' | sed "s/32://g" | cut -d':' -f1 | sed "s/ //g" | grep -e '^$' -v'
array=($PKLIST)
arr2=()
for i in "${array[@]}"
do
        x='yum info -C $i | grep "Name        :" | sed "s/Name        : //g"'
        arr2+=($x)
done

Em seguida, removi as duplicatas da matriz

arr3=$(echo "${arr2[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' ')

Com meu conhecimento atual, é o melhor que pude fazer.

    
por 07.03.2014 / 20:45