ďťż
 
 
   apt-cache pkgnames
 
 

Tematy

 
    
 

 

 

 

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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minister.pev.pl

  •  

     


     

     
    Copyright 2003. MĂłj serwis