Skocz do zawartości

Usuwanie Pozostałości Po Pakiecie W Dodaj/usuń.


Jusko

Rekomendowane odpowiedzi

Witam.

 

Lubię mieć porządek w systemie, a GNU/Linux jest taki, że jak ktoś nie uważa, to w mig naśmieci sobie w systemie bibliotekami, o których zapomni a są niepotrzebne i zajmują miejsce. Sprawa wygląda tak. Zainstalowałem poprzez Dodaj/Usuń pakiet XYZ, który wymagał np. 10 zależności. Pakiet XYZ przestał być potrzebny, więc poprzez Dodaj/Usuń go wywaliłem. Zależności po pakiecie jednak pozostały. I jak się teraz tego pozbyć? Dobrze, że dziennik pakietów jest pod ręką, to przynajmniej zajrzałem tam i ręcznie zależności potem wywaliłem po nazwach z dziennika. To jednak nie jest rozwiązanie, bo w mig naśmiecę sobie zależnościami w systemie. Jak skutecznie z tym walczyć? W Aptitude czy Apt-get problem nie występował, bo te managery sprawnie radziły sobie z zależnościami. Jak jest w przypadku Dodaj/Usuń, czyli bardziej patrząc pod maskę - Yum?

Odnośnik do komentarza
Udostępnij na innych stronach

W F12 (może też i wcześniejszych wersjach) dostępne jest narzędzie yum history, np:

yum history info xorg-x11-server-Xorg

[...]Identyfikator transakcji : 62 [...]

Zmienione pakiety:

Updated xorg-x11-server-Xorg-1.7.1-7.fc12.i686

Update 1.7.1-7.fc12.2.rex.i686[...]

Ważny jest identyfikator transakcji. Teraz wystarczy w tym przypadku
yum history undo 62

Oczywiście narzędzie jest przydatne w przypadku jeśli instalowałeś program za pomocą yum install X, ale zawsze wyświetlona będzie lista wszystkich pakietów instalowanych w określonej transakcji yuma.

Odnośnik do komentarza
Udostępnij na innych stronach

Cóż - dziękuję za odpowiedzi. Nie zlinczujcie mnie teraz, ale po przesiadce z Aptitude jako managera widzę, że był on znacznie inteligentniejszy od Yuma...I że powtarzany niby minus, że Yum nie jest bardzo ciasno zintegrowany z systemem, jest prawdą :unsure:

 

Ale idźmy dalej. Co, jeśli chcę odinstalować coś preinstalowanego - Gimpa czy Evolution? Wtedy pozostają zależności a nie znam ich <_< Tak samo przykładowo PulseAudio - yum remove pulseaudio usunie tylko plugin odpowiedzialny za komunikację z systemem, a reszta zależności siedzi w nim dalej :angry:

 

Może zapytam tak: ja Wy sobie z tym radzicie? Widzę już, że z Dodaj/Usuń nie ma co korzystać, bo nie dba o zależności.

 

 

p.s: muszę poszukać, czy nie ma gdzieś programiku GtkOrphan - dobry był do tego typu spraw, choć o to powinien dbać manager pakietów...

Odnośnik do komentarza
Udostępnij na innych stronach

Może zapytam tak: ja Wy sobie z tym radzicie?
Osobiście mnie to nie boli, ale jeśli usuwasz jakis pakiet, to możesz wcześniej uruchomić zapytanie
rpm -qa --requires <nazwa_usuwanego_pakietu>

Powinien pokazać wszystkie zależności pakietu. Oczywiście od jednego pakietu może zależeć wiele innych nie tylko ten, który usuwasz.

 

Chodzi mi o to, że instalujesz pakiet A, który wymaga zainstalowania pakietu B. Yum od razu to zauważy i dociągnie pakiet B.

Potem instalujesz pakiet C, który też zależy od B, ale to już nie jest tak jawne, bo yum widzi że pakiet B jest już w systemie.

No i teraz odinstalowujesz pakiet A. Sprawdzasz sobie "rpm -qa --requires A", otrzymujesz B.

Próbujesz wywalić też pakiet B... I tu niespodzianka, bo yum w ramach zależności chce usunąć C :)

To chyba jakoś mętnie brzmi... <_<

 

Yum się wciąż rozwija, ale ostatnio deweloperzy skupili się chyba na szybkości działania a nie na funkcjonalności. Szybkość działania jest już IMHO niezła, więc może za jakiś czas yum będzie umiał określić zależności i jednocześnie rozpoznać, które z nich można usunąć, bo nie są już wymagane przez żaden inny pakiet.

Na razie jest jak jest, ale i tak chwała deweloperom za uwolnienie nas od piekła zależności (przynajmniej przy instalacji ;)).

 

Odnośnik do komentarza
Udostępnij na innych stronach

Masakra z tymi zależnościami. Przykład to sam Pidgin:

 

[root@Jusko ~]# rpm -qa --requires pidgin
/bin/sh  
/bin/sh  
/bin/sh  
/bin/sh  
GConf2  
GConf2  
GConf2  
glib2 >= 2.22
libICE.so.6()(64bit)  
libORBit-2.so.0()(64bit)  
libSM.so.6()(64bit)  
libX11.so.6()(64bit)  
libXext.so.6()(64bit)  
libXss.so.1()(64bit)  
libatk-1.0.so.0()(64bit)  
libbonobo-2.so.0()(64bit)  
libbonobo-activation.so.4()(64bit)  
libc.so.6()(64bit)  
libc.so.6(GLIBC_2.2.5)(64bit)  
libc.so.6(GLIBC_2.3)(64bit)  
libc.so.6(GLIBC_2.3.4)(64bit)  
libc.so.6(GLIBC_2.4)(64bit)  
libc.so.6(GLIBC_2.7)(64bit)  
libcairo.so.2()(64bit)  
libdbus-1.so.3()(64bit)  
libdbus-glib-1.so.2()(64bit)  
libebackend-1.2.so.0()(64bit)  
libebook-1.2.so.9()(64bit)  
libedata-book-1.2.so.2()(64bit)  
libedataserver-1.2.so.11()(64bit)  
libfontconfig.so.1()(64bit)  
libfreetype.so.6()(64bit)  
libgconf-2.so.4()(64bit)  
libgdk-x11-2.0.so.0()(64bit)  
libgdk_pixbuf-2.0.so.0()(64bit)  
libgio-2.0.so.0()(64bit)  
libglib-2.0.so.0()(64bit)  
libgmodule-2.0.so.0()(64bit)  
libgobject-2.0.so.0()(64bit)  
libgstbase-0.10.so.0()(64bit)  
libgstfarsight-0.10.so.0()(64bit)  
libgstinterfaces-0.10.so.0()(64bit)  
libgstreamer-0.10.so.0()(64bit)  
libgthread-2.0.so.0()(64bit)  
libgtk-x11-2.0.so.0()(64bit)  
libgtkspell.so.0()(64bit)  
libidn.so.11()(64bit)  
libm.so.6()(64bit)  
libm.so.6(GLIBC_2.2.5)(64bit)  
libnsl.so.1()(64bit)  
libpango-1.0.so.0()(64bit)  
libpangocairo-1.0.so.0()(64bit)  
libpangoft2-1.0.so.0()(64bit)  
libpthread.so.0()(64bit)  
libpthread.so.0(GLIBC_2.2.5)(64bit)  
libpurple = 2.6.3-2.fc12
libpurple.so.0()(64bit)  
libresolv.so.2()(64bit)  
librt.so.1()(64bit)  
libsoup-2.4.so.1()(64bit)  
libstartup-notification-1.so.0()(64bit)  
libxml2.so.2()(64bit)  
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(VersionedDependencies) <= 3.0.3-1
rtld(GNU_HASH)  
xdg-utils  
rpmlib(PayloadIsXz) <= 5.2-1

 

 

Coś tu chyba nie gra jak ma :blink: Czyli jednym słowem - Yum nie troszczy się o wywalanie zależności, tak? Rozwiązaniem jest chyba tylko sposób podany przez sokar620, choć muszę obadać package-cleanup. Przyznam, że zawiodłem się w takim razie troszkę na Yum. Nie dziwię się teraz, że była idea portu apta dla Red Hat system based.

Odnośnik do komentarza
Udostępnij na innych stronach

Rozwiązaniem jest chyba tylko sposób podany przez sokar620,
Raczej nie. Podałem wyżej przykład. Jeśli instalacja pakietu A i zależnego B to transakcja #1, a instalacja pakietu C (już bez pakietu B, bo jest w systemie) to transakcja #2, to odinstalowanie pakietów z transakcji #1 powoduje również usunięcie pakietu z transakcji #2 (który być może chcesz zachować i wtedy należy pozostawić pakiet B).
Odnośnik do komentarza
Udostępnij na innych stronach

Więc przyznam szczerze...już nie wiem, jak mam troszczyć się o te zależności w systemie... :unsure: Nie chcę mieć zależności po usuniętym programie. Co za korzyść, gdy program musi dociągnąć np. 70MB zależności, a usunięcie programu usunie samą aplikację, która waży 2MB. Reszta, czyli te 70MB jest na dysku i zajmuje mi niepotrzebnie miejsce. rpm -qa --requires na podstawie Pidgina przegięło chyba - gdzie tu /bin/bash czy rpmlib :unsure: Rozumiem, że cofanie transakcji to metoda dość bezpośrednia, ale patrząc na rpm --qa --requires pidgina to ja już nie wiem, co jest wymagane przez system, a co zwykłym depends Pidgina do wywalenia. A te przypadki pewnie się pomnoży :lammer: Dla mnie po odstawce Apta to prawdziwe piekło zależności :D Wybaczcie tę "lamerskość", ale lata z Aptitude zrobiły swoje, a tam kompletnie nie musiałem w ogóle myśleć o takich przeszkodach jak tutaj. Dlatego nie mam kompletnie doświadczenia w tej materii z Fedorą i czuję się zupełnie zielony.

Odnośnik do komentarza
Udostępnij na innych stronach

Właściwie to yum usuwa z zależnościami, ale tylko tymi, które nie są wymagane przez inne programy. I tu jest dziwne zjawisko, bo to, że przed instalacją jakiś pakiet był niepotrzebny nie oznacza, że nie wpadnie w jakąś zależność po instalacji :) (tak wynika z moich obserwacji). Taki jest właśnie rpm. Właściwie to ja nie widzę problemu, bo prędzej czy później te biblioteki i tak zostałyby doinstalowane, a pamięć na dyskach twardych jest teraz tania, więc kilka MB nie robi różnicy. Ewentualnie jak ktoś chce zwolnić sobie trochę pamięci to może wylistować pakiety zainstalowane i pousuwać niepotrzebne.

Odnośnik do komentarza
Udostępnij na innych stronach

Przeglądałem w dodaj/usuń listę pluginów do Yuma. Znalazłem takie coś jak yum-plugin-remove-with-leaves, a jego opis był taki:

 

This plugin removes any unused dependencies that were brought in by an install but would not normally be removed. It helps to keep a system clean of unused libraries and packages.

 

Instaluję, wchodzę do helpa Yuma i co widzę?

 

Opcje wtyczki:

--leaves-exclude-bin

do not remove leaf packages which contain executable

binaries

--remove-leaves remove dependencies no longer needed by any other

packages

 

No to daję np. yum remove wine --remove-leaves i tu wyskakuje Wine i Xyz pakietów z zależnościami do deinstalacji :D Z tym, że faktycznie troszkę mniej ich niż przed instalacją :-D I to też różnie, bo np. Pidgin z tym parametrem to niby nie ma zależności do usunięcia (a co z Libpurple przykładowo?). Empathy podobnie. Ale taki Wine etc - mają. Więc widocznie coś tam usuwać musi.

 

A zależy mi tak na tym, bo jeśli nie będzie się o to dbać, to powoli, ale systematycznie będzie coraz mniej miejsca, coraz więcej nieużywanych bibliotek w systemie, o większości się nie wie, później przyjdzie upgrade do nowego wydania a śmieci nadal zostaną, a znów potem kolejne biblioteki będą niepotrzebnie zostawać itd. Takie błędne koło.

Odnośnik do komentarza
Udostępnij na innych stronach

Pidgin z tym parametrem to niby nie ma zależności do usunięcia (a co z Libpurple przykładowo?).
Ty tak zawsze pytasz o wszystko? Może zacznij czytać ze zrozumieniem i trochę sam główkować. Nie będę cytował mojego poprzedniego posta tylko wkleję kod z konsoli może trochę się wyjaśni:

[root@localhost ~]# yum remove pidgin --remove-leaves
Loaded plugins: refresh-packagekit, remove-with-leaves
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package pidgin.i686 0:2.6.3-2.fc12 set to be erased
--> Finished Dependency Resolution
removing gtkspell-2.0.15-2.fc12.i686. It is not required by anything else.
--> Running transaction check
---> Package gtkspell.i686 0:2.0.15-2.fc12 set to be erased
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package          Arch         Version                  Repository         Size
================================================================================
Removing:
gtkspell         i686         2.0.15-2.fc12            installed          69 k
pidgin [root@localhost ~]# yum remove pidgin --remove-leaves
Loaded plugins: refresh-packagekit, remove-with-leaves
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package pidgin.i686 0:2.6.3-2.fc12 set to be erased
--> Finished Dependency Resolution
removing gtkspell-2.0.15-2.fc12.i686. It is not required by anything else.
--> Running transaction check
---> Package gtkspell.i686 0:2.0.15-2.fc12 set to be erased
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package          Arch         Version                  Repository         Size
================================================================================
Removing:
gtkspell         i686         2.0.15-2.fc12            installed          69 k
pidgin           i686         2.6.3-2.fc12             installed         2.8 M

Transaction Summary
================================================================================
Remove        2 Package(s)
Reinstall     0 Package(s)
Downgrade     0 Package(s)

Is this ok [y/N]: n
Exiting on user Command
Complete!
         i686         2.6.3-2.fc12             installed         2.8 M

Transaction Summary
================================================================================
Remove        2 Package(s)
Reinstall     0 Package(s)
Downgrade     0 Package(s)

Is this ok [y/N]: n
Exiting on user Command
Complete!

[root@localhost ~]# yum remove libpurple
Loaded plugins: refresh-packagekit, remove-with-leaves
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package libpurple.i686 0:2.6.3-2.fc12 set to be erased
--> Processing Dependency: libpurple.so.0 for package: nautilus-sendto-2.28.0-1.fc12.i686
--> Processing Dependency: libpurple.so.0 for package: pidgin-2.6.3-2.fc12.i686
--> Processing Dependency: libpurple = 2.6.3-2.fc12 for package: pidgin-2.6.3-2.fc12.i686
--> Running transaction check
---> Package nautilus-sendto.i686 0:2.28.0-1.fc12 set to be erased
---> Package pidgin.i686 0:2.6.3-2.fc12 set to be erased
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package                Arch        Version              Repository        Size
================================================================================
Removing:
libpurple              i686        2.6.3-2.fc12         installed         22 M
Removing for dependencies:
nautilus-sendto        i686        2.28.0-1.fc12        installed        571 k
pidgin                 i686        2.6.3-2.fc12         installed        2.8 M

Transaction Summary
================================================================================
Remove        3 Package(s)
Reinstall     0 Package(s)
Downgrade     0 Package(s)

Is this ok [y/N]: n
Exiting on user Command
Complete!

[root@localhost ~]# yum remove nautilus-sendto
Loaded plugins: refresh-packagekit, remove-with-leaves
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package nautilus-sendto.i686 0:2.28.0-1.fc12 set to be erased
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package                Arch        Version              Repository        Size
================================================================================
Removing:
nautilus-sendto        i686        2.28.0-1.fc12        installed        571 k

Transaction Summary
================================================================================
Remove        1 Package(s)
Reinstall     0 Package(s)
Downgrade     0 Package(s)

Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
 Erasing        : nautilus-sendto-2.28.0-1.fc12.i686                       1/1 

Removed:
 nautilus-sendto.i686 0:2.28.0-1.fc12                                          

Complete!

[root@localhost ~]# yum remove pidgin --remove-leaves
Loaded plugins: refresh-packagekit, remove-with-leaves
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package pidgin.i686 0:2.6.3-2.fc12 set to be erased
--> Finished Dependency Resolution
removing gtkspell-2.0.15-2.fc12.i686. It is not required by anything else.
removing libpurple-2.6.3-2.fc12.i686. It is not required by anything else.
removing cyrus-sasl-md5-2.1.23-4.fc12.i686. It is not required by anything else.
removing cyrus-sasl-plain-2.1.23-4.fc12.i686. It is not required by anything else.
removing meanwhile-1.1.0-2.fc12.i686. It is not required by anything else.
removing libsilc-1.1.10-1.fc12.i686. It is not required by anything else.
--> Running transaction check
---> Package cyrus-sasl-md5.i686 0:2.1.23-4.fc12 set to be erased
---> Package cyrus-sasl-plain.i686 0:2.1.23-4.fc12 set to be erased
---> Package gtkspell.i686 0:2.0.15-2.fc12 set to be erased
---> Package libpurple.i686 0:2.6.3-2.fc12 set to be erased
---> Package libsilc.i686 0:1.1.10-1.fc12 set to be erased
---> Package meanwhile.i686 0:1.1.0-2.fc12 set to be erased
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package                Arch       Version                Repository       Size
================================================================================
Removing:
cyrus-sasl-md5         i686       2.1.23-4.fc12          installed        64 k
cyrus-sasl-plain       i686       2.1.23-4.fc12          installed        30 k
gtkspell               i686       2.0.15-2.fc12          installed        69 k
libpurple              i686       2.6.3-2.fc12           installed        22 M
libsilc                i686       1.1.10-1.fc12          installed       1.0 M
meanwhile              i686       1.1.0-2.fc12           installed       273 k
pidgin                 i686       2.6.3-2.fc12           installed       2.8 M

Transaction Summary
================================================================================
Remove        7 Package(s)
Reinstall     0 Package(s)
Downgrade     0 Package(s)

Is this ok [y/N]: 

Hint: nautilus-sendto i dziwne zależności, o których pisałem w poprzednim poście.

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki za odpowiedzi. Nie - nie pytam o wszystko - szokiem małym jest dla mnie po prostu przerzutka na RPM i yum,bo z Debianem nie mam tylu przygód - po prostu normalnie bez problemu go użytkuję. Akurat pytanie o libpurple bardziej było luźnym przemyśleniem niewymagającym odpowiedzi - taka luźna myśl. Ale skoro odpowiedziałeś - doceniam to :-) A co do główkowania - bez tego to można używać chyba tylko Ubuntu, niczego innego :)

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...