Správa balíků pomocí apt-get jde ruku v ruce s zdrojem softwaru uloženým v /etc/apt/sources.list. Informace o správě zdrojů softwaru naleznete v Přidávání zdrojů.
Úvod
„ Na počátku byl .tar.gz. Uživatel musel kompilovat každý program, který chtěl použít na svůj GNU/Linux systému. Při příchodu Debianu bylo nezbytné vytvořit nějaký systém správy softwaru. Systém správy softwaru byl pojmenován dpkg. Tento slavný balíkovací systém přišel na GNU/Linux chvíli předtím, než se Red Hat rozhodl vytvořit vlastní balíkovací systém označován rpm.
Nové dilema přišlo na vývojáře GNU/Linux. Potřebovali rychlý, praktický a efektivní nástroj na instalaci balíků, který by spravoval závislosti knihoven automaticky a převzal starost o jejich aktualizace. To se opět povedlo vývojářům z Debian a na svět přišlo APT (the Advance Packaging Tool = Pokročilý balíkovací systém). Systém byl portován Conectivou pro použití s rpm balíky a je adoptován dalšími distribucemi.“
– převzato z Debian APT HOWTO
Příkazy
apt-get
Všechny níže uvedené příkazy vyžadují zadávání v terminálu s právy administrátora (tj. s příkazem sudo
). Text název_balíku nahraďte názvem balíku, s kterým chcete pracovat, název_souboru nahraďte názvem Vámi hledaného souboru.
Kompletní aktualizaci Ubuntu z příkazové řádky provedou níže uvedené příkazy apt-get update a apt-get upgrade.
apt-get install <název_balíku>
nainstaluje balík
apt-get install <název_balíku>=<verze>
nainstaluje danou verzi balíku
apt-get remove <název_balíku>
odstraní nainstalovaný balík (konfigurační soubory zůstanou)
apt-get purge <název_balíku>
odstraní nainstalovaný balík i se systémovými konfiguračními soubory (vaše osobní zůstanou) Malý trik: když chcete odstranit balík foo a nainstalovat balík bar v jednom kroku: apt-get purge foo bar+
apt-get autoremove <název_balíku>
odstraní nainstalovaný balík i s jeho závislými balíky, které už nejsou jinde potřeba
apt-get update
Dojde k novému načtení balíků ze zdrojů a porovnání verze balíků. Ekvivalent v Synapticu je ikonka Obnovit, nebo “zkontrolovat aktualizace” ve Windows, nebo OS X. Spusťte vždy po změně /etc/apt/sources.list, nebo /etc/apt/preferences. Využívejte tohoto příkazu pravidelně, aby byl seznam balíků aktuální. (Pro kompletní aktualizaci samotný apt-get update nestačí - po něm je třeba ještě použít následující příkaz apt-get upgrade).
apt-get upgrade
aktualizuje všechny nainstalované balíky na nejnovější verzi. Před použitím je nutno nejprve zaktualizovat zdroje pomocí apt-get update. Neinstaluje balíky nové a žádné automaticky nemaže. Z toho také plyne, že pokud upgrade nějakého balíku na novější verzi by vyžadoval instalaci nebo odstranění nějakého jiného, k jeho upgradu nedojde - k tomu slouží příkaz apt-get dist-upgrade
. Ekvivalent v Synapticu je Aktualizovat vše a následné kliknutí na Použít. (Příkaz upgrade po update dokončí kompletní aktualizaci Ubuntu).
apt-get dist-upgrade
upgraduje balíky i za cenu toho, že bude potřeba některé balíky odstranit nebo nainstalovat. Neznamená automaticky přechod na novou verzi systému. K té dojde jen tehdy, pokud si upravíte zdroje, např. změníte odkazy z karmic
na lucid
. Toto ale není vhodná cesta k přechodu na novější verzi Ubuntu viz: Přechod na novější verzi systému.
apt-get autoremove
odstraní všechny nepotřebné balíky, které byly staženy jen jako závislosti jiných balíků. Občas použijte pro uvolnění místa na disku.
apt-get autoclean
ve /var/cache/apt/archives/
se ukládají stažené balíky pro pozdější použití, tímto příkazem smažete všechny nepotřebné (nenainstalované) místo na disku zabírající balíky. Potřebujete-li zoufale uvolnit místo na disku, použijte apt-get clean.
- V Synapticu lze nastavit, aby se stažené balíky neukládaly, ale hned po instalaci smazaly.
- Velikost adresáře
/var/cache/apt/archives
zjistíte pomocídu -sh /var/cache/apt/archives
apt-get clean
smaže balíky již nainstalovaného softwaru. Software zůstane nainstalován, balíky jsou pouze potřeba k samotné instalaci.
apt-get -f install
Stejné jako Akce → Odstranit balíky které jsou v konfliktu a klik na Použít v Synapticu. Dojde k odstranění balíků se špatnými závislostmi.
apt-cache
apt-cache search <vzor>
vyhledá balík obsahující ve svém názvu „vzor“.
apt-cache show <název_balíku>
ukáže informace o balíku „název_balíku“.
apt-cache showpkg <název_balíku>
Ukáže podrobnější informace o balíku.
dpkg
dpkg -l <vzor>
seznam instalovaných balíků odpovídající vzoru. Užitečné pokud neznáte správný název balíku.
dpkg -L <název_balíku>
ukáže soubory, které má instalované balík „název_balíku“ v systému
dpkg -S <název_souboru>
vyhledá balík, ze kterého pochází soubor „název_souboru“. Tento postup je inverzní oproti dpkg -L název_balíku, je užitečný jako odpověď na otázku „Z kterého balíku přišel tento soubor?“
dpkg -c <foo.deb>
jaké soubory obsahuje balík „foo.deb“. Zobrazí se to, co přibude ve Vašem systému po nainstalovaní balíku „foo.deb“, který jste si ručně stáhli.
dpkg-reconfigure <název_balíku>
přenastaví balík „název_balíku“. Pozor, při provedení tohoto příkazu u některých balíku můžete být dotazováni na upřesňující informace. Například: dpkg-reconfigure fontconfig-config
zobrazí nabídku konfigurace fontů v Ubuntu.
dpkg --set-selections
echo „foo hold“ | dpkg –set-selections
- uzamkne balík „foo“, to znamená, že daný balík se nebude aktualizovat na novou verzi. Stejné jako v Synapticu Balík → Uzamknout verzi.- Poznámka: apt-get dist-upgrade ignoruje toto nastavení, ale budete varováni.
echo „foo install“ | dpkg –set-selections
- odstraní zámek z balíku
Příklad použití APT
Chci cítit vítr ve vlasech, chci si užít adrenalin z rychlosti … nainstaluji si nějakou závodní automobilovou hru. Ale jaké hry závodní hry jsou k mání:
sudo apt-cache search racing game
Tento příkaz mi dá mnoho odpovědí. Bohužel velká část her je v angličtině a tak nemůžete vyhledávat frázi závodní hra, ale musíte si pojem přeložit: racing game. Ze seznamu mě zaujala hra s názvem torcs, tak se podívám na nějaké bližší informace o ní:
apt-cache show torcs
Hmm … to vypadá zajímavě. Ale nemám již tuto hru instalovanou na počítači? Jaká verze je vlastně dostupná? V kterém zdroji se nachází? Není nic snazšího než se optat:
sudo apt-cache policy torcs
Pěkné, chci to nainstalovat:
sudo apt-get install torcs
Jaký příkaz zadat do konzole ke spuštění hry? Mno dobře, v tomto případě je to docela zřejmé torcs. Ale ne vždy je to tak jasné. Jedna možnost jak to zjistit, je podívat se jaké soubory z balíku jsou nainstalovány v /usr/bin. Pro hry je dobré též se podívat do /usr/games. Administrativní programy hledat v /usr/sbin
dpkg -L torcs | grep /usr/games/
První část příkazu zobrazí instalované soubory balíkem torcs. Druhá část vyfiltruje jen názvy souborů obsahující /usr/games.
Hmm, hra je super. Možná by to chtělo nějaké další tratě?
apt-cache search torcs
Zobrazí se nám další dva balíky, které můžeme nainstalovat.
Ale ne, dochází mi volné místo na disku, musím promazat nepotřebné balíky:
apt-get clean
A jé, máma se ptá jestli bych mohl odstranit všechny hry z tohoto počítače. Vyhovím, ale nechám si schované konfigurační soubory na jindy:
apt-get remove torcs
Asi už to hrát nikdy nebudu, smažu i konfigurační soubory:
apt-get purge torcs
Pokud potřebujete nainstalovat starší verzi balíku, přidejte ji za název balíku, např.:
apt-get install firefox=3.0.7+nobinonly-0ubuntu0.8.10.1
Aktualizovat systém pomocí příkazové řádky (nepotřebujeme Správce aktualizací)
sudo apt-get update && sudo apt-get upgrade
případně ještě
sudo apt-get dist-upgrade
Dodatečné balíky
deborphan a debfoster jsou užitečné programy pro hledání osiřelých a nepotřebných balíků k odstranění.
Zrychlení práce v Terminálu
Pro zrychlení práce si lze vytvořit aliasy. Alias přestavuje zkratku pro příkaz, nebudeme muset vypisovat apt-get install, ale stačí jen napsat agi. Pro tvorbu aliasů si v textovém editoru otevřeme ~/.bashrc
:
gksudo gedit ~/.bashrc
Nalezneme řádku # some more ls aliases
a pod ní můžeme například dopsat:
alias acs='apt-cache search' alias agu='sudo apt-get update' alias agg='sudo apt-get upgrade' alias agd='sudo apt-get dist-upgrade' alias agi='sudo apt-get install' alias agr='sudo apt-get remove'
Pakliže s prací v Terminálu teprve začínáte, nepoužívejte hned aliasy. Je vhodné počkat než se vám příkazy dostanou trochu „pod kůži“ a až pak si nějaké aliasy vytvořit. Jinak nebudete své práci v terminálu moc rozumět! … Toto vše platí obecně pro jakoukoliv tvorbu aliasů (zkratek) v Terminálu.
Nastavení apt-get s využitím http-proxy
K využití apt-get s htttp-proxy využijte jednu z následujících tří variant nastavení. Každá se hodí pro trochu jiné využití, pečlivě si vyberte:
dočasné
Toto je varianta vhodná pro dočasné řešení. Ručně můžete nastavit http-proxy pokaždé když se Vám to hodí pro trvalé řešení jsou efektivnější jiné metody.
Vložte následující řádek do terminálu a výraz Vaše_proxy_adresa a Váš_proxy_port nahraďte vhodnými údaji:
export http_proxy=http://Váš_login:Vaše_heslo@Vaše_proxy_adresa:Váš_proxy_port
apt.conf
Tato varianta využívá nastavení v souboru /etc/apt/apt.conf
. Tato metoda je užitečná, chcete-li apt-get (ne jiné aplikace) používat přes http-proxy trvale.
Otevřeme si v textovém editoru apt.conf
:
gksudo gedit /etc/apt/apt.conf
A přidáme tuto řádku. Výrazy Váš_login, Vaše_heslo, Vaše_proxy_adresa a Váš_proxy_port nahraďte vhodnými údaji:
Acquire::http::Proxy "http://Váš_login:Vaše_heslo@Vaše_proxy_adresa:Váš_proxy_port";
Soubor uložíme a zavřeme.
bashrc
Tento postup přidá do nastavení Bashe dvě řádky. Postup je vhodný, chcete-li používat apt-get a další jiné aplikace jako výzvu k využití wgetu, s použitím http-proxy.
Nejprv si otevřeme v textovém editoru ~/.bashrc
:
gedit ~/.bashrc
Přidáme následující řádky na konec souboru. Výrazy Váš_login, Vaše_heslo, Vaše_proxy_adresa a Váš_proxy_port nahraďte vhodnými údaji:
http_proxy=http://Váš_login:Vaše_heslo@Vaše_proxy_adresa:Váš_proxy_port export http_proxy
Uložíme soubor a zavřeme.
Řešení problémů
E: Problem with MergeList
Chyba vypadá nějak takto
E: Problem with MergeList /var/lib/apt/lists/<nějaký_dlouhý_název_Packages>
Došlo k poškození uvedeného souboru. Náprava je jednoduchá
- zkontrolujte, že ve výpisu chyby jde opravdu o adresář /var/lib/apt/lists, a ne jiný
- zavřete všechny programy, které instaluji balíky nebo programy
- otevřete Terminál a zadejte tyto dva příkazy
sudo rm /var/lib/apt/lists/* sudo apt-get update
První příkaz vymaže všechny soubory v daném adresáři. Druhý je obnoví.