Jak wymusić usunięcie pakietu w Arch za pomocą Pacmana?

64

Jak wymusić usunięcie pakietu w Arch, pacmanpodczas gdy inne pakiety nadal od niego zależą.

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

w zasadzie LWP 6 podzielił całą masę pakietów i muszę go usunąć, aby móc go ponownie zainstalować.

ksenoterracid
źródło
Nie ma odpowiednika flagi --reinstall apt-get?
Faheem Mitha
@faheem, biorąc pod uwagę, że arch nie wydał jeszcze libwww 6 ... nawet gdyby nie było, nie zadziałałoby w tym scenariuszu
ksenoterracid
@xenoterracide: Przepraszam, wcale nie śledziłem twojej odpowiedzi (zakładam, że libwww ma coś wspólnego z pakietem, który próbujesz zainstalować), ale proszę nie myśl, że musisz wyjaśniać w moim imieniu. :-)
Faheem Mitha
@faheem jest LWP . ale zwykle możemy po prostu ponownie zainstalować pakiet, prosząc o jego ponowną instalację ... ale to nie pomaga w tym przypadku, ponieważ nie ma go w repozytorium arch. Muszę go odinstalować i zaktualizować bez użycia arch repo, a ponieważ pakiet był podzielone, miałem konflikty plików.
ksenoterrakid
@faheem również pamiętaj, że Arch nie jest debianem i nie mam pojęcia, jak apt-get --reinstalldziała debian .
ksenoterrakid

Odpowiedzi:

97

Powinieneś być w stanie ponownie zainstalować pakiet za pomocą prostego:

# pacman -S perl-libwww

Spowoduje to jedynie usunięcie perl-libwww:

# pacman -Rdd perl-libwww

Zwróć uwagę na podwójne -d w poleceniu, jeśli użyjesz opcji --nodeps, musisz też to dwukrotnie określić lub połączyć z opcją -d jak:

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

Spowoduje to usunięcie wszystkich pakietów zależnych od perl-libwww:

# pacman -Rc perl-libwww

Ze strony man Pacmana:

   -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
źródło
2
+1 dzięki za -Rc także, więcej informacji w Arch Wiki
vladkras