Lekce 14 - Linuxový terminál (Bash) - Správa aplikací
V předchozí lekci, Linuxový terminál (Bash) - Archivace a komprese, jsme se naučili co je to archivace, komprese a komprimace. Ukázali jsme si jak archivovat soubory programem tar a jak zmenšit jejich velikost nástroji gzip, bzip2 a zip.
V dnešní lekci Linux tutoriálu se podíváme hlouběji na aplikace. Vysvětlíme si, jak se program v Linuxu distribuuje pomocí balíčků, kde se uchovává a jak se k němu dostaneme přes příkazový řádek. Naučíme se nejen programy instalovat z repozitářů, ale i vyhledávat a jednoduše o nich získat potřebné informace.
Softwarový balíček
Dříve instalace programu vyžadovala, aby uživatel stáhl
zdrojový kód, zkompiloval ho do binárního
kódu a uložil do systému. Dnes je toto nahrazeno
automatizací pomocí softwarových balíčků
a nástrojů pro práci s nimi. Softwarový balíček je komprimovaný soubor,
který obsahuje veškeré potřebné informace k instalaci a následné
odinstalaci programu. V distribucích založených na Debianu,
jako je i Ubuntu, je software komprimovaný do balíčku s
příponou .deb
.
DPKG
V Ubuntu a jiných distribucích založených na Debianu manipulaci se
softwarovými balíčky provádí program DPKG
. Je to
nízkoúrovňový program, s kterým my jako uživatelé nepřijdeme přímo do
styku. Pouze mu předáváme pokyny prostřednictvím jiných programů, např.
APT
. Díky DPKG
můžeme instalaci balíčků s
koncovkou .deb
automatizovat.
Repozitář
Aplikace v podobě balíčků jsou umístěny v repozitáři. Repozitář si můžeme představit jako centrální úložiště pro software, ze kterého si my uživatelé aplikace stahujeme. Nejčastěji se jedná o server, ke kterému přistupujeme přes internet, ale můžeme si vytvořit repozitář i z lokálního adresáře nebo USB disku. Výhodami šíření software pomocí repozitářů jsou pohodlná instalace pomocí správce balíčků a kompatibilita programů. Málokdy se stane, že by program z oficiálního repozitáře distribuce nebyl stoprocentně kompatibilní se systémem. Některé balíčky v repozitáři mají pro své správné fungování vytvořené závislosti na jiných balíčkách. Tyto balíčky jsou uloženy ve stejném repozitáři a při pokynu k instalaci se stáhnou současně.
Správa repozitářů
Většina distribucí má více repozitářů podle účelu, pro který jsou
určeny. Cesty jsou uloženy v souboru /etc/apt/sources.list
.
Ubuntu má v tomto souboru standardně uložené cesty k několika základním
repozitářům. Chceme-li získat software z jiného repozitáře, je
zapotřebí zapsat cestu na nový řádek do tohoto souboru. Cesta je k
nalezení většinou na webu repozitáře nebo samotné distribuce a vždy
začíná slovem deb
.
APT
Program apt
slouží ke komunikaci s DPKG
a k jeho
ovládání. Umožňuje nám pohodlně instalovat a odinstalovat balíčky,
vyhledávat a získávat informace o balíčcích v našich repozitářích.
Program apt
je uživatelsky velmi přívětivý. Jednotlivé
příkazy jsou jednoduché a snadno zapamatovatelné. K použití je zapotřebí
oprávnění root a příkaz sudo
.
Update
V systémech jako jsou Windows není snadné udržet aktuálnost všech
programů, jelikož ne všechny mají funkci automatické aktualizace.
Aktualizace nám nezajišťují jen správnou funkčnost, ale i lepší
zabezpečení proti útočníkům. Jelikož Linuxové systémy využívají k
distribuci softwaru repozitáře, ke všem aktuálním verzím se snadno
dostaneme pomocí jednoho příkazu update
:
sudo apt update
Upgrade
Nejnovější verze našich aplikací z repozitáře aktualizujeme
jednoduchým příkazem upgrade
:
sudo apt upgrade
Vyhledávání balíčků
Pokud si chceme ověřit, zda máme k dispozici v repozitářích jeden
konkrétní balíček, využijeme příkaz apt-cache search
:
sudo apt-cache search apache2
Tímto příkazem vyhledáme nejen všechny balíčky obsahující klíčové
slovo apache2, ale i všechny balíčky, na které je odkázána nějaká
závislost. Pro přesnější vyhledávání v seznamu dostupných balíčků
můžeme využít i filtrování pomocí grep
:
sudo apt-cache search apache2 | grep http -i apache2 - Apache HTTP Server apache2-bin - Apache HTTP Server (modules and other binary files) apache2-data - Apache HTTP Server (common files) apache2-dev - Apache HTTP Server (development headers) apache2-doc - Apache HTTP Server (on-site documentation) apache2-ssl-dev - Apache HTTP Server (mod_ssl development headers) apache2-utils - Apache HTTP Server (utility programs for web servers) apache2-suexec-custom - Apache HTTP Server configurable suexec program for mod_suexec apache2-suexec-pristine - Apache HTTP Server standard suexec program for mod_suexec libapache2-mod-evasive - evasive module to minimize HTTP DoS or brute force attacks libapache2-mod-svn - Apache Subversion server modules for Apache httpd
Přepínač -i
znamená ignore case
,
neboli ignorovat rozdíl mezi velkými a malými písmeny.
K vyhledávání balíčků můžeme použít i příkaz
apt list
. Parametr v tomto případě neslouží jako klíčové
slovo, ale je třeba zadat přesný název programu. Vrátí nám proto pouze
hlavní balíčky bez závislostí:
sudo apt list apache2 apache2/jammy-updates,jammy-security,now 2.4.52-1ubuntu4.1 amd64 apache2/jammy-updates,jammy-security 2.4.52-1ubuntu4.1 i386
Umožňuje nám také využít i některé nastavení, např. vypsat seznam pouze nainstalovaných balíčků:
sudo apt list --installed
Informace o balíčku
Před odebráním nebo instalací nám někdy mohou být užitečné
informace o velikosti, verzi, zdroji nebo závislostech balíčku. K tomu nám
poslouží příkaz apt show
:
david@david:/$ sudo apt show apache2 Package: apache2 Version: 2.4.52-1ubuntu4.1 Priority: optional Section: web Origin: Ubuntu Maintainer: Ubuntu Developers <[email protected]> Original-Maintainer: Debian Apache Maintainers <[email protected]> Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 546 kB Provides: httpd, httpd-cgi Pre-Depends: init-system-helpers (>= 1.54~) Depends: apache2-bin (= 2.4.52-1ubuntu4.1), apache2-data (= 2.4.52-1ubuntu4.1), apache2-utils (= 2.4.52-1ubuntu4.1), lsb-base, mime-support, perl:any, procps Recommends: ssl-cert Suggests: apache2-doc, apache2-suexec-pristine | apache2-suexec-custom, www-browser, ufw Conflicts: apache2.2-bin, apache2.2-common Replaces: apache2.2-bin, apache2.2-common Homepage: https://httpd.apache.org/ Task: lamp-server Download-Size: 97,8 kB APT-Manual-Installed: yes APT-Sources: http://cz.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages Description: Apache HTTP Server The Apache HTTP Server Project's goal is to build a secure, efficient and extensible HTTP server as standards-compliant open source software. The result has long been the number one web server on the Internet. . Installing this package results in a full installation, including the configuration files, init scripts and support scripts. N: There is 1 additional record. Please use the '-a' switch to see it
Instalace z repozitáře
Zjistili jsme název programu a nyní můžeme přejít k instalaci. Pro
nainstalování stačí k apt
připojit install
a
název balíčku.
sudo apt install apache2
Odinstalace
Podobně jako instalovat, lze program i odinstalovat. Pokud neznáme přesný název balíčku, který chceme odstranit, můžeme ho vyhledat pomocí klíčového slova:
sudo apt list –installed | grep apache
K odstranění balíčku slouží dva příkazy:
sudo apt remove apache2
nebo:
sudo apt purge apache2
Rozdíl mezi nimi je ten, že remove
odstraní zadaný
balíček, zatímco purge
odstraní i všechny ostatní balíčky
instalované jako závislosti, či případné konfigurační soubory
programu.
Umístění programů
Většina spustitelných programů se instaluje do předem definovaných
adresářů. Pokud zadáme do terminálu např. příkaz less
, Bash
prohledá všechny tyto adresáře. Pokud se v některém z nich program
less
nachází, spustí ho. Pokud ho nenajde, vrátí chybovou
zprávu less: command not found
.
Všechny tyto adresáře jsou uložené v systémové proměnné
PATH
, oddělené dvojtečkou. Vypsat si je můžeme pomocí
příkazu echo
:
david@david:/$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin
Pokud je program nainstalovaný v adresáři, který není v této proměnné, můžeme ho ručně přidat např. takto:
expand $PATH=PATH:/home/David/
Dokud nebude adresářová cesta zapsaná v PATH
, musíme pro
spuštění zadat celou cestu k programu.
Instalace programu bez repozitáře
Ne každý program lze získat z repozitáře. Někdy je k dispozici pouze na serveru vydavatele, odkud si ho musíme stáhnout a nainstalovat ručně. Jedním z takových programů je prohlížeč Google Chrome, který si nyní nainstalujeme:
Stažení instalačního souboru
Pro stažení instalačního souboru potřebujeme URL odkaz na balíček s
příponou .deb
, který připojíme k wget
, příkazu
určenému ke stahování z internetu:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
Takto se soubor stáhne do adresáře, ve kterém se aktuálně nacházíme.
Pro zadání konkrétního adresáře ke stažení slouží přepínač
-P
:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -P /home/David/Downloads
Instalace ze souboru
Pokud máme stažený balíček s příponou .deb
, můžeme
program nainstalovat:
sudo apt install /home/David/Downloads/google-chrome-stable_current_amd64.deb
Tímto máme Google Chrome úspěšně nainstalovaný.
V další lekci, Linuxový terminál (Bash) - Administrace sítového rozhraní, se podíváme na síťové rozhraní. Ukážeme si, jak získat informace o naší síti a jak nastavit síťové rozhraní zápisem do konfiguračního souboru.