[+] Brakuj

Tematy związane z oprogramowaniem, instalacją, konfiguracją
ArnVaker

Post autor: ArnVaker »

Akkon pisze:Tak, ale w tej kwestii nie wyraziłeś się jasno o jakie pakiety chodzi.
ArnVaker pisze:listę wszystkich pakietów polecanych przez aktualnie znajdujące się w systemie, odsiewając przy tym już zainstalowane
Jak dla mnie jasnym jest, że pakiety usunięte nie zaliczają się do zainstalowanych.
Akkon pisze:Zresztą to dla grepa przecież nie będzie problem:

Kod: Zaznacz cały

aptitude search ~Rrecommends:~i | grep -c ^[cp]

Kod: Zaznacz cały

aptitude search ~Rrecommends:~i | grep -cvE '^(i|v)'
Zostawmy już tę kwestię, oba polecenia zwracają taki sam wynik.
Akkon pisze:
Okazuje się, że obaj byliśmy w błędzie. To co pokazuje Synaptic zawiera pakiety polecane i sugerowane (nie wiem czy wszystkie)

Ja nie
Napisałem to ze względu na przedstawienie przez Ciebie polecenia:

Kod: Zaznacz cały

aptitude search ~Rsuggests:~i | grep '^p'
Akkon pisze:Jesteś pewny, że to nie wina błędnej składni
Pewny nie jestem, ale nie wiem jak można zawęzić wynik wykorzystując aptitude.

Kod: Zaznacz cały

Synaptic  =>  Własne filtry  =>  Missing Recommends
238

Kod: Zaznacz cały

aptitude search ~Rrecommends:~i | grep -cvE '^(i|v)'
350
Aptitude zwraca więcej pakietów, a przy tym nie ma wśród nich niektórych wskazanych przez Synaptica (jak mniemam pakietów sugerowanych).

Kod: Zaznacz cały

aptitude search ~Rrecommends:~i ~Rsuggests:~i | grep -cvE '^(i|v)'
918
Jest tego mnóstwo, wyszczególnione są nawet wszystkie pakiety językowe OpenOffice.

Kod: Zaznacz cały

apt-cache depends $(dpkg --get-selections | awk '{print $1}') | grep -E '(Poleca|Sugeruje)' | awk '{print $2}' | grep -cvE '^<'
800
Również mnóstwo, jednak wiele z nich jest już zainstalowanych i sporo wpisów się powtarza. Uwzględnione są pakiety polecane i sugerowane, jednak bez wyszczególnienia na przykład wspomnianych pakietów językowych. Jak oczyścić i uporządkować tę listę?
piter
Beginner
Posty: 128
Rejestracja: 09 lutego 2008, 12:45

Post autor: piter »

ArnVaker napisał:
Jak z tej listy odsiać pakiety zainstalowane w systemie oraz powtarzające się, a ponadto uporządkować całość alfabetycznie?

Kod: Zaznacz cały

apt-cache depends $(dpkg --get-selections | awk '{print $1}') | grep -E '(Poleca|Sugeruje)' | awk '{print $2}' | grep -vE '^<' > lista_robocza

Kod: Zaznacz cały

sort lista_robocza > lista_robocza_posortowana

Kod: Zaznacz cały

uniq lista_robocza_posortowana > bez_powtorzen

Kod: Zaznacz cały

dpkg --get-selections $(cat bez_powtorzen) | grep -v install
U mnie jest końcowy efekt wygląda tak:

Kod: Zaznacz cały

dpkg --get-selections $(cat bez_powtorzen) | grep -v install
kdebluetooth					purge
libggi-target-x					purge
libgii1-target-x				purge
Pewnie dla tego, że używam aptitude. Ale jeśli komuś trafi się pakiet niezainstalowany dostanie wtedy odpowiedź:

Kod: Zaznacz cały

Nie znaleziono pakietu pasującego do wzorca nazwa_pakietu.
Można ewentualnie coś pokombinować żeby wynikiem była zamiast takiego napisu sama nazwa pakietu.
ArnVaker

Post autor: ArnVaker »

Kod: Zaznacz cały

dpkg --get-selections $(cat bez_powtorzen) | grep -v install
Wychodzi lista pakietów polecanych przez zainstalowane, które to zostały usunięte.
piter pisze:Ale jeśli komuś trafi się pakiet niezainstalowany dostanie wtedy odpowiedź:

Kod: Zaznacz cały

Nie znaleziono pakietu pasującego do wzorca nazwa_pakietu.
Właśnie tak nie jest, u mnie ten komunikat występuje tylko w przypadku trzech pakietów. W przypadku innych niezainstalowanych polecenie nic nie zwraca. Przykład:

Kod: Zaznacz cały

dpkg --get-selections yelp zenity zip zoo
yelp				      install
zenity				   install
Pakiety zip oraz zoo nigdy nie były zainstalowane i w ogóle nie ma ich na liście. Trzeba by zrobić odwrotnie. Z listy "bez_powtorzen" odsiać pakiety, które zwraca:

Kod: Zaznacz cały

dpkg --get-selections | awk '{print $1}'
Trzeba by to było jeszcze jakoś mądrze zrobić, żeby nie pozbyć się pakietów, w przypadku których nazwa występująca na liście zainstalowanych zawiera się w nazwie z listy polecanych.

Przykład: Na liście polecanych pakietów występują u mnie apt-doc i aptitude-doc-en, natomiast mam w systemie apt. Należałoby przefiltrować listę polecanych w taki sposób, żeby nie wyleciały z niej apt-doc i aptitude-doc-en.


PS Zakładając ten temat myślałem, że po prostu jest jakieś proste polecenie o którym nie wiem, które udostępnia taką funkcję jak wspomniany filtr synaptica... ;)
piter
Beginner
Posty: 128
Rejestracja: 09 lutego 2008, 12:45

Post autor: piter »

OK. Jeszcze raz.

Kod: Zaznacz cały

apt-cache depends $(dpkg --get-selections | awk '{print $1}') | grep -E '(Poleca|Sugeruje)' | awk '{print $2}' | grep -vE '^<' > lista_robocza

Kod: Zaznacz cały

sort lista_robocza | uniq > polecane_sugerowane

Kod: Zaznacz cały

dpkg --get-selections | awk '{print $1}' > zainstalowane_robocza

Kod: Zaznacz cały

sort zainstalowane_robocza > zainstalowane

Kod: Zaznacz cały

comm -2 -3 polecane_sugerowane zainstalowane > wynik
¯eby polecenie comm zadziałało prawidłowo koniecznie trzeba wcześniej posortować pliki tekstowe. Dlatego stworzyłem najpierw plik zainstalowane_robocza a potem go posortowałem.
Myślę, że teraz jest wynik jest prawidłowy.
ArnVaker

Post autor: ArnVaker »

piter pisze:Myślę, że teraz jest wynik jest prawidłowy.
Też tak sądzę. Co prawda lista jest dłuższa niż ta z Synaptica, ale wydaje się sensowna i zgodna z rzeczywistością. "Problem" rozwiązany. Dziękuję za zaangażowanie, pozdrawiam.
ODPOWIEDZ