¿Cómo fuerzo la eliminación de un paquete en Arch con pacman?

64

¿Cómo fuerzo la eliminación de un paquete en Arch pacmanmientras que otros paquetes aún dependen de él?

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

Básicamente, LWP 6 divide una gran cantidad de paquetes, y necesito eliminarlo para poder reinstalarlo.

xenoterracida
fuente
No hay equivalente de apt-get's --reinstall flag?
Faheem Mitha
@faheem teniendo en cuenta que Arch aún no ha lanzado libwww 6 ... incluso si lo hubiera, no funcionaría bien en este escenario
xenoterracide
@xenoterracide: Lo siento, no seguí su respuesta en absoluto (supongo que libwww es algo que tiene que ver con el paquete que está tratando de instalar), pero no sienta que necesita explicarlo en mi nombre. :-)
Faheem Mitha
@faheem es LWP . pero normalmente podemos reinstalar un paquete solicitando que se vuelva a instalar ... eso no ayuda en este caso porque no está en arch repo's y necesito desinstalarlo y actualizarlo sin usar arch repo's, y dado que el paquete fue dividido, tuve conflictos de archivos.
xenoterracide
@faheem también tenga en cuenta que Arch no es debian, y no tengo idea de cómo funciona debian apt-get --reinstall.
xenoterracide

Respuestas:

97

Debería poder reinstalar el paquete con un simple:

# pacman -S perl-libwww

Esto solo eliminará perl-libwww:

# pacman -Rdd perl-libwww

Tenga en cuenta la doble -d en el comando, si usa --nodeps también debe especificar eso dos veces o combinarlo con una -d como:

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

Esto elimina todos los paquetes que dependen de perl-libwww:

# pacman -Rc perl-libwww

De la página del manual de 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
fuente
2
+1 gracias por -Rc también, más información en Arch Wiki
vladkras