Dziś będzie o bardzo użytecznych programie apt-file. Dobrodziejstwo paczek w Ubuntu/Debianie może stać się przekleństwem, kiedy chcemy zainstalować program w nowszej wersji lub program nie znajdujący się w repozytoriach. Wtedy na pomoc przychodzi standardowa kompilacja. Zdarza się jednak, że pomimo wielkiego wysiłku i starań, zrobienia użytku z apt-cache search i przekopania 3/4 zasobów Internetu, pozostaje tylko bezradnie rozłożyć ręce. Cholerze czegoś wciąż brakuje i uparcie o tym informuje. Właśnie wtedy do akcji wkracza apt-file (;
1. Hipotetyczna sytuacja
./configure poszło jak z bicza trzasnął, z uśmiechem na ustach można wpisać make (pozwoliłem sobie skrócić output, dłuższą część treści można znaleźć w artykule, którym się posiłkowałem - po więcej odsyłam na koniec wpisu):
~$ make
[...]
-O2 -Wall -pedantic -std=c99 -fno-strict-aliasing -fmessage-length=0 -D_FORTIFY_SOURCE=2 -MT main.o -MD -MP -MF “.deps/main.Tpo” -c -o main.o main.c; \
then mv -f “.deps/main.Tpo” “.deps/main.Po”; else rm -f “.deps/main.Tpo”; exit 1; fi
main.c:21:21: error: gtk/gtk.h: No such file or directory
In file included from main.c:25:
awn-gconf.h:69: error: expected â)â before â*â token
In file included from main.c:26:
[...]
Teraz, jak dotrzeć do paczek, które mogą zawierać wymagany plik? Jeśli pod ręką nie ma fusów ani szklanej kuli, trzeba zaprząc do pracy apt-file. Ale skąd go wziąć?
2. Instalacja apt-file
sudo apt-get install apt-file
Po instalacji trzeba wydać jedno polecenie, które w zależności od posiadanego łącza internetowego i zawartości sources.list, może nieco czasu zająć. Dodatkowo, należy pamiętać o jego ponownym wykonaniu, po zmianach wprowadzonych w sources.list.
apt-file update
3. Poszukiwania czas zacząć
Teraz należy dokładniej przyjrzeć się komunikatowi o błędzie. Czego brakuje? error: gtk/gtk.h: No such file or directory. Można więc zacząć poszukiwania od:
apt-file search gtk.h
Ale to zwraca zbyt dużo wyników. Potrzeba konkretów:
apt-file search gtk/gtk.h
W odpowiedzi powinno wyświetlić się coś takiego:
~$ apt-file search gtk/gtk.h
libgfcui-dev: usr/include/gfc-2.0/gfc/gtk/gtk.hh
libgtk+2.0-directfb-dev: usr/include/directfb/gtk-2.0/gtk/gtk.h
libgtk1.2-dev: usr/include/gtk-1.2/gtk/gtk.h
libgtk2.0-dev: usr/include/gtk-2.0/gtk/gtk.h
libgtk2.0-doc: usr/share/doc/libgtk2.0-doc/gtk/gtk.html
Jak widać powyżej, do wyboru są trzy paczki zawierające gtk/gtk.h (jedna zawiera gtk/gtk.hh, druga gtk/gtk.html, które nie są tym, czego szukamy). Właśnie teraz jest moment, w którym należy dokonać właściwego wyboru - który zależy wyłącznie od Ciebie. Jeśli nie wiesz/nie jesteś pewien/pewna, która ma to być paczka, masz dwa rozwiązania:
- Zainstalować wszystkie trzy;
- Zainstalować jedna po drugiej i metodą prób i błędów odnaleźć tę właściwą.
W przykładowym poszukiwaniu, tę właściwą paczką jest libgtk2.0-dev, więc trzeba ją doinstalować:
sudo apt-get install libgtk2.0-dev
To raz możemy sprawdzić make’iem, czy to już wszystko:
~$ make
[...]
In file included from main.c:28:
awn-app.h:30:29: error: libwnck/libwnck.h: No such file or directory
In file included from main.c:28:
awn-app.h:60: error: expected specifier-qualifier-list before âWnckWindowâ
[...]
Cóż to tym razem? libwnck/libwnck.h? Żaden problem:
apt-file search libwnck/libwnck.h
libwnck-dev: usr/include/libwnck-1.0/libwnck/libwnck.h
Tym razem jedna paczka, więc pozostało tylko ją zainstalować:
sudo apt-get install libwnck-dev
4. A co na to Wajig?
Na koniec ciekawostka. Ponieważ opisałem jakiś czas temu władcę pakietów, Wajiga i używam go sobie na co dzień, to chciałbym nadmienić, że on także potrafi wyszukiwać pliki. Oczywiście, aby posiadł tę umiejętność, niezbędne jest wcześniejsze zainstalowanie apt-file. Jak to zrobić? Przedstawię na przykładzie. Ostatni poszukiwany plik - libwnck/libwnck.h:
wajig find-file libwnck/libwnck.h
libwnck-dev: /usr/include/libwnck-1.0/libwnck/libwnck.h
To już wszystko, życzę udanej zabawy (:
Ten wpis nie miałby miejsca, gdyby nie publikacja Falko Timme’a na HowtoForge - How To Search For Missing Packages With apt-file On Debian and Ubuntu
. Mój tekst jest jego luźnym tłumaczeniem oraz wyciągiem z własnych doświadczeń (;
Linki:
Oficjalna strona Wajiga
Krótki opis Wajiga
Opis programu, instalacji oraz podstawowych funkcji w serwisie DebianUsers.pl
Dobrze wiedzieć, że takie coś istnieje :)
[Odpowiedz]
Warto dodać, że bez instalowania czegokolwiek można przeszukać zawartość pakietów w repozytoriach dystrybucyjnych via http://WWW.
http://packages.ubuntu.com/
sekcja “Search the contents of packages”.
[Odpowiedz]
Tak, apt-file to bardzo pożyteczne narzędzie. Często korzystam też z “apt-file show PACZKA” (taki “dpkg -L” ale dla niezainstalowanych paczek)
BTW: apt-file pojawił się nawet niedawno na Debaday
[Odpowiedz]
@tolo: cieszę się, że się przydało (:
@byte i @POX: dzięki za linki i dodatkowe info. Pozwolę je sobie wykorzystać w Czytelni (:
[Odpowiedz]
BTW: radzę też sprawdzić dlocate - błyskawica w porównaniu do apt-file.
[Odpowiedz]
@POX: dlocate jest faktycznie szybkie, ale nie zawsze działa tak dokładnie jak apt-file, dlatego skłaniałbym się bardziej do używania go jako uzupełnienia (:
[Odpowiedz]