Como forço a remoção de um pacote no Arch com pacman?

64

Como forço a remoção de um pacote no Arch pacmanenquanto outros pacotes ainda dependem dele.

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

basicamente, o LWP 6 divide um monte de pacotes e preciso removê-lo para poder reinstalá-lo.

xenoterracida
fonte
Não há equivalente ao sinalizador --reinstall do apt-get's?
Faheem Mitha 27/03
@faheem considerando que arch não divulgou libwww 6 ainda ... mesmo se houvesse que não iria funcionar direito neste cenário
xenoterracide
@xenoterracide: Desculpe, mas não segui sua resposta (suponho que a libwww tenha algo a ver com o pacote que você está tentando instalar), mas não sinta que precisa explicar em meu nome. :-)
Faheem Mitha 27/03
@faheem é LWP . mas normalmente podemos apenas reinstalar um pacote solicitando sua instalação novamente ... isso não ajuda nesse caso, porque não está no repositório do arch repo e preciso desinstalá-lo e atualizá-lo sem usar o repositório do arch, e desde que o pacote foi dividir, tive conflitos de arquivo.
Xenoterracide
@faheem também observe que o Arch não é debian e não tem idéia de como o debian apt-get --reinstallfunciona.
Xenoterracide

Respostas:

97

Você poderá reinstalar o pacote com um simples:

# pacman -S perl-libwww

Isso removerá apenas o perl-libwww:

# pacman -Rdd perl-libwww

Observe o double -d no comando, se você usar --nodeps, precisará especificar isso duas vezes também ou combiná-lo com um -d como:

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

Isso remove todos os pacotes que dependem do perl-libwww:

# pacman -Rc perl-libwww

Na página de manual do 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
fonte
2
+1 obrigado por -Rc também, mais informação em Arch Wiki
vladkras