Как принудительно удалить пакет в Arch с pacman?

64

Как принудительно удалить пакет в Arch, в pacmanто время как другие пакеты все еще зависят от него.

pacman -R perl-libwww                                                               
checking dependencies...
error: failed to prepare transaction (could not satisfy dependencies)
:: perl-app-cpanminus: requires perl-libwww>=5.828
:: perl-app-pmuninstall: requires perl-libwww
:: perl-app-sd: requires perl-libwww
:: perl-catalyst-action-rest: requires perl-libwww>=2.033 
:: perl-catalyst-runtime: requires perl-libwww>=1.64
:: perl-cpan: requires perl-libwww
:: perl-cpan-mini: requires perl-libwww
:: perl-cpan-uploader: requires perl-libwww
:: perl-feed-find: requires perl-libwww
:: perl-http-body: requires perl-libwww
:: perl-http-request-ascgi: requires perl-libwww
:: perl-module-cpants-analyse: requires perl-libwww
:: perl-module-install: requires perl-libwww>=5.812
:: perl-net-trac: requires perl-libwww
:: perl-net-whois-raw: requires perl-libwww
:: perl-prophet: requires perl-libwww
:: perl-rt-client-rest: requires perl-libwww
:: perl-uri-fetch: requires perl-libwww
:: perl-www-mechanize: requires perl-libwww
:: perl-xml-atom: requires perl-libwww
:: perl-xml-feed: requires perl-libwww

в основном LWP 6 разделяет целую кучу пакетов, и мне нужно удалить его, чтобы я мог переустановить его.

xenoterracide
источник
Нет эквивалента флага --reinstall от apt-get?
Фахим Митха
@faheem, учитывая, что arch еще не выпустила libwww 6 ... даже если бы это было так, это не сработало бы в этом сценарии
xenoterracide
@xenoterracide: Извините, я совсем не следил за вашим ответом (я полагаю, что libwww как-то связан с пакетом, который вы пытаетесь установить), но, пожалуйста, не думайте, что вам нужно объяснять от моего имени. :-)
Фахим Митха
@faheem это LWP . но обычно мы можем просто переустановить пакет, запросив его установку еще раз ... это не поможет в этом случае, потому что его нет в архивных репозиториях, и мне нужно удалить его и обновить его без использования архивных репозиториев, а так как пакет был раскол, у меня были конфликты файлов.
ксенотеррацид
@faheem также, пожалуйста, обратите внимание, что Arch не является Debian, и понятия не имею, как apt-get --reinstallработает Debian .
ксенотеррацид

Ответы:

97

Вы должны иметь возможность переустановить пакет с помощью простого:

# pacman -S perl-libwww

Это удалит только perl-libwww:

# pacman -Rdd perl-libwww

Обратите внимание на двойное -d в команде, если вы используете --nodeps, вы должны также указать это дважды или объединить его с -d как:

# pacman -R --nodeps --nodeps perl-libwww
# pacman -Rd --nodeps perl-libwww

Это удаляет все пакеты, которые зависят от perl-libwww:

# pacman -Rc perl-libwww

Со страницы руководства pacman:

   -d, --nodeps
       Skips dependency version checks. Package names are still
       checked. Normally, pacman will always check a package’s
       dependency fields to ensure that all dependencies are
       installed and there are no package conflicts in the
       system. Specify this option twice to skip all dependency
       checks.
   -c, --cascade
       Remove all target packages, as well as all packages that
       depend on one or more target packages. This operation is
       recursive, and must be used with care since it can remove
       many potentially needed packages.
Kambus
источник
2
+1 спасибо за -Rc также, больше информации в Arch Wiki
vladkras