Strona 1 z 2
[+] Brakujące pakiety polecane - jak namierzyć?
: 20 sierpnia 2009, 03:36
autor: ArnVaker
Jak z konsoli namierzyć "brakujące" pakiety polecane?
Chodzi dokładnie o to, co w synapticu znajduje się pod:
: 20 sierpnia 2009, 13:28
autor: Akkon
: 20 sierpnia 2009, 19:07
autor: ArnVaker
Owszem, bawiłem się... Jednak nie zmienia to faktu, że nie wiem jak z jego pomocą wyłuskać listę wszystkich pakietów polecanych przez aktualnie znajdujące się w systemie, odsiewając przy tym już zainstalowane. Mógłbyś rozwinąć swoją myśl?
: 20 sierpnia 2009, 22:37
autor: piter
Zadanie wydaje mi się ciekawe, więc zacząłem się bawić, ale ponieważ robi się późno, a w najbliższych dniach nie będę miał dostępu do komputera napisze do czego udało mi się dojść.
Oto moja koncepcja:
Po pierwsze stworzyłbym listę pakietów zainstalowanych w systemie:
Kod: Zaznacz cały
dpkg -l | grep ii | awk '{print $2}' > zainstalowane
Po drugie stworzoną listę zainstalowanych pakietów należałoby by przekazać jako wejście do polecenia podanego przez Akkon`a ale filtrując wyniki tak żeby były pokazane tylko pakiety sugerowane czyli coś w rodzaju:
Kod: Zaznacz cały
apt-cache depends lista_zainstalowanych_pakietów | grep Sugeruje > sugerowane
Powstanie w ten sposób lista pakietów sugerowanych przez pakiety już zainstalowane w systemie. Oczywiście cześć pakietów z tej nowej listy będzie z dużym prawdopodobieństwem już zainstalowana. Pozostaje zatem odseparować pakiety niezainstalowane od pakietów zainstalowanych. Może coś na zasadzie porównania listy pakietów zainstalowanych z listą pakietów sugerowanych albo użycie "grep -v"
Może komuś się uda rozwiązać to zadanie do końca, a może jest o wiele prostszy sposób.
: 21 sierpnia 2009, 00:17
autor: Katiusha
piter pisze:Po pierwsze stworzyłbym listę pakietów zainstalowanych w systemie: Kod:
dpkg -l | grep ii | awk '{print $2}' > zainstalowane
Na taką liste wystarczy po prostu:
i otrzymujemy liste w swoim katalogu w /home.
(Po dpkg to "-l" to małe L, nie pomylić z dużym i) <--To dla tych mniej zorientowanych. ;-)
: 21 sierpnia 2009, 01:18
autor: ArnVaker
Katiusha, chodziło o to żeby pozbyć się "śmieci" i zostawić wyłącznie nazwy pakietów.
To samo można osiągnąć również tak:
I pewnie jeszcze na sporo innych sposobów.
Odpowiadając częściowo na moje pytanie:
Kod: Zaznacz cały
aptitude search ~Rrecommends:~i | grep -vE '^(i|v)'
Niby to działa, jednak nie pokrywa się z tym co mówi Synaptic.
Trzeba kombinować dalej... Zobaczymy, co
Akkon miał na myśli.
: 21 sierpnia 2009, 01:28
autor: fnmirk
Katiusha, wspomniane polecenie nie wystarczy. Porównaj obydwa? Tylko jedno jest przydatne do tego celu. To wypisujące same nazwy pakietów. To co przedstawił
piter ma dodany ,,filtr''.
piter, można Twój kod uzupełnić tak:
Kod: Zaznacz cały
dpkg -l | grep ii | awk '{print $2}'|tr '\n' ' ' > zainstalowane
Ostatnie dwa znaczki ' ' są oddzielone spacją.
Dzięki temu uzyskujemy spis wszystkich zainstalowanych w systemie pakietów wypisanych w jednej linii i oddzielonych spacją. Taki spis możemy wykorzystać do instalacji automatycznej systemu po instalacji minimalnej, aby mieć ten sam zestaw pakietów. Wystarczy tylko odfiltrować z listy pakiety już zainstalowane.
: 21 sierpnia 2009, 12:41
autor: Akkon
piter pisze:Po pierwsze stworzyłbym listę pakietów zainstalowanych w systemie:
Kod:
dpkg -l | grep ii | awk '{print $2}' > zainstalowane
Jest o wiele prostszy sposób na to:
w ten sposób otrzymamy listę wszystkich zainstalowanych pakietów w systemie
w ten tylko pakietów instalowanych automatycznie, a więc również (choć nie tylko) pakietów sugerowanych.
ArnVaker pisze:Zobaczymy, co Akkon miał na myśli.
Miałem na myśli tylko to, że dzięki tej komendzie mamy pełen wykaz zależności dla pakietu, ale po tym jak Ty "rozwinąłeś" swoją myśl widzę już, że chodzi o coś innego.
ArnVaker pisze:Odpowiadając częściowo na moje pytanie:
Kod:
aptitude search ~Rrecommends:~i | grep -vE '^(i|v)'
Niby to działa, jednak nie pokrywa się z tym co mówi Synaptic.
No właśnie chyba sam zaproponowałeś sobie rozwiązanie. Z tym, że ja bym raczej próbował z taką składnią (trzeba by to jeszcze potestować):
Kod: Zaznacz cały
aptitude search ~Rrecommends:~i | grep '^p'
Jeśli się nie mylę, to w ten sposób powinieneś uzyskać listę wszystkich pakietów rekomendowanych przez te zainstalowane, a następnie przy pomocy "grepa" filtrujesz tą listę o te "brakujące", czyli rekomendowane a niezainstalowane, bo to jak rozumiem chcesz uzyskać.
Co do niezgodności z Synapticiem to przychodzi mi do głowy taka sugestia, że obydwa programy mogą inaczej traktować zależności rekomendowane i sugerowane, ale nie wykluczone, że to po prostu kwestia składni polecenia. Trzeba by to zbadać.
: 21 sierpnia 2009, 14:17
autor: ArnVaker
Akkon pisze:Jest o wiele prostszy sposób na to:
Stosując ten sposób trudniej jest wyłuskać wyłącznie nazwy pakietów. ]
[/quote]
- grep '^p' - pominięte zostaną pakiety usunięte, po których zostały pliki konfiguracyjne.
- Myślałem, że rozmawiamy o pakietach polecanych, a nie sugerowanych...
Okazuje się, że obaj byliśmy w błędzie. To co pokazuje Synaptic zawiera pakiety polecane i sugerowane (nie wiem czy wszystkie). W sumie to nie problem, można zrobić tak:
Kod: Zaznacz cały
aptitude search ~Rrecommends:~i ~Rsuggests:~i | grep -vE '^(i|v)'
Jednak efekt nie jest taki, o jaki chodziło. Aptitude znajduje o wiele więcej pakietów. Synaptic pokazuje mi ich 238, natomiast powyższe polecenie aż 918.
Kontynuując myśl
pitera:
Kod: Zaznacz cały
apt-cache depends $(dpkg --get-selections | awk '{print $1}') | grep -E '(Poleca|Sugeruje)' | awk '{print $2}' | grep -vE '^<'
Wynikiem jest lista pakietów polecanych oraz sugerowanych przez zainstalowane w systemie.
Jak z tej listy odsiać pakiety zainstalowane w systemie oraz powtarzające się, a ponadto uporządkować całość alfabetycznie?
Myślę, że efekt byłby dużo bardziej zbliżony do filtru Synaptica.
: 21 sierpnia 2009, 15:14
autor: Akkon
ArnVaker pisze:grep '^p' - pominięte zostaną pakiety usunięte, po których zostały pliki konfiguracyjne
Tak, ale w tej kwestii nie wyraziłeś się jasno o jakie pakiety chodzi. Zresztą to dla grepa przecież nie będzie problem:
Kod: Zaznacz cały
aptitude search ~Rrecommends:~i | grep -c ^[cp]
ArnVaker pisze:Myślałem, że rozmawiamy o pakietach polecanych, a nie sugerowanych...
Tak, tak, już edytowałem tamtego posta. Bawiłem się trochę tymi poleceniami i po prostu wkleiłem nie to co trzeba.
Okazuje się, że obaj byliśmy w błędzie. To co pokazuje Synaptic zawiera pakiety polecane i sugerowane (nie wiem czy wszystkie)
Ja nie :-P Od początku podejrzałem, że obydwa programy inaczej podchodzą do tego. Zresztą porównaj wyniki wyszukiwania zależności w pakietach przy użyciu apt-cahe. To zresztą potwierdza tezę, że te programy inaczej radzą sobie z tymi zależnościami przy instalacji. Być może stąd wynika zalecenie by nie mieszać obydwu narzędzi.
Aptitude znajduje o wiele więcej pakietów. Synaptic pokazuje mi ich 238, natomiast powyższe polecenie aż 918.
Jesteś pewny, że to nie wina błędnej składni, bo na moją głowę to aptitude jest bardziej rygorystyczne i prędzej bym synaptica podejrzewał (zgodnie zresztą z tym co sam na ten temat napisałeś) o "zawyżanie" liczby pakietów.