title | subtitle | author | date |
---|---|---|---|
3.1. Software-installatie |
Linux<br/>HOGENT toegepaste informatica |
Thomas Parmentier, Andy Van Maele, Bert Van Vreckem |
2024-2025 |
Wat is een distributie?
- Linux is een operating system (OS) kernel
- Applicaties worden ontwikkeld, al of niet met libraries
- Applicatiesoftware wordt gecompileerd voor het OS
- Distributie = Kernel + collectie applicaties
- package = verzameling van ...
- gecompileerde software voor een versie van Linux
- bijhorende bestanden (configuratie, man, ...)
- informatie over waar deze bestanden terecht horen
- eventuele afhankelijkheden van libraries of andere software
- = dependency (zie verder)
- packages worden aangeboden op specifieke servers
- repository servers
- werken zoals 'Play Store' (of liever: omgekeerd)
Klassiek zijn er twee grote Linux distributies
(zie https://nl.wikipedia.org/wiki/Linuxdistributie)
- Debian
- Ubuntu
- Mint
- Raspbian
- ...
- Red Hat
- Fedora
- CentOS
- AlmaLinux
- ...
Opm. "Enterprise Linux" (EL) = compatibel met RedHat Enterprise Linux (RHEL)
De verschillen zijn o.a. in de manier waarop software wordt beheerd:
- Debian: .deb packages
- Red Hat: .rpm packages
Opm. Er zijn nog meer package managers voor Linux
Tool die een .deb package installeert op een systeem.
-
download een .deb package (manueel)
-
installeer met dpkg
$ dpkg -i <package_name>.deb
-
Los eventuele dependencies manueel op (zie later)
Overzicht van geïnstalleerde packages op Debian:
$ dpkg -l
- Software wordt gebouwd boven op andere software.
- Zonder de onderliggende bouwstenen kan dit niet werken.
Linux name = dependency
dpkg -I vim_2%3a8.1.2269-1ubuntu5.3_amd64.deb
new Debian package, version 2.0.
Package: vim
Version: 2:8.1.2269-1ubuntu5.3
Architecture: amd64
Depends: vim-common (= 2:8.1.2269-1ubuntu5.3), vim-runtime (= 2:8.1.2269-1ubuntu5.3),
libacl1 (>= 2.2.23), libc6 (>= 2.29), libcanberra0 (>= 0.2),
libgpm2 (>= 1.20.7), libpython3.8 (>= 3.8.2), libselinux1 (>= 1.32), libtinfo6 (>= 6)
APT = Advanced Package Tool
- Zoek een package op de (aanvaarde) repository servers
- download de .deb package (automatisch)
- controleer dependencies, download eventuele extra packages
- installeert (achterliggend) met dpkg
$ apt install <package_name>
Automatisering:
-
Bijwerken van info op de repo servers
$ sudo apt update
-
Bijwerken van alle packages op jouw systeem
$ sudo apt upgrade
-
Bijwerken van een enkele package op jouw systeem
$ sudo apt install <package_name> # nieuwe versie wordt geïnstalleerd
List of repository servers you use:
osboxes@osboxes:~$ ls /etc/apt/sources.list*
/etc/apt/sources.list
/etc/apt/sources.list.d:
official-package-repositories.list
- Identical system, but different command set.
rpm
= RedHat Package Manager (equivalent vandpkg
)yum
= Yellowdog Update Manager- equivalent van
apt
- Yellowdog = oude Linux distro voor Motorola-CPU's
- Nog in gebruik op RedHat 6
- equivalent van
dnf
= DaNdiFied yum- Vervangt
yum
vanaf RedHat Enterprise Linux 7 - Ook in Fedora
- Vervangt
-
Installatie package
$ sudo dnf install <package_name>
-
Bijwerken van info op de repo servers; aftoetsen van wat kan bijgewerkt worden:
$ dnf check-update
-
Bijwerken van alle packages op jouw systeem
$ sudo dnf upgrade
-
Bijwerken van een enkele package op jouw systeem
$ sudo dnf upgrade <package_name>
-
Lijst geïnstalleerde packages
$ dnf list installed
-
Lijst beschikbare packages
$ dnf list available
Hoeveel packages zijn geïnstalleerd/beschikbaar op jouw VM?
-
Met welke package kan ik het commando
fortune
installeren?$ dnf provides *bin/fortune
-
Wat zijn de dependencies van
curl
?$ dnf deplist curl
[admin@server ~]$ ls /etc/yum.repos.d/
almalinux-ha.repo almalinux-powertools.repo almalinux.repo epel-modular.repo
epel-playground.repo epel-testing-modular.repo epel-testing.repo epel.repo
[admin@server ~]$ cat /etc/yum.repos.d/almalinux.repo
- pip - Python
- npm - JavaScript
- CTAN - (La)TeX
- Gem - Ruby
- ...
Install package inside container
- Flatpak (o.a. Red Hat)
- Snap (Canonical)
- Sommige packages zijn beschikbaar via bv. apt én pip
- Welke installeren? It depends...
- MacOS: Homebrew
- Windows:
- WinGet
- Chocolatey/NuGet