Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2012-02-04 18:31:36

  tdkwro - Użytkownik

tdkwro
Użytkownik
Skąd: Wrocław
Zarejestrowany: 2009-03-12

dpkg bład parsowania

Kod:

Linux debian 2.6.32-5-686 #1 SMP Wed Jan 12 04:01:41 UTC 2011 i686 GNU/Linux

Kod:

0 pakietów aktualizowanych, 1 instalowanych, 0 do usunięcia i 292 nie aktualizowanych.
Do pobrania 0 B/2173 kB archiwów. Zajęte po rozpakowaniu: 6603 kB.
dpkg: błąd parsowania, w pliku "/var/lib/dpkg/available" niedaleko linii 7620
 brakujący package name
E: Sub-process /usr/bin/dpkg returned an error code (2)
W czasie instalacji wystąpiły problemy. Próba naprawy:
dpkg: błąd parsowania, w pliku "/var/lib/dpkg/available" niedaleko linii 7620
 brakujący package name

Offline

 

#2  2012-02-04 18:57:40

  ArnVaker - Kapelusznik

ArnVaker
Kapelusznik
Skąd: Midgard
Zarejestrowany: 2009-05-06

Re: dpkg bład parsowania

Odnośnie tego problemu, jak już w innym wątku padło:

Kod:

dpkg --clear-avail

(to tak jakby ktoś przypadkiem tutaj trafił w poszukiwaniu rozwiązania)

BTW, coś podejrzanie dużo masz tych wiszących aktualizacji jak na wersję stable.

Offline

 

#3  2012-02-04 19:01:55

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Poznań, Polska
Zarejestrowany: 2007-12-22
Serwis

Re: dpkg bład parsowania

Ja bym zaczął od:

Kod:

mv /var/lib/dpkg/available /var/lib/dpkg/available-stare
apt-get/aptitude update

Jeżeli update się nie powiedzie z jakiegoś powodu, to przywracasz available-stare w miejsce available.

Jeżeli się powiedzie, to powinieneś mieć nowy plik available — przypuszczalnie już bez tego błędu.

Offline

 

#4  2012-02-04 19:05:29

  ArnVaker - Kapelusznik

ArnVaker
Kapelusznik
Skąd: Midgard
Zarejestrowany: 2009-05-06

Re: dpkg bład parsowania

Minio: dpkg --clear-avail właśnie to robi. Przenosi /var/lib/dpkg/available na /var/lib/dpkg/available-old i tworzy pusty.

Offline

 

#5  2012-02-04 19:19:23

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Poznań, Polska
Zarejestrowany: 2007-12-22
Serwis

Re: dpkg bład parsowania

ArnVaker: kiedy pisałem swoją wiadomość, Twojej jeszcze tutaj nie było (a tej w drugim wątku nie czytałem). W dpkg korzystam tylko z opcji -l, -L i -S, więc o --clear-avail nawet nie wiedziałem ;) .

Offline

 

#6  2012-02-04 19:33:45

  ArnVaker - Kapelusznik

ArnVaker
Kapelusznik
Skąd: Midgard
Zarejestrowany: 2009-05-06

Re: dpkg bład parsowania

A tak swoją drogą, to ten plik chyba do niczego szczególnego nie jest przydatny. W manie wspominają coś, że dselect tego używa, ale kto używa dselect? :) Mój ważył około 1M, jak go zaktualizowałem w ten sposób (nie wiem czy jest na to jakaś lepsza metoda):

Kod:

dpkg --clear-avail
for packages in /var/lib/apt/lists/*Packages ; do dpkg --merge-avail $packages ; done

To waży teraz 27M, zatem wcześniej mało co tam nawet było w nim.

Offline

 

#7  2012-02-04 20:21:58

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Poznań, Polska
Zarejestrowany: 2007-12-22
Serwis

Re: dpkg bład parsowania

Nie wiem czy przeglądałeś polsko- czy angielskojęzyczną stronę man. W tej drugiej piszą wprost:

A  simpler one-shot command to retrieve and update the available file is dselect update. Note that this file is mostly useless if you
              don't use dselect but an APT-based frontend: APT has its own system to keep track of available packages.

Z tego co widzę, to:

- apt przechowuje informacje w pliku /var/cache/apt/pkgcache.bin. To jakiś ich autorski format bazy danych, file mówi tylko że to plik z danymi. Można sobie w źródłach APT zobaczyć jak go odczytują — plik apt-pkg/pkgcache.cc. Odsyłają tam też do dokumentacji, której ja zlokalizować nie potrafię (chyba zdążyli ją usunąć, ale zapomnieli usunąć też odpowiedni komentarz).

- bez wywoływania dselect update czy ręcznego łączenia plików Packages, dpkg w pliku available przechowuje informacje o wszystkich pakietach, które kiedykolwiek były zainstalowane. Wnioskuję po:
a)

Kod:

$ dpkg -l |grep -c '^ii'
1536
$ grep -c 'Package: ' /var/lib/dpkg/available 
2611

b) w available mam wpis dotyczący kernela w odmianie liquorix, a będzie grubo ponad rok, jak repozytorium liquorix nie mam w sources.list.

Wychodzi na to, że ten plik nie jest szczególnie często wykorzystywany, ale dpkg manipuluje nim w trakcie instalacji oprogramowania. Gdy zauważy, że jest on źle sformatowany, wypluwa błąd.

Offline

 

#8  2012-02-04 20:44:01

  ArnVaker - Kapelusznik

ArnVaker
Kapelusznik
Skąd: Midgard
Zarejestrowany: 2009-05-06

Re: dpkg bład parsowania

A  simpler one-shot command to retrieve and update the available file is dselect update.

Też to widziałem, ale ja nie mam dselect.

Minio napisał(-a):

Wychodzi na to, że ten plik nie jest szczególnie często wykorzystywany, ale dpkg manipuluje nim w trakcie instalacji oprogramowania. Gdy zauważy, że jest on źle sformatowany, wypluwa błąd.

Waśnie zastanawiałem się co tam trafia do niego normalnie i w jakich okolicznościach jest aktualizowany. :)

Anyway, rozwiązanie wciąż to samo:

Kod:

dpkg --clear-avail

Za to teraz więcej wiemy na temat czym to ustrojstwo jest… I że nie warto się nim przejmować.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)