APT (Advanced package tool) – základy
Tento príspevok je časťou série:
- Časť 1: Tento príspevok
- Časť 2: APT – neplatný podpisový kľúč
- Časť 3: APT – neoficiálne repozitáre
Cieľ
Chcem zosumarizovať získané poznatky o správnom a efektívnom používaní systému na správu softvérových balíčkov (APT) v operačnom systéme Debian / Ubuntu.
Upozornenie
Táto poznámka je len môj osobný a veľmi zjednodušený pohľad na prácu s APT. Nie je to v žiadnom prípade pokus o oficiálny a ani neoficiálny preklad dokumentácie. Neúmyselne tu môžu byť uvedené nepresné informácie alebo chyby!
Príkaz apt
je vyslovene určený na prácu v terminály a nie je vhodný na použitie v skriptoch, v tých je vhodné v prípade potreby použiť apt-get
, apt-cache
.
Riešenie
Aktualizácia údajov
apt update
– aktualizuje údaje o dostupných softvérových balíčkoch
sudo apt update
Spustenie vyžaduje administrátorské oprávnenie, preto je potrebné použiť sudo
.
Údaje o balíčkoch je potrebné aktualizovať priebežne na dennej báze, po každej zmene v nastavení repozitárov (pridanie, odobranie, zmena) aj pred každou inštaláciou nového softvéru.
Informácie o balíkoch
apt show
– zobrazí súhrne informácie o softvérovom balíčku dostupnom z nastavených úložísk.
apt show caddy
V prípade, že požadovaný balíček nie je dostupný, systém odpovie jasne N: Unable to locate package caddy
, ak je dostupný, výstup sú informácie o ňom (názov, verzia, správca, veľkosť atď.):
Package: caddy
Version: 2.6.2
Priority: optional
Maintainer: Matthew Holt <mholt@users.noreply.github.com>
Installed-Size: 38.1 MB
Homepage: https://caddyserver.com
Download-Size: 14.4 MB
APT-Manual-Installed: yes
APT-Sources: https://apt.fury.io/caddy Packages
Description: Caddy - Powerful, enterprise-ready, open source web server with automatic HTTPS written in Go
apt list
– zobrazí dostupné verzie zadaného balíčku
apt list -a hugo
Ak použijem aj prepínač -a
budú zobrazené všetky dostupné verzie požadovaného balíčku. Na konci riadku s názvom balíčku môže byť v hranatých zátvorkách uvedené [installed]
ak je už daný balíček nainštalovaný.
Listing... Done
hugo/bullseye-backports 0.104.3-1~bpo11+1 amd64
hugo/stable 0.80.0-6+b5 amd64
apt-cache policy
– zobrazí zoznam dostupných verzii zadaného balíčku aj s prioritou repozitárov v ktorých sa nachádza.
apt-cache policy hugo
Systém zobrazí informáciu o verzii, ktorá už je (Installed:
) resp. bude (Candidate:
) nainštalovaná plus tabuľku všetkých dostupných verzii balíčku z nastavených repozitárov (jednotlivé repozitáre môžu mať nastavenú rôznu
prioritu
). Prednosť pri inštalácii má balíček z úložiska s najvyšším číslom – najvyššou prioritou:
hugo:
Installed: (none)
Candidate: 0.80.0-6+b5
Version table:
0.104.3-1~bpo11+1 100
100 http://deb.debian.org/debian bullseye-backports/main amd64 Packages
0.80.0-6+b5 500
500 http://deb.debian.org/debian bullseye/main amd64 Packages
apt-cache depends
– zobrazí zoznam balíčkov na ktorých je zadaný balík závislý, a teda bude potrebné ich nainštalovať spolu s ním
apt-cache depends htop
Odpoveď je zoznam balíkov zoradený podľa stupňa závislosti
htop
Depends: libc6
Depends: libncursesw5
Depends: libtinfo5
Suggests: lsof
Suggests: strace
V predvolenom nastavení, budú balíky označené Depends
a Recommends
nainštalované spolu so zadaným balíkom, ostatné nie. Suggests
označuje balíky, ktoré môžu rozšíriť funkcie požadovaného balíka, ale nie sú nevyhnutne nutné pre jeho správne fungovanie. Enhances
označuje naopak balíky, ktorých funkcie môžu byť rozšírené zadaným balíkom. Znak zvislá čiara |
(pipe) je vyjadrením „alebo“, teda balík na novom riadku za zvislou čiarou je alternatívou ku balíku pred čiarou. Medzi znakmi <>
je uvedený tzv. virtuálny balík a za ním sú na odsadených riadkoch uvedené balíky poskytujúce túto činnosť.
apt-rdepends
– podobne, ako predchádzajúci príkaz zobrazí súvisiace balíčky, ale závislosti prehľadáva rekurzívne, teda ak nejaký balík vyžaduje ďalší a ten vyžaduje zase ďalší atď., zobrazia sa takto všetky balíky (nie len priamo závislé na požadovanom balíčku).
apt-rdepends -p htop
Tento príkaz nie je súčasťou štandardnej distribúcie, preto je ho potrebné do inštalovať. Prepínač -p
zabezpečí zobrazenie stavu, či už je balík v zozname nainštalovaný alebo ešte nie.
Reading package lists... Done
Building dependency tree
Reading state information... Done
htop
Depends: libc6 (>= 2.15) [Installed]
Depends: libncursesw5 (>= 6) [Installed]
Depends: libtinfo5 (>= 6) [NotInstalled]
libc6
Depends: libgcc1 [Installed]
libgcc1
Depends: gcc-8-base (= 8.3.0-6+rpi1) [Installed]
Depends: libc6 (>= 2.4) [Installed]
gcc-8-base
libncursesw5
Depends: libc6 (>= 2.7) [Installed]
Depends: libtinfo5 (= 6.1+20181013-2+deb10u3) [NotInstalled]
libtinfo5
Depends: libc6 (>= 2.16) [Installed]
Pridávanie balíkov
apt install
– pridá, nainštaluje požadovaný balíček a s ním aj všetky ďalšie potrebné balíčky, ktorých závislosť je na úrovniDepends
aRecommends
.
sudo apt install curl
Inštalovať nové balíky môže len hlavný administrátor systému, preto je potrebné sa buď prihlásiť, ako root
, alebo príkaz zadávať so sudo
.
Prepínačom --install-suggests
je možné docieliť nainštalovanie aj balíkov so závislosťou na úrovni Suggests
sudo apt install --install-suggest curl
Môžem si overiť nastavenie, ktorá úroveň závislosti bude nainštalovaná:
apt-config dump | grep -i :install-
Odoberanie balíkov
apt remove
– odoberie, odinštaluje požadovaný balíkapt purge
– odoberie, odinštaluje požadovaný balík a s ním odoberie aj všetky konfiguračné súboryapt autoremove
– odoberie, odinštaluje všetky balíky, ktoré boli pridané automaticky, ako závislosti pri inštalovaní iných balíčkov a medzi tým sa závislosti zmenili alebo boli tieto iné balíčky odinštalované
Taktiež všetky tieto príkazy môže vykonávať len super užívateľ, preto je ich potrebné zadávať so sudo
.
Aktualizácia balíkov
apt upgrade
– všetky balíčky dostupné v novšej verzii pre inštaluje na novšiu, vyššiu verziuapt full-upgrade
– všetky balíčky dostupné v novšej verzii pre inštaluje na novšiu verziu a navyše ak to vyžadujú závislosti, tak aj pridá ďalšie nové, resp. odoberie už nepotrebné balíčky
Rutina, ktorú je potrebné vykonávať pravidelne a pred každým pridaním ďalšieho, nového softvérového balíčku:
- stiahnuť najnovšie dáta o balíčkoch zo všetkých nastavených APT repozitárov
- zobraziť zoznam balíčkov dostupných vo vyššej verzii
- nainštalovať všetky dostupné novšie verzie balíčkov
sudo apt update
apt list --upgradable
sudo apt upgrade
sudo apt full-upgrade
Aj aktualizáciu môže spúšťať len administrátor systému, preto je potrebné príkazy zadávať so sudo
.
Čistenie lokálneho úložiska
apt clean
– vymaže všetky inštalačné balíčky z lokálneho úložiska s výnimkou súborulock
, zmaže teda kompletne všetky súbory v adresároch/var/cache/apt/archives
a/var/cache/apt/archives/partial
okrem súborulock
apt autoclean
– vymaže z lokálneho úložiska tie inštalačné balíčky, ktoré už nie sú ďalej potrebné, lebo boli napríklad odinštalované alebo už bol odinštalovaný balík, ktorý bol na nich závislý
Tiež môže vykonať len administrátor root
, čiže zadávať so sudo
.
Pomôcky
Zobrazenie zoznamu všetkých nastavených a dostupných repozitárov použiteľných na inštaláciu a aktualizáciu softvérových balíčkov:
egrep -v '^#|^ *$' /etc/apt/sources.list /etc/apt/sources.list.d/*
Zobrazenie všetkých nainštalovaných balíčkov:
dpkg -l
# alebo ich počet
dpkg -l | grep "^ii" | wc -l
# alebo zoznam pomocou apt-mark
# zoznam automaticky nainštalovaných balíčkov
apt-mark showauto
# zoznam ručne nainštalovaných balíčkov
apt-mark showmanual
# to isté, ale pomocou apt list (nevhodné do skriptov)
# všetky nainštalované
apt list --installed
# nainštalované manuálne
apt list --manual--installed=true
# ešte jedna možnosť, ale len za posledný rok, z logov
zgrep " installed " /var/log/dpkg.log* | wc -l
Zdroj
- Chapter 8. The Debian package management tools
- 6.2. aptitude, apt-get, and apt Commands
- Debian Policy Manual
- apt(8) - Debian manpages
- apt-get(8) - APT package handling utility
Tento príspevok je časťou série:
- Časť 1: Tento príspevok
- Časť 2: APT – neplatný podpisový kľúč
- Časť 3: APT – neoficiálne repozitáre