apt

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Následující verze
Předchozí verze
apt [2012/07/22 00:24] – vytvořeno ubuntuapt [2019/02/25 18:21] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 1: Řádek 1:
  
 +
 +| |
 +
 +
 +{{.:apt.png}}
 +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 [[http://www.abclinuxu.cz/slovnik/linux|GNU/Linux systému]]. Při příchodu [[http://www.debian.org/|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 [[http://www.jobpilot.cz/profile/redhat/index.phtml|Red Hat]] rozhodl vytvořit vlastní balíkovací systém označován [[http://www.abclinuxu.cz/slovnik/rpm|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 ====
 +{{.:documentation.png}}
 +Všechny níže uvedené příkazy vyžadují zadávání v [[Terminál| terminálu]] [[Root sudo| 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 [[http://www.abclinuxu.cz/slovnik/repozitar|zdrojů]] a porovnání verze balíků. Ekvivalent v [[Synaptic| 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 [[Synaptic|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 =====
 +
 +{{.:example.png}} 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í:
 +
 +<code>
 +sudo apt-cache search racing game
 +</code>
 +
 +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í:
 +
 +<code>
 +apt-cache show torcs
 +</code>
 +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:
 +
 +<code>
 +sudo apt-cache policy torcs
 +</code>
 +Pěkné, chci to nainstalovat:
 +
 +<code>
 +sudo apt-get install torcs
 +</code>
 +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%%
 +
 +<code>
 +dpkg -L torcs | grep /usr/games/
 +</code>
 +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ě?
 +
 +<code>
 +apt-cache search torcs
 +</code>
 +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:
 +
 +<code>
 +apt-get clean
 +</code>
 +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:
 +
 +<code>
 +apt-get remove torcs
 +</code>
 +Asi už to hrát nikdy nebudu, smažu i konfigurační soubory:
 +
 +<code>
 +apt-get purge torcs
 +</code>
 +Pokud potřebujete nainstalovat starší verzi balíku, přidejte ji za název balíku, např.:
 +<code>
 +apt-get install firefox=3.0.7+nobinonly-0ubuntu0.8.10.1
 +</code>
 +Aktualizovat systém pomocí příkazové řádky (nepotřebujeme Správce aktualizací)
 +<code>
 +sudo apt-get update && sudo apt-get upgrade
 +</code>případně ještě
 +<code>
 +sudo apt-get dist-upgrade
 +</code>
 +===== Dodatečné balíky =====
 +
 +{{.:IconHammer2.png}}
 +%%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'':
 +
 +<code>
 + gksudo gedit ~/.bashrc
 +</code>
 +Nalezneme řádku ''# some more ls aliases'' a  pod ní můžeme například dopsat:
 +
 +<code>
 +    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'
 +</code>
 +{{.:warning.png}}
 +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 =====
 +
 +{{.:IconGlobe.png}}
 +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:
 +
 +<code>
 +export http_proxy=http://Váš_login:Vaše_heslo@Vaše_proxy_adresa:Váš_proxy_port
 +</code>
 +==== 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'':
 +
 +<code>
 +gksudo gedit /etc/apt/apt.conf
 +</code>
 +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:
 +
 +<code>
 +Acquire::http::Proxy "http://Váš_login:Vaše_heslo@Vaše_proxy_adresa:Váš_proxy_port";
 +</code>
 +Soubor uložíme a zavřeme.
 +
 +==== bashrc ====
 +
 +Tento postup přidá do nastavení [[http://www.abclinuxu.cz/slovnik/shell|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'':
 +
 +<code>
 +gedit ~/.bashrc
 +</code>
 +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:
 +
 +
 +<code>
 +http_proxy=http://Váš_login:Vaše_heslo@Vaše_proxy_adresa:Váš_proxy_port
 +export http_proxy
 +</code>
 +Uložíme soubor a zavřeme.
 +
 +===== Řešení problémů =====
 +
 +==== E: Problem with MergeList ====
 +Chyba vypadá nějak takto
 +<code>
 +E: Problem with MergeList /var/lib/apt/lists/<nějaký_dlouhý_název_Packages>
 +</code>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
 +<code>
 +sudo rm /var/lib/apt/lists/*
 +sudo apt-get update
 +</code>
 +První příkaz vymaže všechny soubory v daném adresáři.
 +Druhý je obnoví.