install je všestranný příkaz pro kopírování souborů v systémech Linux a macOS. Je ideální pro náročné uživatele, kteří hledají efektivitu. Přečtěte si tento článek a zjistěte, jak pracovat chytřeji – ne tvrději.
Table of Contents
Počkejte – není to pro instalaci softwaru?
Příkaz install může mít nejvíce zavádějící název ze všech linuxových příkazů. Ve skutečnosti neinstaluje žádný software. Pokud se pokoušíte nainstalovat softwarový balíček z příkazového řádku v Ubuntu nebo jiné distribuci založené na Debianu, použijte příkaz apt-get. V jiných distribucích Linuxu použijte místo toho nástroj pro správu balíčků vaší distribuce Linuxu – například dnf na Fedoře nebo zypper na openSUSE.
Co tedy instalace dělá?
Stručně řečeno, instalace kombinuje prvky z cp (kopírovat), chown (změnit vlastníka), chmod (změnit režim), mkdir (vytvořit adresář) a pás (proužkové symboly) příkazy. Umožňuje vám používat funkce všech těchto funkcí v jediné akci.
Instalační příkaz může:
Zkopírujte soubory jako příkaz cp.
Zvolte, zda chcete přepsat existující soubory.
Vytvořte cílový adresář, pokud neexistuje, například mkdir.
Nastavte příznaky uživatelských oprávnění souborů, stejně jako příkaz chmod.
Nastavte vlastníka souborů, stejně jako příkaz chown.
Odstraňte nepodstatná zavazadla ze spustitelných souborů, stejně jako příkaz strip.
Přes všechnu tuto funkci nemá příkaz install příliš mnoho možností zápasit s.
Kdy byste to použili
Instalační příkaz se pravděpodobně nebude používat každý den. Je to užitečné, ale jen pro určité situace. Jedním ze scénářů, kdy instalace přichází na řadu, je vývoj softwaru. Řekněme, že programujete nový nástroj. Budete muset provést testování mimo vývojové prostředí. Chcete-li to provést, musíte zkopírovat nové soubory programu do testovacího adresáře. Možná bude nutné vytvořit testovací adresář a pro soubory budete muset nastavit správná oprávnění a vlastnictví.
Protože vývoj je iterativní činnost, můžete tuto sekvenci akcí skončit mnohokrát. Příkaz install za vás udělá veškerou těžkou práci. Nakonec, když je váš nový nástroj připraven k nasazení, můžete jej pomocí instalace zkopírovat se správnými oprávněními do jeho konečného pracovního umístění.
Příklad
Programátor právě pracuje na novém nástroji zvaném ana. Skládá se ze spustitelného binárního souboru a databáze. Po testování je nutné jej zkopírovat do /usr/local/bin, aby byl dostupný pro všechny uživatele systému Linux. Budete muset nahradit názvy souborů a cesty k adresářům v našem příkladu za soubory a cesty, které používáte ve svém počítači, když používáte instalaci.
Dokud nebude připraven k vydání, bude testován v adresáři ~/test/ana. Členové skupiny geek budou mít oprávnění ke čtení a spouštění. Ostatní uživatelé budou mít také oprávnění ke čtení a spouštění. Příkaz install používá stejné číselné vyjádření pro oprávnění jako chmod. Náš programátor se rozhodl, že oprávnění musí být nastaveno na:
Vlastník: Číst, zapisovat a spouštět.
Skupina: Čtení a provádění.
Ostatní: Pouze provést.
Jak používat instalační příkaz
Pracovní adresář našeho fiktivního programátora je ~/work. Napsal program, zkompiloval jej a vytvořil binární soubor s názvem ana. Již vytvořil databázový soubor, se kterým ana pracuje, Words.db. Oba soubory jsou tedy připraveny k testování. Pojďme se na ně podívat:
ls -l ana Words.db
Nástroj ana, který právě napsal, vytváří anagramy z fráze poskytnuté na příkazovém řádku. Ověřovací testování je poměrně jednoduché.
Náš programátor zavolal ana s frází „biscuit“ a vše se zdá být v pořádku. Nyní chce zkopírovat tyto dva soubory do adresáře ~/test/ana, aby zjistil, zda nový nástroj funguje správně mimo vývojové prostředí. Vydává následující příkaz:
install -D -v ana Words.db -t ~/test/ana
Možnosti použité na příkazovém řádku byly:
D: V případě potřeby vytvořte adresáře, včetně nadřazených adresářů.
v: Podrobně, uveďte každý adresář tak, jak byl vytvořen, a každou kopii souboru tak, jak se provádí.
t: Cílový adresář.
Vidíme, že instalace vytvoří adresář ~/test a poté vytvoří adresář ~/test/ana. Soubory jsou uvedeny jeden po druhém při kopírování do cílového adresáře.
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 jeho vyvoláním v adresáři ~/test/ana.
Nástroj funguje podle očekávání, což je skvělé. Oprávnění však nejsou správná. Požadavek je nastavit členům skupiny geek tak, aby měli oprávnění ke čtení a spouštění, a aby ostatní uživatelé měli pouze spouštění.
Oba tyto problémy můžeme zcela jednoduše vyřešit pomocí následujícího příkazu. Všimněte si použití sudo ke spuštění příkazu s oprávněními root. To vyžadují volby -o a -g a. Při zadání příkazu budeme požádáni o heslo.
sudo install -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana
Volba -b (záloha) vytváří zálohy souborů před jejich přepsáním.
Volba -S (přípona) definuje příponu pro záložní soubory. Pokud nezadáte příponu, použije se ~ (tilda). Žádáme instalaci, aby používala příponu .bak.
Vlastníkem souboru jsme nastavili dave pomocí volby -o (vlastník).
Volba -g (skupina) vyžaduje název skupiny. Tím se stane skupina vlastníků souborů. Skupina, kterou budeme používat, se nazývá geek.
Volba -m (režim) nastavuje režimy souborů pro soubory pomocí standardní numerické syntaxe chmod.
Již nemusíme používat volbu -D (vytvořit adresáře), protože víme, že testovací adresář již existuje. Také jsme vynechali volbu -v (podrobné). Výpis souborů v našem adresáři ~/test/ana nám zobrazí podrobnosti o souboru:
ls -l
To potvrzuje, ž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ě.
dave je vlastníkem souborů.
Skupina geek je skupina vlastníků dvou souborů.
Pro každý soubor s názvem ana.bak a Words.db.bak byly vytvořeny záložní kopie.
Toho všeho bylo dosaženo pomocí jednoho příkazu. Elegantní.
Náš programátor provede nějaké poslední změny v nástroji a znovu zkompiluje. Soubory, které se změnily, je třeba zkopírovat do adresáře ~/test/ana z adresáře ~/work. Můžeme to udělat pomocí volby -C (porovnat). Pokud jsou zdrojový soubor a cílový soubor stejné, zdrojový soubor se nezkopí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.bakfile. Časové razítko na ana se také změnilo. Tyto změny jsou způsobeny tím, že sem byla zkopírována nová verze souboru.
ls -l
Velikost souboru a časové razítko souboru Words.db se nezměnily. V souboru Words.db nebyly provedeny žádné změny, takže nebyl zkopírován. U projektu s mnoha soubory může volba -C (porovnat) ušetřit spoustu času a hromadění pevného disku tím, že zkopíruje pouze ty soubory, které byly změněny.
Programátor znovu otestoval, že utilita ana nadále funguje.
Je čas použít install ke zkopírování souborů do adresáře /usr/local/bin. Tím bude nový nástroj dostupný pro všechny uživatele tohoto počítače se systémem Linux. Víme, že /usr/local/bin existuje, takže tento adresář nemusíme 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ů, takže není s čím porovnávat. Stejně tak není co zálohovat, takže můžeme odebrat volbu -b (záloha) a volbu -S (přípona).
sudo install -o dave -g geek -m 751 ana Words.db -t /usr/local/bin
Můžeme uvést, že soubory dorazily do /usr/local/bin:
ls -l
A jako poslední test změňme adresář na náš domovský adresář a uvidíme, zda odtud můžeme vyvolat náš nový nástroj.
Všimněte si, že jsme nemuseli před příkazem ana uvádět ./, což znamená, že se spouští z /usr/local/bin. Mise splněna.
Zmínili jsme, že instalace může odstranit nadbytečné 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íže uvedený příkaz nezahrnuje Words.db. Důvodem je, že Words.db je soubor databáze, nikoli binární spustitelný soubor. Pro zkopírování a zmenšení binárního souboru ana můžeme použít následující příkaz. Přidali jsme možnost -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 /usr/local/bin nám umožňuje porovnat velikost souboru ana s jeho záložní verzí. Soubor ana byl zmenšen na téměř 60 % své předchozí velikosti.
ls -l /usr/local/bin
Celkem
Příkaz install zajišťuje poměrně široké použití. Pro mnoho lidí to nebude používáno den za dnem, nebo možná z měsíce na měsíc. Navzdory tomu je příkaz install dobrým nástrojem, se kterým se můžete seznámit a mít jej ve svém arzenálu triků. Pro ty příležitosti, kdy to potřebujete, odmění vaši křivku učení zvýšením efektivity, jednoduchostí a jednoduše menším počtem stisknutí kláves.