yum remove * wildcard * кроме некоторых пакетов, которые также соответствовали шаблону?

Я пытаюсь удалить кучу пакетов, в которых есть 'abc'. Однако я не хочу удалять abc-def. Как я могу это сделать?

Например, как удалить все пакеты, в которых есть 'php', кроме «php-common»?

Я попытался добавить в команду - exclude , но это не сработало должным образом - «php-common» все еще был в списке для удаления.

# 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 * и - exclude = php-common.x86_64 0: 5.4.16-36.el7_1 тоже не работает.

Я спрашиваю об этом, потому что у меня есть огромный пакет (~ 1,5 ГБ), который мне все еще нужен, и я не хочу повторно загружать его, потому что у меня медленный интернет.

ОС: CentOS 7.

1
задан 19 November 2015 в 07:02
3 ответа

Просто добавьте к имени пакета, который вы хотите сохранить, префикс - . Вам необходимо добавить - перед списком пакетов, чтобы гарантировать, что имя пакета не рассматривается как опция:

yum remove *php* -- -php-common 

На странице руководства (под опцией установки):

Если имя начинается с символа -, затем поиск выполняется в пределах транзакция и все совпадения удаляются.

6
ответ дан 3 December 2019 в 16:14

- exclude исключает пакет из репозиториев, поскольку он не доступен для установки, но не действует на установленные пакеты.

Один из способов действительно защитить ваш пакет от деинсталляции - это поместить его имя в protected_packages в /etc/yum.conf , но тогда yum не будет обработать подстановочный знак, который также соответствует этому пакету.

Одно решение:

В вашем конкретном примере php-common это не будет работать, поскольку преобразователь зависимостей будет мешать, но если зависимости не являются Проблема, вы можете попробовать следующее:

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

Подкоманда сгенерирует список установленных пакетов, сократит его до первого столбца, сократит его до пакетов, содержащих php в имени, а затем удалит php -общий из списка.

4
ответ дан 3 December 2019 в 16:14

╮(╯_╰)╭
Вчера я написал питон, чтобы решить эту проблему.
Надеюсь, это будет полезно и для вас, и для тех, кто был обеспокоен этой проблемой. : - )

Я записал процесс разработки на своем блоге
http://blog.j3l11234.com/2016/11/23/yum-remove-with-exclude/

вот это использование:

# ./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]: 

скачать ссылку

1
ответ дан 3 December 2019 в 16:14

Теги

Похожие вопросы