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.
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.
Paketi info ja eemaldamine
Vali ainult oma süsteemi rida. Info küsimine on vaatamine; eemaldamine muudab paigaldatud tarkvara.
| Süsteem | Loe kirjeldust | Eemalda teadlikult paigaldatud näidispakett |
|---|---|---|
| Debian / Ubuntu | apt show ripgrep | sudo apt remove ripgrep |
| Fedora | dnf info ripgrep | sudo dnf remove ripgrep |
| Arch Linux | pacman -Si ripgrep | sudo pacman -R ripgrep |
| Homebrew | brew info ripgrep | brew uninstall ripgrep |
Ära eemalda süsteemiteeke ega pakette, mille rolli sa ei tunne. Loe paketihalduri kavandatud muudatused enne kinnitamist läbi.
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.
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'ga sageli valiku --cask abil:
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.
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-i või npm-i õiguste viga | paigaldad valesse keskkonda | 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 projekti sõ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