Paketihaldus: apt, dnf, pacman, brew
Paketihaldur paigaldab tarkvara koos vajalike sõltuvustega ja hoiab süsteemi seisundi jälgitavana. Peamine oskus on valida õige tase: kas paigaldad tööriista kogu süsteemile, oma kasutajale või ainult ühele projektile.
Loogika
Paketihalduses on kolm taset:
- süsteemi paketihaldur paigaldab käsureatööriistu ja süsteemiteeke
- keele paketihaldur paigaldab ühe programmeerimiskeele teeke
- projekti sõltuvused kuuluvad võimalusel projekti kataloogi või virtuaalkeskkonda
Kõige sagedasem algaja viga on paigaldada kõik ühe käsuga “kuhugi süsteemi”, mõtlemata, kes seda hiljem kasutab ja kust see leitakse.
Kiire orientiir
| Tööriist | Kus tavaliselt | Milleks |
|---|---|---|
apt | Debian, Ubuntu | süsteemi paketid |
dnf | Fedora | süsteemi paketid |
pacman | Arch Linux | süsteemi paketid |
brew | macOS, vahel Linux | kasutajataseme tööriistad |
python3 -m pip | Python | Pythoni paketid |
npm | Node.js | JavaScripti projektid |
Vali korraga ainult oma süsteemile või projektile sobiv rida. Ubuntu kasutaja ei käivita Fedora käske ja macOS-i kasutaja ei paigalda Homebrew pakette käsuga sudo apt.
Tüüpilised algaja vead
- käivitatakse mitu eri distributsiooni paigalduskäsku järjest
- kasutatakse
sudo-t seal, kus paketihaldur seda ei vaja, näiteks Homebrew puhul - paigaldatakse Pythoni projektiteek süsteemi, kuigi õigem oleks
venv - arvatakse, et Homebrew on macOS-is juba olemas
- ei loeta paigalduslogi lõppu, kus sageli on tegelik veateade või järgmine juhis
Vali oma süsteemi käsk
Otsi paketti enne paigaldamist:
apt search ripgrep
dnf search ripgrep
pacman -Ss ripgrep
brew search ripgrep
Paigalda ainult oma süsteemi rida:
sudo apt install ripgrep
sudo dnf install ripgrep
sudo pacman -S ripgrep
brew install ripgrep
Kontrolli pärast paigaldust:
rg --version
command -v rg
Kui paigaldus õnnestub, näed tavaliselt logi, allalaadimist, sõltuvusi ja lõpuks vaikset käsuviipa. Kui käsk ei ilmu pärast paigaldust nähtavale, kontrolli PATH-i ja ava vajadusel uus terminaliaken.
Miks mõnikord on vaja sudo
Linuxi süsteemipaketid muudavad tavaliselt süsteemi katalooge. Seetõttu kasutatakse tihti:
sudo apt install htop
Homebrew töötab enamasti kasutaja õigustes:
brew install htop
Ära lisa sudo-t lihtsalt harjumusest. Kui paketihaldur seda ei küsi, on parem jätta see kasutamata.
update ja upgrade
Nimed on sarnased, aga tähendus on erinev.
| Kuju | Mida teeb |
|---|---|
sudo apt update | värskendab paketinimekirja |
sudo apt upgrade | uuendab juba paigaldatud paketid |
brew update | värskendab Homebrew pakiretsepte |
brew upgrade | uuendab Homebrew paketid |
Ära käivita suurt upgrade-i siis, kui sul on kohe vaja arvutit tööks või esitluseks. Uuendamine võib võtta aega ja mõnikord küsida lisavalikuid.
Uuendamine, info ja eemaldamine
Debianis ja Ubuntus värskendab apt update paketinimekirja, mitte veel kõiki programme.
sudo apt update
apt show ripgrep
sudo apt install ripgrep
sudo apt remove ripgrep
Fedoras on tavaline kuju:
dnf info ripgrep
sudo dnf install ripgrep
sudo dnf remove ripgrep
Arch Linuxis otsitakse ja paigaldatakse nii:
pacman -Ss ripgrep
sudo pacman -S ripgrep
sudo pacman -R ripgrep
Homebrew puhul:
brew info ripgrep
brew install ripgrep
brew uninstall ripgrep
Eemaldamise näited on siin väikese tööriista peal. Ära eemalda juhuslikult süsteemiteeke ega pakette, mille rollist sa aru ei saa.
Süsteemi paketihaldur ja keele paketihaldur
apt install python3-requests ja python3 -m pip install requests ei ole sama asi.
| Kuju | Tase | Millal kasutada |
|---|---|---|
sudo apt install python3-requests | süsteem | kui distributsioonipakett on teadlik valik |
python3 -m pip install requests | Python | kui paigaldad Pythoni paketi aktiivsesse keskkonda |
npm install | projekt | kui projektis on package.json |
Pythoni projektis on tavaliselt parem kasutada virtuaalkeskkonda:
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install requests
python3 -m pip show requests
Node.js projektis paigaldatakse sõltuvused projekti kataloogis:
npm install
npm list --depth=0
npm run dev
Kui käsk npm run dev ei tööta, vaata kõigepealt package.json faili. Seal on kirjas, millised scripts nimed on üldse olemas.
pip kuju
Pythoni puhul eelista kuju:
python3 -m pip install requests
mitte lihtsalt:
pip install requests
Nii on selgem, millise Pythoni tõlgendiga pakette paigaldatakse. See muutub eriti tähtsaks siis, kui arvutis on mitu Pythoni versiooni või aktiivne virtuaalkeskkond.
macOS ja Homebrew
macOS-is on osa Unixi käske juba olemas, aga Homebrew tuleb tavaliselt ise paigaldada. Seda ei pea tegema enne, kui vajad tööriista, mida süsteemis pole või mille uuemat versiooni on vaja.
Näiteks:
brew install ripgrep jq tmux gh
Graafilisi rakendusi paigaldatakse Homebrew's sageli --cask võtmega:
brew install --cask docker-desktop
Kui vajad macOS-is Linuxi võrgukäskude sarnaseid nimesid, on üks võimalus:
brew install iproute2mac
See on valikuline lisakiht. Enamasti piisab macOS-is sisseehitatud käskudest ifconfig, lsof ja netstat.
Kontrollkäigud pärast paigaldust
Kontrolli tööriista olemasolu ja versiooni:
command -v python3
python3 --version
python3 -m pip --version
command -v node
node --version
npm --version
Kui käsk on paigaldatud, aga shell seda ei leia, kontrolli:
echo "$PATH"
command -v käsk
type -a käsk
Kui paigaldus ebaõnnestub
Kõigepealt loe veateate viimaseid ridu. Seal on tavaliselt põhjus.
| Sümptom | Tüüpiline põhjus | Esimene kontroll |
|---|---|---|
package not found | nimi on vale või nimekiri vana | otsi paketti ja tee vajadusel update |
permission denied | käsk vajab kõrgemaid õigusi | kasuta süsteemipaketiga sudo, aga mitte pimesi |
lock või database is locked | teine paketihaldur töötab | oota, ära kustuta lukufaile käsitsi |
command not found pärast paigaldust | käsk pole PATH-is või nimi on teine | command -v nimi, type -a nimi |
pip või npm õiguste viga | paigaldad valesse tasemesse | kasuta projekti virtuaalkeskkonda või projekti kataloogi |
Minitest
- Ütle, milline süsteemi paketihaldur sobib sinu masinale.
- Otsi sellega paketti
ripgrepvõihtop. - Loe ühe paketi infot ilma seda paigaldamata.
- Selgita, miks
pip installjaapt installei ole sama tase. - Kontrolli, kas
python3,pip,nodejanpmon sinu masinas olemas. - Kui kasutad macOS-i, kontrolli, kas
brewon olemas käsugacommand -v brew.
Peatüki täisspikker
Baas ja süsteemipilt
Eesmärk
vali õige tase: süsteemi paketihaldur tööriistadele, keele paketihaldur teekidele ja projektisõltuvused võimalusel projekti sisse
Põhikujud
apt search ripgrepotsi Debianis või Ubuntussudo apt install ripgreppaigalda Debianis või Ubuntussudo dnf install ripgreppaigalda Fedorassudo pacman -S ripgreppaigalda Archisbrew install ripgreppaigalda Homebrew'gapython3 -m pip install requestspaigalda Pythoni pakett aktiivsesse keskkondanpm installpaigalda projekti Node.js sõltuvusedcommand -v rgkontrolli, kas käsk leitakse
Tööriistad ja tasemed
apt,dnf,pacmanLinuxi süsteemipaketidbrewmacOS-i kasutajataseme tööriistadupdatevärskenda nimekirja või retsepteupgradeuuenda paigaldatud paketid--caskHomebrew graafiline rakendusvenvPythoni projekti eraldi keskkondpackage.jsonNode.js projekti sõltuvused