|
apt-cache pkgnames
jang - 19-04-2007 00:02
W/g info apt-cache : pkgnames [ prefiks ] To polecenie wyświetla nazwy wszystkich pakietów zainstalowanych w systemie. Opcjonalnym argumentem jest przedrostek nazwy paki- etów.
Zrobiłem coś takiego : apt-cache pkgnames > /tmp/zainst-deb sort /tmp/zainst-deb -o /tmp/zainst-deb
i znalazłem w tym spisie coś takiego : CGI-modules Zna ktoś taki pakiet ? Kpackage nie zna takiego pakietu. apt-cache madison CGI-modules - nie pokazuje nic. apt-cache search CGI-modules daje taki wynik : libcgi-perl - modules for perl5, for use in writing CGI scripts.
Wie ktoś o co w tym bałaganie chodzi ? To cudo w końcu pokazuję listę pakietów czy listę ... no właśnie czego ?
Czy ktoś z Was zna jakiś inny sposób na poznanie listy zainstalowanych w systemie pakietów ?
velmafia - 19-04-2007 00:06
Czy ktoś z Was zna jakiś inny sposób na poznanie listy zainstalowanych w systemie pakietów ?
dpkg -l aloha
jang - 19-04-2007 00:24
velmafia dzięki za już i za jeszcze (jeśli możesz) w/g info dpkg : dpkg -l | --list wzorzec-nazw-pakietów ... Wyświetla pakiety pasujące do wzorca
przyznasz że raczej trudno się z tego domyślić że coś takiego wyświetli to o co mi chodziło.
Czy jest coś co wyświetli mi trochę bardziej skróconą wersję listy pakietów tzn same nazwy ?
Pozdrowienia
velmafia - 19-04-2007 00:33
przyznasz że raczej trudno się z tego domyślić że coś takiego wyświetli to o co mi chodziło.
a o co dokładnie Ci chodzi? ;)
jang - 19-04-2007 00:51
Przepraszam ja tak tylko głośno myślę o tych czasami dziwnych wpisach w info, man. Przy takim opisie jak wyżej zacytowałem trudno się domyślić że dpkg - lwyświetli mi listę zainstalowanych pakietów ale mniejsza z tym. dpkg - l wyświetala jak zresztą wiesz coś takiego : ii arts 1.5.5-1 sound system from the official KDE release ii artsbuilder 3.5.5-2 synthesizer designer for aRts ii at 3.1.10 Delayed job execution and batch processing
a ja potrzebowałbym tak : arts artsbuilder at
oczywiście jeśli nie ma jakiegoś gotowego polecenia to sobie poradzę z tym przy pomocy bash'a no ale może jest coś takiego ?
- 19-04-2007 01:56
dpkg -l | awk '{print $2}'
Pozdrawiam
jang - 19-04-2007 17:53
Ze względu na kolejny :-( problem który się pojawił : apt-get -d install ... - nie chce ściągać pakietów które są zainstalowane w systemie
mam kolejne pytanie : czy jest jakieś polecenie które wyświetli nie : adduser a cały pakiet czyli : adduser_3.102_all.deb
reprepro nie potrafi instalować pakietu tak jak apt - apt-get install adduser tylko musi mieć : adduser_3.102_all.deb
Pozdrawiam i dziękuję za odpowiedzi.
- 19-04-2007 19:22
mam kolejne pytanie : czy jest jakieś polecenie które wyświetli nie:adduser a cały pakiet czyli: adduser_3.102_all.deb
Tak wystarczy? apt-cache show adduser | sed '/Filename:/!d;{s/.*\///}'
DOPISEK: Na wszelki wypadek dopiszę jeszcze, że aby w ten sposób uzyskać od razu info o wszystkich zainstalowanych paczkach wystarczy mini skrypcik: #!/bin/bash
paczka="$(dpkg -l | awk '{print $2}')"
for x in $paczka; do apt-cache show "$x" \ | sed '/Filename:/!d;{s/.*\///}' done
Pozdrawiam
jang - 20-04-2007 01:18
Hagal bardzo bardzo dziękuję,
i jeszcze jedno pytanko, ale może "umaluję" je na końcu posta. No więc tak - dpgk -l wyświetlając coś na ekranie pokazuje również nagłówek : Wybór=U=Nieznany/I=Instalacja/R=Usunięcie/P=Wyczyszczenie/H=Zatrzymanie | Stan=N=Brak/I=Zainst./C=Skonfig./U=Rozpakowany/F=Nieskonfig./H=Wpół-zainst. |/ Błędy?=(brak)/H=Wstrzym./R=Do przeinst./X=Obydwa (Stan,Błędy:wielk.lit.=źle) ||/ Nazwa Wersja Opis +++-=================-=================-=====================
który mnie osobiście w tym konkretnym przypadku nie jest do szczęścia potrzebny. Więc nie wypadało mi nic innego zrobić jak tylko z lekka zmodernizować Twój mini skrypcik :-) no i wyszło mi coś takiego (w tej wersji zmieniła się tylko paczka) paczka="$(dpkg -l | awk '{print $2}' | tail -n +6)
no i mam to co chciałem, czyli sam spis pakietów bez w/w nagłówka. No ale nie byłbym sobą gdybym nie spróbował jeszcze coś "namieszać" i efekt jest taki : paczka="$(dpkg -l | awk '{print $2}')" for x in $paczka; do apt-cache show "$x" | sed -e '1,5d' | sed '/Filename:/!d;{s/.*\///}' >> /tmp/spis-deb done
dodałem : sed -e '1,5d' Czas już na pytanie - co faktycznie namieszałem ? Przy tej drugiej wersji również w pliku mam to co chciałem, czyli to pytanie jest takie czysto teoretyczne ale może na przyszłość się przyda ? Chodzi o to że oprócz tego co chciałem mam na ekranie (to nie jest zapisywane do pliku) taki oto dodatek: W: Nie udało się odnaleźć pakietu Stan=N=Brak/I=Zainst./C=Skonfig./U=Rozpakowany/F=Nieskonfig./H=Wpół-zainst. E: Nie znaleziono żadnych pakietów W: Nie udało się odnaleźć pakietu Błędy?=(brak)/H=Wstrzym./R=Do E: Nie znaleziono żadnych pakietów W: Nie udało się odnaleźć pakietu Nazwa E: Nie znaleziono żadnych pakietów jang@ramireza:~$ ~/deb-spis1 W: Nie udało się odnaleźć pakietu Stan=N=Brak/I=Zainst./C=Skonfig./U=Rozpakowany/F=Nieskonfig./H=Wpół-zainst. E: Nie znaleziono żadnych pakietów W: Nie udało się odnaleźć pakietu Błędy?=(brak)/H=Wstrzym./R=Do E: Nie znaleziono żadnych pakietów W: Nie udało się odnaleźć pakietu Nazwa E: Nie znaleziono żadnych pakietów jang@ramireza:~$ ~/deb-spis1 W: Nie udało się odnaleźć pakietu Stan=N=Brak/I=Zainst./C=Skonfig./U=Rozpakowany/F=Nieskonfig./H=Wpół-zainst. E: Nie znaleziono żadnych pakietów W: Nie udało się odnaleźć pakietu Błędy?=(brak)/H=Wstrzym./R=Do E: Nie znaleziono żadnych pakietów W: Nie udało się odnaleźć pakietu Nazwa E: Nie znaleziono żadnych pakietów
Absolutnie poprawny wynik uzyskałem po wprowadzeniu obydwu poprawek jednocześnie tzn: #!/bin/bash
echo -n > /tmp/spis-deb
paczka="$(dpkg -l | awk '{print $2}' | tail -n +6)"
for x in $paczka; do apt-cache show "$x" | sed -e '1,5d' | sed '/Filename:/!d;{s/.*\///}' >> /tmp/spis-deb done
ale czy aby napewno muszą być obydwie czy też coś dałoby się poprawić tylko w pętli ?
Pozdrowienia
Cytat:
Napisał jang
ale czy aby na pewno muszą być obydwie czy też coś dałoby się poprawić tylko w pętli?
Nie musi być ani jedna ani druga :)
Poza tym dzięki za zwrócenie uwagi na nagłówek - pisałem na szybko, więc mi umknęło.
Zauważ że dpkg -l poprzedza nazwę pakietu informacją o tym że jest zainstalowany (ii)
Skoro tak to całość wystarczy zapisać tak:
Kod:
#!/bin/bash
paczka="$(dpkg -l | grep '^ii ' | awk '{print $2}')"
lista="/tmp/spis-deb"
for x in $paczka; do
apt-cache show "$x" \
| sed '/Filename:/!d;{s/.*\///}' >>$lista
done
echo "Zapisano $(wc -l <$lista) pozycji"
i już grep odrzuci nam wszystkie linie nie rozpoczynające się od ii
Pozdrawiam
l
Show 40 post(s) from this thread on one page
Strona 1 z 2 - 20-04-2007 01:36
ale czy aby na pewno muszą być obydwie czy też coś dałoby się poprawić tylko w pętli?
Nie musi być ani jedna ani druga :) Poza tym dzięki za zwrócenie uwagi na nagłówek - pisałem na szybko, więc mi umknęło.
Zauważ że dpkg -l poprzedza nazwę pakietu informacją o tym że jest zainstalowany (ii)
Skoro tak to całość wystarczy zapisać tak:
#!/bin/bash
paczka="$(dpkg -l | grep '^ii ' | awk '{print $2}')" lista="/tmp/spis-deb"
for x in $paczka; do apt-cache show "$x" \ | sed '/Filename:/!d;{s/.*\///}' >>$lista done
echo "Zapisano $(wc -l <$lista) pozycji"
i już grep odrzuci nam wszystkie linie nie rozpoczynające się od ii
Pozdrawiam
jang - 20-04-2007 03:18
Zaczynam się zastanawiać czy uda mi się kiedykolwiek dokończyć to co przy Twojej pomocy zacząłem :-(
Najpierw chciałem pomóc sobie poprzez : apt-cache pkgnames - nie da rady. Ty umalowałeś śliczny skrypcik który robi to co powinien :-) . Ja go znowu troszkę zmodernizowałem (napewno da się lepiej ale jest dobrze): for x in $paczka; do apt-cache show "$x" | sed '/Filename:/!d;' | sed -e 's/Filename: //' >> /tmp/spis-deb done sort /tmp/spis-deb -o /tmp/spis-deb
dodałem : sed -e 's/Filename: //' a dzięki sort odkryłem kolejny problem :-( który tym razem zawdzięczam dobrym ludziom od Kadu. Umieścili swój program i dodatki (na swoim serwerze) w katalogu pkgs/etch no i mini skrypcik (ścieżka do pliku to wynik mojej modyfikacji) zapisuje do pliku m.in. : pkgs/etch/kadu_0.5.0-1_i386.deb pkgs/etch/kadu-artssound_0.5.0-1_i386.deb
pool/contrib/f/flashplugin-nonfree/flashplugin-nonfree_9.0.31.0.4_i386.deb pool/contrib/m/msttcorefonts/msttcorefonts_1.8_all.deb
chodzi o te 2 pierwsze linie, reszta już jest dobrze. Przecież na żadnym obrazie nie ma katalogu /pkgs. Po co ścieżka do pliku ? Ze względu na to iż apt-cache pkgnames nie działa w tym wypadku chciałem sobie pakiety w ten sposób ściągnąć z ISO (przed chwilą skończył się pobierać pierwszy obraz DVD) ale jak takich "dziwnych" ścieżek będzie więcej ? Wiem można by było się ich pozbyć ale co to za skrypt jak za każdym razem każdy użytkownik będzie musiał porównywać dpgk -l z tym co w reprepro skrypt mu zainstalował ? (Chciałem cały skrypt udostępnić tym którzy będą mieli ochotę z reprepro skorzystać) Będę musiał wymyślić jakiś inny sposób, jaki nie wiem, o tej godzinie mózg już mi nie pracuje.
Pozdrawiam
- 20-04-2007 11:44
[bAd. 1 [/b]
Ja go znowu troszkę zmodernizowałem (na pewno da się lepiej ale jest dobrze): for x in $paczka; do apt-cache show "$x" | sed '/Filename:/!d;' | sed -e 's/Filename: //' >> /tmp/spis-deb done sort /tmp/spis-deb -o /tmp/spis-deb
dodałem: sed -e 's/Filename: //'
Nie używaj 2 razy polecenia sed, bo to powoduje, że 2 razy musi ono być wywoływane - rób to jednym ciągiem, a sort dodaj do potoku:
for x in $paczka; do apt-cache show "$x" \ | sed '/Filename:/!d;{s/.*:\ //}' \ | sort >>$lista done
Ad. 2
odkryłem kolejny problem, który tym razem zawdzięczam dobrym ludziom od Kadu. Umieścili swój program i dodatki (na swoim serwerze) w katalogu pkgs/etch
To wynika z zasad budowania repozytorium. Wymagane jest określone drzewo katalogów w dists, zaś same paczki mogą być umieszczane w dowolnym katalogu - o dowolnej nazwie. Pule są użyteczne przy dużych repozytoriach, dlatego nie dziw się, że np.: Kadu nie stosuje pool tylko własny układ. Sam osobiście paczki umieszczam w katalogu debs.
Jeżeli chcesz wrzucać paczki "nietypowej" lokalizacji Kadu do Twojego pool, to załóż w pool/main/ np. katalog: inne a potem tylko zmodyfikuj znów polecenie:
for x in $paczka; do apt-cache show "$x" \ | sed '/Filename:/!d;{s/.*:\ //};/^pkgs/{s/pkgs\/etch/pool\/main\/inne/g}' \ | sort >>$lista done
co spowoduje, że wszystkie ścieżki pkgs/etch/<nazwa paczki> zostaną zamienione na pool/main/inne/<nazwa paczki> Dla większej ilości "dziwnych" lokalizacji zmodyfikuj sobie to aby wyszukiwało linie zaczynające się inaczej niż pool/ , wycinało wszystko aż do nazwy pakietu i podmieniało na wpis ze ścieżką jaką sobie tam wymyślisz. Możliwości jest mnóstwo :) Polecam: man bash i man sed
Ogólnie to zaczynam się zastanawiać się czy to już się powoli nie robi temat o Bash+Sed ;)
Pozdrawiam
jang - 22-04-2007 13:36
Hagal jeszcze raz dziękuję za pomoc. Dzięki Twojemu "mini skrypcikowi" a szczególnie ostatniej modyfikacji zaczynam łapać co się dzieje w "{}" sed'a. Pisałem wcześniej o "problemie" z Kadu a tu okazuje się że z nim nie ma żadnego problemu natomiast problemem jest chaos jaki panuje na debian-multimedia. dzięki apt-cache showpkg ... jestem w stanie otrzymać informację o tym skąd pochodzi pakiet np. apt-cache showpkg opera
pokaże nam m.im. : Versions: 9.20-20070409.6(/var/lib/apt/lists/deb.opera.com_opera_dists_testing_non-free_binary-i386_Packages)(/var/lib/apt/lists/localhost_debian_dists_lenny_non-free_binary-i386_Packages)(/var/lib/dpkg/status)
czyli wiadomo że pochodzi z deb.opera.com/opera natomiast za pomocą : apt-cache showpkg opera
jestem w stanie dowiedzieć się jaka jest ścieżka do pakietu na serwerze : Filename: pool/non-free/o/opera/opera_9.20-20070409.6_i386.deb
czyli składając to wszystko w całość mogę sobie przy pomocy wget ściągnąć każdy pakiet z konkretnego serwera : wget --tries=45 http://deb.opera.com/opera/pool/non-...409.6_i386.deb -P /var/cache/apt/archives/
a co za chaos na debian multimedia ? ano taki że dzięki apt-cache showpkg ... i apt-cache show ... można się co najwyżej dowiedzieć że pakiet pochodzi z "www.debian-multimedia.org" a zamiast np. pool/non-free/o/opera/opera_9.20-20070409.6_i386.deb dostajemy takie cudo :1:20061022-0.0 (/var/lib/dpkg/status) czyli ścieżka dostępu do pakietu na serwerze jest tajemnicą państwową.
a oto ostatnia moja wersja skryptu dzięki której wszystko wyszło na jaw : #!/bin/bash
echo `date`
echo -n > /tmp/spis-deb3
paczka="$(dpkg -l | grep '^ii ' | awk '{print $2}')" lista="/tmp/spis-deb3"
for x in $paczka; do # apt-cache showpkg "$x" | sed '/(\/var\/lib/!d;{s/.*lists\///};/dists/{s/dists.*//g};/_/{s/_/\//g};/Packages)/{s/Packages)//g};' >> $lista a="$(apt-cache showpkg "$x" | sed '/(\/var\/lib/!d;/lists/{s/.*lists/http:\//g};/dists/{s/dists.*//g};/_/{s/_/\//g};/Packages)/{s/Packages)//g};')" b="$(apt-cache show "$x" | sed '/Filename:/!d;{s/.*:\ //}')" echo "$a$b" >> $lista done
sort /tmp/spis-deb3 -o /tmp/spis-deb3
echo "Zapisano $(wc -l <$lista) pozycji"
echo `date`
a to wynik działania skryptu : http://ftp.pl.debian.org/debian/pool/contrib/f/flashplugin-nonfree/flashplugin-nonfree_9.0.31.0.4_i386.deb http://ftp.pl.debian.org/debian/pool...ts_1.8_all.deb http://ftp.pl.debian.org/debian/pool....4-11_i386.deb http://ftp.pl.debian.org/debian/pool...p5-31_i386.deb http://ftp.pl.debian.org/debian/pool....42-1_i386.deb http://ftp.pl.debian.org/debian/pool...4-7.1_i386.deb ... ... ... http://ftp.pl.debian.org/debian/pool...7b1-2_i386.deb http://ftp.pl.debian.org/debian/pool...7.3-1_i386.deb http://localhost/debian/pool/main/k/...1.6-1_i386.deb http://localhost/debian/pool/main/w/...2-0.0_i386.deb http://localhost/debian/pool/non-fre...409.6_i386.deb http://www.kadu.net/download/binary/...5.0-1_i386.deb
Sortowanie znowu osobno bo niestety tym sposobem plik nie jest posortowany : apt-cache show "$x" \ | sed '/Filename:/!d;{s/.*:\ //};/^pkgs/{s/pkgs\/etch/pool\/main\/inne/g}' \ | sort >>$lista
Pozdrawiam[/code]
zanotowane.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|