Příkaz install
je univerzální nástroj pro kopírování souborů v systémech Linux a macOS, který ocení zejména náročnější uživatelé hledající efektivitu. V tomto článku se dozvíte, jak s ním pracovat chytřeji, ne usilovněji.
Není to náhodou pro instalaci softwaru?
Možná vás překvapí, že název příkazu install
je poněkud zavádějící. Ve skutečnosti se totiž nejedná o nástroj pro instalaci softwaru. Pokud chcete instalovat balíčky softwaru z příkazové řádky v Ubuntu nebo jiných distribucích založených na Debianu, použijte příkaz apt-get
. V jiných distribucích Linuxu se obraťte na správce balíčků specifický pro vaši distribuci, například dnf
na Fedoře nebo zypper
na openSUSE.
Co tedy příkaz install
vlastně dělá?
Zjednodušeně řečeno, install
v sobě kombinuje funkčnost příkazů cp
(kopírování), chown
(změna vlastníka), chmod
(změna oprávnění), mkdir
(vytvoření adresáře) a strip
(odstranění symbolů). Umožňuje vám provádět operace, které byste jinak museli řešit pomocí několika různých příkazů.
Příkaz install
dokáže:
- Kopírovat soubory, podobně jako příkaz
cp
. - Umožňuje rozhodnout, zda se mají existující soubory přepsat.
- Vytvořit cílový adresář, pokud neexistuje, jako to dělá
mkdir
. - Nastavit oprávnění pro uživatele a skupiny, podobně jako
chmod
. - Změnit vlastníka souborů, stejně jako
chown
. - Odstranit nepotřebné informace ze spustitelných souborů, jako to dělá
strip
.
Ačkoli má mnoho funkcí, příkaz install
nemá přehnaně mnoho možností.
Kdy je vhodné ho použít?
Příkaz install
pravděpodobně nebudete potřebovat každý den. Je to užitečný nástroj pro specifické situace. Jedním z příkladů je vývoj softwaru. Představte si, že programujete nový nástroj. Před jeho nasazením do produkčního prostředí je nutné ho otestovat. K tomu je potřeba zkopírovat soubory nového programu do testovacího adresáře. Možná budete muset tento adresář vytvořit a pro soubory nastavit správná oprávnění a vlastnictví.
Vzhledem k iterativní povaze vývoje se může stát, že budete tyto akce provádět opakovaně. Příkaz install
vám v tomto ohledu usnadní práci. Nakonec, když je váš nový nástroj připraven k nasazení, můžete ho pomocí příkazu install
snadno zkopírovat na jeho finální umístění se správnými oprávněními.
Praktický příklad
Představme si programátora, který pracuje na novém nástroji s názvem „ana“. Tento nástroj se skládá ze spustitelného binárního souboru a databáze. Po testování je potřeba zkopírovat oba soubory do adresáře /usr/local/bin
, aby byly dostupné všem uživatelům systému Linux. Je důležité, abyste si názvy souborů a cest k adresářům v tomto příkladu přizpůsobili podle vašeho konkrétního počítače, až budete s příkazem install
pracovat.
Dokud nebude nástroj připraven k vydání, testuje se v adresáři ~/test/ana
. Členové skupiny „geek“ mají mít oprávnění ke čtení a spouštění, stejně tak i ostatní uživatelé. Pro nastavení oprávnění používá příkaz install
číselnou reprezentaci, kterou známe z příkazu chmod
. Náš programátor se rozhodl, že oprávnění by měla být následující:
- Vlastník: čtení, zápis a spouštění.
- Skupina: čtení a spouštění.
- Ostatní: pouze spouštění.
Použití příkazu install
Pracovním adresářem našeho fiktivního programátora je ~/work
. Napsal program, zkompiloval ho a vytvořil binární soubor s názvem ana
. Stejně tak už vytvořil databázový soubor Words.db
. Oba soubory jsou připraveny k testování. Podívejme se na ně:
ls -l ana Words.db
Nástroj ana
vytváří anagramy z fráze zadané na příkazovém řádku. Ověřovací testování je vcelku jednoduché.
Náš programátor spustil ana
s frází „biscuit“ a vše zdá se být v pořádku. Nyní chce zkopírovat tyto dva soubory do adresáře ~/test/ana
, aby zjistil, zda nástroj funguje správně mimo vývojové prostředí. Použije následující příkaz:
install -D -v ana Words.db -t ~/test/ana
Použité možnosti na příkazové řádce byly:
D
: Vytvořit adresáře včetně nadřazených, pokud je to nutné.v
: Podrobný výstup, zobrazit každý vytvořený adresář a zkopírovaný soubor.t
: Cílový adresář.
Vidíme, že příkaz install
nejprve vytvořil adresář ~/test
a poté adresář ~/test/ana
. Během kopírování souborů do cílového adresáře jsou soubory postupně vypisovány.
Výpis souborů v ~/test/ana
potvrzuje, že byly zkopírovány správně.
ls -l
Dalším krokem je otestovat obslužný program ana
spuštěním z adresáře ~/test/ana
.
Nástroj funguje dle očekávání, což je skvělé. Oprávnění však nejsou správně nastavena. Požadavek je nastavit členům skupiny „geek“ oprávnění pro čtení a spouštění a pro ostatní uživatele pouze spouštění.
Oba problémy můžeme vyřešit pomocí následujícího příkazu. Je důležité si povšimnout použití příkazu sudo
, který spustí příkaz s oprávněními roota. To je nutné pro volby -o
a -g
. Po zadání příkazu budete vyzváni k zadání hesla.
sudo install -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana
Jednotlivé volby mají následující význam:
-b
(záloha): Vytvoří zálohy souborů před jejich přepsáním.-S
(přípona): Definuje příponu pro záložní soubory. Pokud příponu neuvedete, použije se~
(tilda). V tomto případě žádámeinstall
, aby používal příponu.bak
.-o
(vlastník): Nastavuje vlastníka souborů nadave
.-g
(skupina): Nastavuje skupinu vlastníků souborů nageek
.-m
(režim): Nastavuje oprávnění souborů pomocí číselné syntaxechmod
.
Už nepotřebujeme volbu -D
(vytvořit adresáře), protože víme, že testovací adresář již existuje. Vynechali jsme také volbu -v
(podrobný výpis). Následující výpis souborů v adresáři ~/test/ana
nám ukáže, že jsou oprávnění nastavena správně:
ls -l
Tímto jsme ověřili, že všechny naše požadavky byly splněny:
- Soubory byly zkopírovány do testovacího adresáře.
- Oprávnění byla nastavena správně.
- Vlastníkem souborů je uživatel
dave
. - Skupina
geek
je skupinou vlastníků obou souborů. - Pro oba soubory byly vytvořeny záložní kopie s příponou
.bak
(ana.bak
aWords.db.bak
).
Toho všeho jsme dosáhli pomocí jediného příkazu. Efektivní, že?
Náš programátor provedl několik posledních změn v nástroji a znovu ho zkompiloval. Změněné soubory je potřeba zkopírovat do adresáře ~/test/ana
z adresáře ~/work
. Můžeme k tomu použít volbu -C
(porovnat). Pokud jsou zdrojový a cílový soubor stejné, zdrojový soubor se nepřekopíruje.
sudo install -C -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana
Výpis souborů v cílovém adresáři nám ukazuje, že se velikost souboru ana
změnila. Je větší než soubor ana.bak
. Změnil se také čas posledního upravení. Tyto změny jsou důsledkem překopírování nové verze souboru.
ls -l
Velikost souboru a čas posledního upravení souboru Words.db
se nezměnily. V souboru Words.db
nebyly provedeny žádné změny, proto nebyl překopírován. U projektů s větším počtem souborů může volba -C
(porovnat) ušetřit spoustu času a místa na pevném disku tím, že překopíruje pouze změněné soubory.
Programátor znovu otestoval, že nástroj ana
funguje i nadále správně.
Nyní je na čase použít příkaz install
pro zkopírování souborů do adresáře /usr/local/bin
. Tím se nový nástroj stane dostupným pro všechny uživatele tohoto počítače se systémem Linux. Protože víme, že adresář /usr/local/bin
již existuje, nemusíme ho vytvářet. Můžeme použít upravenou verzi našeho posledního příkazu.
Změnili jsme cílový adresář na /usr/local/bin
. Odebrali jsme volbu -C
(porovnat), protože v cílovém adresáři zatím nejsou žádné kopie těchto souborů, tudíž není s čím porovnávat. Také není co zálohovat, proto můžeme odstranit i volby -b
(záloha) a -S
(přípona).
sudo install -o dave -g geek -m 751 ana Words.db -t /usr/local/bin
Můžeme se přesvědčit, že soubory byly zkopírovány do adresáře /usr/local/bin
:
ls -l
Jako poslední test změníme aktuální adresář na domovský a uvidíme, zda odtud můžeme spustit nový nástroj.
Všimněte si, že před příkazem ana
jsme nemuseli zadávat ./
, což znamená, že se spouští z adresáře /usr/local/bin
. Mise splněna.
Zmínili jsme se, že příkaz install
může odstranit nepotřebné tabulky symbolů a další „zavazadla“ z binárního souboru, aby se zmenšila jeho velikost. Udělejme to teď. Všimněte si, že následující příkaz neobsahuje Words.db
. Důvodem je, že Words.db
je databázový soubor, ne spustitelný binární soubor. Pro překopírování a zmenšení binárního souboru ana
můžeme použít následující příkaz. Přidali jsme volbu -s
(zmenšit) s malým písmenem „s“. Znovu jsme přidali volbu -b
(záloha) a volbu -S
(přípona) s velkým písmenem „S“.
sudo install -s -b -S .bak -o dave -g geek -m 751 ana -t /usr/local/bin
Výpis souborů v adresáři /usr/local/bin
nám umožňuje porovnat velikost souboru ana
s jeho záložní verzí. Velikost souboru ana
se zmenšila na přibližně 60 % původní velikosti.
ls -l /usr/local/bin
Závěrem
Příkaz install
je poměrně všestranný. Mnoho lidí ho pravděpodobně nebude používat každý den, možná ani každý měsíc. Nicméně, install
je užitečný nástroj, se kterým se vyplatí se seznámit a mít ho ve svém arzenálu. V situacích, kdy ho budete potřebovat, se vám vynaložené úsilí na jeho osvojení vrátí v podobě zvýšené efektivity, jednoduchosti a menšího počtu stisknutí kláves.