Posso usar combinações grep para executar o comando?

3

Eu preciso atualizar o php de 5.3 para 5.4. Eu instalei com rpm. Eu quero instalação limpa: exclua todos os pacotes 5.3 e instale todos os necessários 5.4. Aqui está o comando para ver todos os pacotes instalados:

rpm -qa |grep php

Ele imprime uma lista de pacotes e eu quero removê-los com:

rpm -e *pakage.name*

Posso iterar todas as correspondências nos resultados do grep e usar cada correspondência em:

rpm -e *grep.match*
    
por Anatoliy Gusarov 14.04.2014 / 21:21

4 respostas

5

Tente isto:

rpm -qa | grep php | xargs rpm -e
    
por 14.04.2014 / 21:30
5

Você geralmente não deseja remover pacotes como este em partes, pois geralmente há dependências que você está pulando. É melhor fazer essa remoção de uma só vez assim:

$ rpm -e $(rpm -aq | grep php)

Melhor ainda, sugiro que você use yum para fazer isso vs. RPM.

$ yum remove $(rpm -aq | grep php)
Ainda melhor do que isso seria descobrir um padrão que corresponda a todos os pacotes do PHP e dizer ao YUM para remover com base no padrão. Sim, o YUM está ciente das expressões regulares.

$ yum remove 'php*'

Você precisará garantir que toda a sua lista de pacotes caiba na linha de comando, mas fazer isso usando xargs ou individualmente é feito com problemas, se você disser rpm para remover 1/2 do PHP pacotes relacionados em um comando, seguido por outro comando rpm com o restante.

    
por 14.04.2014 / 21:52
1

Experimente este script:

for p in $(rpm -qa |grep php) ; do rpm -e ${p} ; done
    
por 14.04.2014 / 21:31
1
( IFS='
' ; printf 'rpm -e "%s"\n' $(rpm -qa |grep php) |
    . /dev/stdin )

Lá vai você.

    
por 14.04.2014 / 21:38

Tags