Я пытаюсь удалить кучу пакетов, в которых есть '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.
Просто добавьте к имени пакета, который вы хотите сохранить, префикс -
. Вам необходимо добавить -
перед списком пакетов, чтобы гарантировать, что имя пакета не рассматривается как опция:
yum remove *php* -- -php-common
На странице руководства (под опцией установки):
Если имя начинается с символа -, затем поиск выполняется в пределах транзакция и все совпадения удаляются.
- 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 -общий
из списка.
╮(╯_╰)╭
Вчера я написал питон, чтобы решить эту проблему.
Надеюсь, это будет полезно и для вас, и для тех, кто был обеспокоен этой проблемой.
: - )
Я записал процесс разработки на своем блоге
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]: