Tato příručka vysvětluje, co je Apk správce balíčků a jak provádět různé operace správy balíčků Alpine Linux pomocí správce balíčků příkazového řádku Apk s příklady.
Stručný úvod do správce balíčků apk
Apk, znamená A lpine P ackage K eeper, je výchozí správce balíčků pro Alpine Linux. Používá se k instalaci, aktualizaci, upgradu, vyhledávání, seznamování a odstraňování balíčků na běžícím systému Alpine Linux. Apk je součástí apk-tools
balíček, který je předinstalován ve všech verzích Alpine Linux.
Apk načte balíčky a také informace o dostupných balíčcích v online úložištích. Každé úložiště obsahuje speciální indexový soubor s názvem APKINDEX.tar.gz
. Všechny softwarové balíčky uložené v úložišti jsou digitálně podepsány tar.gz
archiv. Mají příponu .apk
, a často se jim říká "a-packy" .
Počínaje Alpine Linuxem verze 3.3 jsou ve výchozím nastavení povolena dvě úložiště. Jsou - main
a community
.
[main]
úložiště se skládá z balíčků, které jsou důkladně testovány a oficiálně podporovány základním týmem Alpine Linux. [community]
úložiště obsahuje komunitou podporované balíčky, které jsou přijímány z [testing]
nebo [edge]
úložiště. [testing]
repozitář má obvykle nové, poškozené a/nebo zastaralé balíčky. Pro toto úložiště není poskytována žádná podpora a není zahrnuto ve snímcích vydání.
Všechna úložiště se konfigurují v /etc/apk/repositories
soubor. Pojďme se podívat na obsah tohoto souboru pomocí cat
příkaz:
$ cat /etc/apk/repositories
Ukázkový výstup:
https://sjc.edge.kernel.org/alpine/edge/main
https://sjc.edge.kernel.org/alpine/edge/community
Každý řádek ve výše uvedeném souboru označuje úložiště. Jak můžete vidět ve výše uvedeném výstupu, povolil jsem [edge]
repozitář, takže jde o průběžnou verzi.
Pokud používáte stabilní verzi, měli byste vidět číslo verze, například v3.12
, jako níže:
https://sjc.edge.kernel.org/alpine/v3.12/main
https://sjc.edge.kernel.org/alpine/v3.12/community
Příklady příkazů Apk pro instalaci a správu balíčků v Alpine Linux
Správa balíčků pomocí apk v Alpine Linuxu je poměrně jednoduchá a přímočará. Apk neobsahuje mnoho možností a syntaxe je snadněji zapamatovatelná.
Typické použití správce balíčků apk je:
apk [<OPTIONS>...] COMMAND [<ARGUMENTS>...]
Dovolte mi ukázat vám několik důležitých příkazů pro každodenní operace.
1. Zobrazit nápovědu k příkazu apk
Pokud s apk začínáte, můžete si kdykoli zobrazit nápovědu k příkazu apk spuštěním tohoto příkazu:
$ apk --help
apk má mnoho dílčích příkazů k provedení konkrétní operace. Chcete-li zobrazit sekci nápovědy dílčího příkazu, spusťte:
$ apk add --help
2. Aktualizujte seznam balíčků v Alpine Linux
Chcete-li získat seznam dostupných balíčků v repozitářích Alpine Linux, jednoduše spusťte:
$ sudo apk update
Ukázkový výstup:
fetch https://sjc.edge.kernel.org/alpine/edge/main/x86_64/APKINDEX.tar.gz
fetch https://sjc.edge.kernel.org/alpine/edge/community/x86_64/APKINDEX.tar.gz
v20201218-310-g44bdae590f [https://sjc.edge.kernel.org/alpine/edge/main]
v20201218-333-ga9f7a8a644 [https://sjc.edge.kernel.org/alpine/edge/community]
OK: 13780 distinct packages available
Jak můžete vidět ve výše uvedeném výstupu, aktuálně je jich 13780 balíčky dostupné v úložištích Alpine. Upozorňujeme, že toto není celkový počet lokálně nainstalovaných balíčků, ale celkový počet dostupných balíčků.
3. Nainstalujte balíčky v Alpine Linux
Chcete-li přidat nebo nainstalovat balíček, například vim , v Alpine Linux jednoduše spusťte:
$ sudo apk add vim
Výše uvedený příkaz nainstaluje vim a jeho závislosti.
(1/3) Installing xxd (8.2.2137-r0)
(2/3) Installing lua5.3-libs (5.3.6-r0)
(3/3) Installing vim (8.2.2137-r0)
Executing busybox-1.32.0-r8.trigger
OK: 163 MiB in 87 packages
Podobně můžete přidat více balíčků tak, že je zmíníte mezerou jako níže:
$ sudo apk PackageName1 PackageName2
3.1. Nainstalujte místní balíčky
Pokud jste si již stáhli balíček, můžete jej nainstalovat, jak je uvedeno níže.
$ sudo apk add --allow-untrusted vim-8.2.2137-r0.apk
Můžete také nainstalovat více balíčků:
$ sudo apk add --allow-untrusted PackageName1.apk PackageName2.apk PackageName3.apk
4. Odeberte balíčky v Alpine Linux
Chcete-li odinstalovat nebo odebrat nainstalovaný balíček ze systému Alpine Linux, spusťte:
$ sudo apk del vim
Tento příkaz odstraní vim a jeho závislosti.
(1/3) Purging vim (8.2.2137-r0)
(2/3) Purging xxd (8.2.2137-r0)
(3/3) Purging lua5.3-libs (5.3.6-r0)
Executing busybox-1.32.0-r8.trigger
OK: 144 MiB in 84 packages
Pokud chcete smazat více balíčků, uveďte je oddělené mezerou.
5. Prohledávejte balíčky v Alpine Linux
Repozitáře Alpine Linux obsahují více než 13 000 balíčků. Všechny dostupné balíčky můžete vypsat spolu s jejich popisem pomocí příkazu:
$ apk search -v
Ukázkový výstup:
kleopatra-20.08.3-r0 - Certificate Manager and Unified Crypto GUI
py3-libevdev-0.9-r0 - Python3 wrapper around the evdev library
telepathy-farstream-dev-0.6.2_git20190919-r0 - Telepathy GLib-based client library that uses Farstream to handle Call channels (development files)
vulkan-loader-1.2.137-r0 - Vulkan Installable Client Driver (ICD) Loader
mtd-utils-ubi-2.1.2-r0 - MTD utils (UBI and UBIFS commands)
hwids-udev-20201207-r0 - Hardware identification databases (udev integration)
py3-rsa-4.6-r0 - Pure-Python3 RSA implementation
[...]
Chcete-li zobrazit pouze celkový počet balíků, převeďte výstup do wc
příkaz jako níže:
$ apk search -v | wc -l
Můžete také získat seznam všech balíčků odpovídajících vzoru. Například následující příkaz zobrazí všechny balíčky, které odpovídají hledanému výrazu "vim".
$ apk search -v 'vim*'
Pokud chcete zobrazit pouze balíčky, které ve svém popisu obsahují konkrétní výraz , spustit:
$ apk search -v --description 'disk'
Nebo krátce použijte -d
přepínač:
$ apk search -v -d 'disk'
6. Zobrazit podrobnosti o balíčku v Alpine Linux
Pro zobrazení detailů konkrétního balíčku můžeme použít info
příkaz jako níže:
$ apk info vim
Uvidíte malý popis daného balíčku a jeho webové stránky, kde je hostován.
Ukázkový výstup:
vim-8.2.2137-r0 description:
Improved vi-style text editor
vim-8.2.2137-r0 webpage:
https://www.vim.org/
vim-8.2.2137-r0 installed size:
18 MiB
gvim-8.2.2137-r0 description:
advanced text editor, with GUI
gvim-8.2.2137-r0 webpage:
https://www.vim.org/
gvim-8.2.2137-r0 installed size:
29 MiB
Jak můžete vidět, tento příkaz vypisuje nejen podrobnosti o balíčku vim, ale také podrobnosti o dalších balíčcích, které obsahují ve svém názvu vzor "vim".
Pokud chcete podrobné informace o daném balíčku a jeho závislostech, použijte -a
vlajka.
$ apk info -a vim
Výše uvedený příkaz zobrazí následující podrobnosti:
- popis balíčku.
- webová stránka balíčku.
- velikost instalované (tj. velikost požadovaná balíkem po jeho instalaci).
- obsah balíčku (tj. seznam souborů, které balíček nainstaluje).
- Závislosti balíčků, tj. jaké balíčky jsou nutné k použití tohoto balíčku.
- které balíčky vyžadují instalaci tohoto.
- a další.
7. Seznam nainstalovaných balíčků v Alpine Linux
Chcete-li zobrazit seznam všech nainstalovaných balíčků ve vašem systému Alpine Linux, spusťte:
$ apk info
Ukázkový výstup:
lm_sensors
man
virtualbox-guest-modules-virt
musl
libcrypto1.1
libssl1.1
apk-tools
musl-utils
busybox
alpine-baselayout
[...]
Můžete také vypsat nainstalované balíčky s jejich číslem verze a popisem:
$ apk info -vv
Ukázkový výstup:
lm_sensors-3.4.0-r6 - Collection of user space tools for general SMBus access and hardware monitoring.
man-1.14.3-r0 - dummy package for upgrade compatibility. this can safely be removed
virtualbox-guest-modules-virt-4.14.167-r0 - VirtualBox Additions kernel modules for virt
musl-1.2.2_pre6-r0 - the musl c library (libc) implementation
libcrypto1.1-1.1.1i-r0 - Crypto library from openssl
libssl1.1-1.1.1i-r0 - SSL shared libraries
apk-tools-2.12.0-r3 - Alpine Package Keeper - package manager for alpine
musl-utils-1.2.2_pre6-r0 - the musl c library (libc) implementation
busybox-1.32.0-r8 - Size optimized toolbox of many common UNIX utilities
alpine-baselayout-3.2.0-r8 - Alpine base dir structure and init scripts
[...]
Vypsat pouze celkový počet nainstalovaných balíčků:
$ apk info | wc -l
87
8. Upgradujte balíčky v Alpine Linux
Chcete-li upgradovat konkrétní balíček, spusťte:
$ sudo apk update
$ sudo apk add -u vim
Nebo,
$ sudo apk add --upgrade vim
Chcete-li upgradovat všechny nainstalované balíčky, spusťte:
$ sudo apk update
$ sudo apk upgrade
Výše uvedený příkaz můžete také zkombinovat do jednoho, jako je níže:
$ sudo apk -U upgrade
9. Upgradujte Alpine Linux
Upgrade běžícího Alpine Linuxu na další dostupnou verzi je snadný! Alpine Linux přichází ve dvou edicích:
- stabilní
- rolující uvolnění (hrana)
Můžete buď upgradovat z aktuální stabilní verze na novější verzi, nebo převést stabilní verzi na průběžnou verzi.
Podrobnější pokyny jsou k dispozici v následující příručce:
- Jak upgradovat Alpine Linux na nejnovější verzi
10. Podržte balíček z upgradu
Někdy chcete při upgradu vašeho systému Alpine Linux z nějakého důvodu zabránit nebo pozastavit automatickou aktualizaci balíčku. Důvodů, proč balíček pozdržet, může být mnoho. Například určitá verze vyžaduje aplikaci, aby správně fungovala. Nebo může nový balíček poškodit váš systém. Chcete tedy ignorovat aktualizace balíčků při aktualizaci systému.
Chcete-li podržet konkrétní balíček z aktualizace, použijte některý z následujících příkazů:
$ sudo apk add vim=8.2.0-r0
Nebo,
$ sudo apk add 'vim<8.2.1'
A poté proveďte aktualizaci systému pomocí příkazu:
$ sudo apk upgrade
Tento příkaz aktualizuje všechny balíčky, ale ponechá balíček vim na verzi 8.2.0 nebo nižší.
Později můžete upgradovat balíček vim na aktuálně dostupnou verzi, jak je uvedeno níže:
$ sudo apk add 'vim>8.2.1'
Můžete také použít "fuzzy" shodu verzí k připnutí verze k hlavnímu/vedlejšímu vydání. Například následující příkaz bude odpovídat jakékoli verzi vim, která začíná 8.2.
$ sudo apk add 'vim=~8.2'
Související čtení:
- Jak ignorovat balíček z upgradu v Arch Linuxu
- Jak zabránit upgradu balíčku v Debianu, Ubuntu
11. Stáhněte si balíčky v Alpine Linux
Někdy si chcete stáhnout konkrétní balíček, ale nechcete jej instalovat. Například si stáhněte balíček vim pomocí příkazu:
$ apk fetch vim
Výše uvedený příkaz zobrazí balíček vim z repozitářů Alpine a uloží jej do aktuálního adresáře.
$ ls
vim-8.2.2137-r0.apk
Pokud chcete balíček uložit do jiné cesty, použijte -o
přepínač.
$ apk fetch vim -o ~/Downloads
Upozorňujeme, že tento příkaz nestáhne všechny požadované závislosti, ale pouze aktuální balíček.
Pro stažení daného balíčku se všemi požadovanými závislostmi použijte -R
(--recursive
) příznak:
$ apk fetch -R vim
Ukázkový výstup:
Downloading xxd-8.2.2137-r0
Downloading ncurses-libs-6.2_p20201219-r0
Downloading musl-1.2.2_pre6-r0
Downloading lua5.3-libs-5.3.6-r0
Downloading vim-8.2.2137-r0
Downloading ncurses-terminfo-base-6.2_p20201219-r0
Můžete nainstalovat lokálně stažené balíčky, jak je uvedeno v 3.1. Nainstalujte místní balíčky sekce.
12. Zobrazit podrobnosti o úložišti balíčku
Možná budete chtít zjistit, ze kterého úložiště balíček pochází. Apk má pro to také dílčí příkaz.
Chcete-li zobrazit úložiště, balíček (např. vim
) byl nainstalován z a bude aktualizován z, použijte apk policy
příkaz:
$ apk policy vim
Ukázkový výstup:
vim policy:
8.2.2137-r0:
lib/apk/db/installed
etc/apk/cache
https://sjc.edge.kernel.org/alpine/edge/main
Jak můžete vidět, balíček vim byl nainstalován z [main]
úložiště.
13. Zobrazit statistiky balíčků a repozitářů
Statistiky o nainstalovaných balíčcích a úložištích balíčků můžeme vytisknout pomocí příkazu:
$ apk stats
Ukázkový výstup:
installed:
packages: 87
dirs: 485
files: 9617
bytes: 171270144
triggers: 5
available:
names: 30975
packages: 13773
atoms:
num: 9761
14. Vyčistěte mezipaměť balíčků
Ve výchozím nastavení jsou všechny nainstalované balíčky uloženy do mezipaměti v /etc/apk/cache/
adresář. Když jsou do mezipaměti přidány novější balíčky, ve výchozím nastavení zůstanou starší verze balíčků.
Pokud nechcete starší verze balíčků, můžete jednoduše vymazat mezipaměť balíčků pomocí příkazu:
$ sudo apk cache clean
Pokud chcete vidět, které verze byly odstraněny, použijte přepínač -v (podrobný):
$ sudo apk -v cache clean
Pokud jste omylem smazali balíčky z mezipaměti, můžete si je stáhnout příkazem:
$ sudo apk cache download
Můžete také vymazat mezipaměť a stáhnout chybějící balíček jediným příkazem:
$ sudo apk cache -v sync
Doufám, že to pomůže.