yum remove * curinga * exceto alguns pacotes que também correspondem ao caractere curinga?

1

Estou tentando remover vários pacotes que têm 'abc'. No entanto, não quero remover o 'abc-def'. Como posso conseguir isso?

Por exemplo, como remover todos os pacotes que têm 'php', exceto 'php-common'?

Eu tentei adicionar --exclude ao comando, mas ele não funciona como esperado - 'php-common' ainda estava na lista de exclusão.

# yum --exclude=php-common remove *php*
Loaded plugins: fastestmirror
Resolving Dependencies
--> Running transaction check
---> Package php-cli.x86_64 0:5.4.16-36.el7_1 will be erased
---> Package php-common.x86_64 0:5.4.16-36.el7_1 will be erased
---> Package php-fpm.x86_64 0:5.4.16-36.el7_1 will be erased
---> Package php-mcrypt.x86_64 0:5.4.16-3.el7 will be erased
---> Package php-mysqlnd.x86_64 0:5.4.16-36.el7_1 will be erased
---> Package php-pdo.x86_64 0:5.4.16-36.el7_1 will be erased
--> Finished Dependency Resolution

yum remove *php* !php-common , --exclude=php-common* e --exclude=php-common.x86_64 0:5.4.16-36.el7_1 também não funcionam.

Estou perguntando isso porque tenho um pacote enorme (~ 1,5 GB) que ainda preciso e não quero baixar novamente porque minha internet está lenta.

SO: CentOS 7.

    
por weeix 19.11.2015 / 05:48

3 respostas

5

Basta prefixar o nome do pacote que você deseja manter com - . Você precisa adicionar -- antes da lista de pacotes para garantir que o nome do pacote não seja tratado como uma opção:

yum remove *php* -- -php-common 

A partir da página man (sob a opção de instalação):

If the name starts with a - character, then a search is done within the transaction and any matches are removed.

    
por 19.11.2015 / 10:12
4

--exclude excluirá um pacote dos repositórios, já que ele não estava disponível para instalação, mas não funciona nos pacotes instalados.

Uma forma de realmente proteger seu pacote da desinstalação é colocar seu nome em protected_packages em /etc/yum.conf , mas yum não processaria um curinga que também corresponda a esse pacote.

Uma solução:

Com o seu exemplo específico php-common , isso não funcionará realmente porque o resolvedor de dependências irá interferir, mas se as dependências não forem um problema, você pode tentar o seguinte:

yum erase 'yum list installed | cut -d " " -f 1  | grep php | grep -v php-common '

O subcomando irá gerar uma lista de pacotes instalados, cortá-lo para a primeira coluna, reduzi-lo a pacotes contendo php no nome e, em seguida, elimina php-common da lista.

    
por 19.11.2015 / 07:33
1

╮ (╯_╰) ╭
Eu escrevi um python para resolver esse problema ontem.
Espero que seja útil para você e que tenha se preocupado com esse problema. : -)

Anotei o processo de desenvolvimento no meu blog link

aqui está o uso:

# ./remove.py -e *php* -x php-common
analyzing exclude packages and their dependencies ...

analyzing packages which will be removed...

Loaded plugins: fastestmirror, langpacks
Resolving Dependencies
--> Running transaction check
---> Package php-cli.x86_64 0:7.0.12-2.el7.remi will be erased
---> Package php-fpm.x86_64 0:7.0.12-2.el7.remi will be erased
---> Package php-gd.x86_64 0:7.0.12-2.el7.remi will be erased
---> Package php-mbstring.x86_64 0:7.0.12-2.el7.remi will be erased
---> Package php-mysqlnd.x86_64 0:7.0.12-2.el7.remi will be erased
---> Package php-opcache.x86_64 0:7.0.12-2.el7.remi will be erased
---> Package php-pdo.x86_64 0:7.0.12-2.el7.remi will be erased
---> Package php-xml.x86_64 0:7.0.12-2.el7.remi will be erased
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================
 Package            Arch         Version                  Repository                                     Size
==============================================================================================================
Removing:
 php-cli            x86_64       7.0.12-2.el7.remi        @/php-cli-7.0.12-2.el7.remi.x86_64             12 M
 php-fpm            x86_64       7.0.12-2.el7.remi        @/php-fpm-7.0.12-2.el7.remi.x86_64            4.1 M
 php-gd             x86_64       7.0.12-2.el7.remi        @/php-gd-7.0.12-2.el7.remi.x86_64             203 k
 php-mbstring       x86_64       7.0.12-2.el7.remi        @/php-mbstring-7.0.12-2.el7.remi.x86_64       2.8 M
 php-mysqlnd        x86_64       7.0.12-2.el7.remi        @/php-mysqlnd-7.0.12-2.el7.remi.x86_64        868 k
 php-opcache        x86_64       7.0.12-2.el7.remi        @/php-opcache-7.0.12-2.el7.remi.x86_64        396 k
 php-pdo            x86_64       7.0.12-2.el7.remi        @/php-pdo-7.0.12-2.el7.remi.x86_64            381 k
 php-xml            x86_64       7.0.12-2.el7.remi        @/php-xml-7.0.12-2.el7.remi.x86_64            854 k

Transaction Summary
==============================================================================================================
Remove  8 Packages

Installed size: 22 M
Is this ok [y/N]: 

link de download

    
por 24.11.2016 / 04:04

Tags