Rozdíly

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

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
apt [2017/07/27 12:11]
Filip Jirsák typografické úpravy příkazů
apt [2019/02/25 18:21] (aktuální)
Řá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í.