dpkg
dpkg je základním nástrojem pro správu balíků v systémech založených na Debianu. Proto nám dá odpověď na otázky týkající se nainstalovaných balíků, jako třeba s kterým se do systému dostal konkrétní soubor, pokud se tedy kopíroval přímo z balíku.
$ dpkg -S gee-1.0.vapi
libgee-dev: /usr/share/vala/vapi/gee-1.0.vapi
libgee-dev: /usr/share/vala/vapi/gee-1.0.vapi
Cesta k souboru musí být buď celá, nebo žádná, přičemž v případě vyhledávání podle názvu souboru bez cesty, nemusí být název kompletní. dpkg každopádně hledá přesný řetězec, žádné regulární výrazy neumí.
Když už jsem u dpkg, zmíním ještě jak vypsat všechny soubory, které se s konkrétním balíkem nainstalovaly a aby to bylo zajímavější, vyhodím z toho adresáře:
$ dpkg -L balík | while read line; do [ -f "$line" ] && echo $line; done
dlocate
dlocate umí v podstatě to samé, co dpkg s přepínači -l a -S, ale umí to zhruba 10x rychleji (řádově 0.03 s vs 0.3 s), seřazené podle abecedy a navíc umí používat regulární výrazy, k čemuž mu dopomáhá klasický grep.
$ sudo apt-get install dlocate
Jak už název napovídá, pracuje na stejném principu jako locate, tedy používá databázi, která se jednou denně aktualizuje z cronu. Vyhledávání pak může vypadat například takto:
$ dlocate -S 'gee.*vapi$'
libgee-dev: /usr/share/vala/vapi/gee-1.0.vapi
libgee-dev: /usr/share/vala/vapi/gee-1.0.vapi
Ruční aktualizaci databáze provedete příkazem:
$ sudo update-dlocatedb
apt-file
apt-file je napsaný v Perlu a doplňuje sadu nástrojů rodinky apt. Není v základní instalaci, ale je k mání v repozitáři universe:
$ sudo apt-get install apt-file
Po instalaci vám pravděpodobně vyskočí okno s možností aktualizace systémové cache aplikace, nebo můžete udělat aktualizaci ručně:
$ sudo apt-file update
Aktualizaci také nemusíte spouštět pod rootem, ale můžete si nechat udělat uživatelskou cache v $HOME. Vyhledávání pak vypadá podobně jako v předchozích případech, ale prohledávají se balíky ze všech repozitářů, které byly při předchozí aktualizaci načteny do cache, takže si naopak můžete dohledat balík, který je třeba doinstalovat, abyste mohli daný soubor využívat. To je ostatně daleko častější požadavek, než hledat balíky k již nainstalovaným souborům.
$ apt-file search -x 'gee.*vapi$'
libgee-dev: /usr/share/vala/vapi/gee-1.0.vapi
libgee-dev: /usr/share/vala/vapi/gee-1.0.vapi
Přepínač -x zajistí použití výrazu jako regulárního.
apt-cache
apt-cache zajišťuje vytahování informací týkajících se dostupných balíků. S parametrem (příkazem) search prohledává jména a popisy balíků, show zas ukáže podrobnosti konkrétního balíku. Zajímavý je i příkaz policy, který ukáže dostupné verze balíku, včetně zdrojů a jejich priorit. Také se dozvíte, zda je nainstalován a případně v jaké verzi:
$ apt-cache policy firefox
firefox:
Installed: 26.0+build2-0ubuntu0.13.10.2
Candidate: 26.0+build2-0ubuntu0.13.10.2
Version table:
*** 26.0+build2-0ubuntu0.13.10.2 0
500 http://cz.archive.ubuntu.com/ubuntu/ saucy-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu/ saucy-security/main amd64 Packages
100 /var/lib/dpkg/status
24.0+build1-0ubuntu1 0
500 http://cz.archive.ubuntu.com/ubuntu/ saucy/main amd64 Packages
firefox:
Installed: 26.0+build2-0ubuntu0.13.10.2
Candidate: 26.0+build2-0ubuntu0.13.10.2
Version table:
*** 26.0+build2-0ubuntu0.13.10.2 0
500 http://cz.archive.ubuntu.com/ubuntu/ saucy-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu/ saucy-security/main amd64 Packages
100 /var/lib/dpkg/status
24.0+build1-0ubuntu1 0
500 http://cz.archive.ubuntu.com/ubuntu/ saucy/main amd64 Packages
Jak je vidět, aktuální verzi firefoxu můžete nalézt hned ve dvou repozitářích. Zobrazená je i cesta k repozitáři, v běžném emulátoru terminálu bývá klikací, tak si ho můžete prošmejdit ve výchozím webovém prohlížeči.
Reverzní závislosti
Dalším zajímavým nástrojem apt-cache je příkaz rdepends, který zjistí všechny balíky závisející na jiném balíku. Sice už nejde o soubor, ale tématicky to není úplně mimo a rozhodně je to užitečné. Například:
apt-cache rdepends consolekit
apt-get
Jen tak pro zajímavost. Přesnou adresu, na které se nachází balík, který by byl aktuálně instalován, můžete vytáhnout ze simulace downloadu:
$ apt-get download --print-uris balík
To, že se balík skutečně nestáhne a jen vytiskne použitou adresu, velikost a hash, zajišťuje přepínač --print-uris.
Perfektní souhrn, já používám jen zlomek toho všeho, hlavně proto, že nerad instaluju "nadbytečné" věci. Udělal jsem si ale skript, který vezme soubor, a vypíše k němu všechny informace a la typ, odkud se vzal, náhled atd, to používám často.
OdpovědětVymazatUkaž skript :)
VymazatNic světoborného ;)
OdpovědětVymazathttp://paste.ubuntu.com/6749518/
Pěkné, dík za inspiraci :)
Vymazat