> For the complete documentation index, see [llms.txt](https://docs.instantroot.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.instantroot.de/kvm-server/linux/pakete-installieren.md).

# Pakete installieren

Pakete sind installierbare Softwarebestandteile deines Betriebssystems. Über Pakete installierst du zum Beispiel Webserver, Datenbanken, Programmiersprachen, Tools oder Systemdienste.

Auf Linux-Servern werden Pakete meistens über einen Paketmanager installiert. Der Paketmanager lädt Software aus offiziellen Paketquellen herunter, installiert sie und verwaltet Updates.

### Was ist ein Paketmanager?

Ein Paketmanager ist ein Werkzeug zur Verwaltung von Software auf deinem Server.

Damit kannst du:

* Software installieren
* Software entfernen
* Updates installieren
* Paketquellen verwalten
* Abhängigkeiten automatisch installieren
* installierte Pakete anzeigen

Abhängigkeiten sind zusätzliche Programme oder Bibliotheken, die eine Software benötigt, um zu funktionieren.

Beispiel:

Wenn du einen Webserver installierst, kann das System automatisch weitere benötigte Bestandteile mitinstallieren.

### Welchen Paketmanager nutzt mein System?

Der Paketmanager hängt von deinem Betriebssystem ab.

| Betriebssystem | Paketmanager | Beispiel            |
| -------------- | ------------ | ------------------- |
| Debian         | `apt`        | `apt install nginx` |
| Ubuntu         | `apt`        | `apt install nginx` |
| AlmaLinux      | `dnf`        | `dnf install nginx` |
| Rocky Linux    | `dnf`        | `dnf install nginx` |
| CentOS Stream  | `dnf`        | `dnf install nginx` |

Wenn du nicht sicher bist, welches Betriebssystem auf deinem KVM-Server läuft, kannst du es mit folgendem Befehl prüfen:

`cat /etc/os-release`

### Vorbereitung

Bevor du Pakete installierst, solltest du dich per SSH mit deinem Server verbinden.

Beispiel:

`ssh root@SERVER-IP`

Ersetze `SERVER-IP` durch die IP-Adresse deines Servers.

Für viele Befehle benötigst du Root-Rechte. Wenn du nicht als `root` angemeldet bist, setze `sudo` vor den Befehl.

Beispiel:

`sudo apt install nginx`

### Paketlisten aktualisieren

Vor einer Installation solltest du die Paketlisten aktualisieren. Dadurch weiß dein Server, welche Paketversionen aktuell verfügbar sind.

#### Debian und Ubuntu

`apt update`

#### AlmaLinux, Rocky Linux und CentOS Stream

`dnf check-update`

Bei `dnf check-update` kann ein Rückgabewert angezeigt werden, auch wenn Updates gefunden wurden. Das ist nicht automatisch ein Fehler.

### Pakete installieren

#### Debian und Ubuntu

Ein Paket installierst du mit:

`apt install paketname`

Beispiel für Nginx:

`apt install nginx`

Wenn du nicht als Root angemeldet bist:

`sudo apt install nginx`

#### AlmaLinux, Rocky Linux und CentOS Stream

Ein Paket installierst du mit:

`dnf install paketname`

Beispiel für Nginx:

`dnf install nginx`

Wenn du nicht als Root angemeldet bist:

`sudo dnf install nginx`

### Installation bestätigen

Bei vielen Installationen fragt das System nach einer Bestätigung.

Typische Meldung:

`Do you want to continue? [Y/n]`

Bestätige mit `Y` und drücke Enter.

Bei deutschen Systemen kann die Abfrage auch anders aussehen.

### Mehrere Pakete gleichzeitig installieren

Du kannst mehrere Pakete in einem Befehl installieren.

#### Debian und Ubuntu

`apt install nginx mariadb-server php`

#### AlmaLinux, Rocky Linux und CentOS Stream

`dnf install nginx mariadb-server php`

Das ist praktisch, wenn mehrere Programme zusammen benötigt werden.

### Häufig genutzte Pakete

| Paket            | Zweck                                       |
| ---------------- | ------------------------------------------- |
| `nginx`          | Webserver                                   |
| `apache2`        | Webserver unter Debian/Ubuntu               |
| `httpd`          | Webserver unter AlmaLinux/Rocky Linux       |
| `mariadb-server` | Datenbankserver                             |
| `postgresql`     | Datenbankserver                             |
| `php`            | Programmiersprache für viele Webanwendungen |
| `nodejs`         | JavaScript-Laufzeitumgebung                 |
| `python3`        | Python 3                                    |
| `git`            | Versionsverwaltung                          |
| `curl`           | HTTP- und API-Abfragen                      |
| `wget`           | Dateien herunterladen                       |
| `unzip`          | ZIP-Dateien entpacken                       |
| `nano`           | einfacher Texteditor                        |
| `ufw`            | einfache Firewall unter Debian/Ubuntu       |
| `fail2ban`       | Schutz vor wiederholten Loginversuchen      |
| `screen`         | Terminal-Sitzungen im Hintergrund           |
| `tmux`           | Terminal-Sitzungen im Hintergrund           |

### Paket suchen

Wenn du den genauen Paketnamen nicht kennst, kannst du danach suchen.

#### Debian und Ubuntu

`apt search suchbegriff`

Beispiel:

`apt search nginx`

#### AlmaLinux, Rocky Linux und CentOS Stream

`dnf search suchbegriff`

Beispiel:

`dnf search nginx`

### Informationen zu einem Paket anzeigen

Vor der Installation kannst du dir Informationen zu einem Paket anzeigen lassen.

#### Debian und Ubuntu

`apt show paketname`

Beispiel:

`apt show nginx`

#### AlmaLinux, Rocky Linux und CentOS Stream

`dnf info paketname`

Beispiel:

`dnf info nginx`

### Installierte Pakete anzeigen

#### Debian und Ubuntu

`apt list --installed`

Ein bestimmtes Paket prüfen:

`apt list --installed | grep nginx`

#### AlmaLinux, Rocky Linux und CentOS Stream

`dnf list installed`

Ein bestimmtes Paket prüfen:

`dnf list installed | grep nginx`

### Paket entfernen

Wenn du ein Paket nicht mehr brauchst, kannst du es entfernen.

#### Debian und Ubuntu

`apt remove paketname`

Beispiel:

`apt remove nginx`

Konfigurationsdateien bleiben dabei häufig erhalten.

Wenn du auch Konfigurationsdateien entfernen möchtest:

`apt purge paketname`

Nicht mehr benötigte Abhängigkeiten entfernen:

`apt autoremove`

#### AlmaLinux, Rocky Linux und CentOS Stream

`dnf remove paketname`

Beispiel:

`dnf remove nginx`

### System aktualisieren

Neben einzelnen Paketen solltest du regelmäßig das gesamte System aktualisieren.

#### Debian und Ubuntu

Paketlisten aktualisieren:

`apt update`

Updates installieren:

`apt upgrade`

Optional vollständige Aktualisierung:

`apt full-upgrade`

#### AlmaLinux, Rocky Linux und CentOS Stream

`dnf update`

Nach wichtigen System- oder Kernel-Updates kann ein Neustart erforderlich sein.

Neustart:

`reboot`

### Dienst nach Installation prüfen

Viele Pakete installieren einen Dienst. Ein Dienst ist ein Programm, das dauerhaft im Hintergrund läuft.

Beispiele:

* Webserver
* Datenbankserver
* SSH-Dienst
* Mailserver
* Gameserver-Dienst

Dienste werden unter Linux häufig mit `systemctl` verwaltet.

Status prüfen:

`systemctl status dienstname`

Beispiel für Nginx:

`systemctl status nginx`

Dienst starten:

`systemctl start nginx`

Dienst stoppen:

`systemctl stop nginx`

Dienst neu starten:

`systemctl restart nginx`

Dienst beim Serverstart automatisch starten:

`systemctl enable nginx`

Autostart deaktivieren:

`systemctl disable nginx`

### Paket wurde installiert, aber funktioniert nicht

Wenn ein installiertes Paket nicht funktioniert, prüfe zuerst den Dienststatus.

Beispiel:

`systemctl status nginx`

Wenn der Dienst nicht startet, helfen oft die Logs.

Allgemeine Logs anzeigen:

`journalctl -xe`

Logs eines bestimmten Dienstes anzeigen:

`journalctl -u nginx`

Bei vielen Problemen steht dort die genaue Ursache.

### Paket nicht gefunden

Wenn ein Paket nicht gefunden wird, kann das mehrere Gründe haben.

Mögliche Ursachen:

* Paketname ist falsch geschrieben
* Paketlisten wurden nicht aktualisiert
* Paket ist in den aktivierten Paketquellen nicht enthalten
* benötigtes Repository ist nicht aktiviert
* Betriebssystemversion wird nicht unterstützt

Prüfe zuerst:

`apt update`

oder:

`dnf check-update`

Suche danach nach dem Paketnamen:

`apt search paketname`

oder:

`dnf search paketname`

### Repository aktivieren

Ein Repository ist eine Paketquelle. Daraus lädt dein Server Softwarepakete herunter.

Manche Pakete sind nicht in den Standardquellen enthalten. Dann muss ein zusätzliches Repository aktiviert werden.

#### Debian und Ubuntu

Viele zusätzliche Pakete befinden sich im Universe-Repository.

Bei Ubuntu kannst du es aktivieren mit:

`add-apt-repository universe`

Danach:

`apt update`

#### AlmaLinux und Rocky Linux

Viele zusätzliche Pakete befinden sich im EPEL-Repository.

EPEL installieren:

`dnf install epel-release`

Danach:

`dnf update`

**Wichtig:** Aktiviere nur Paketquellen, denen du vertraust. Unbekannte oder veraltete Repositories können Sicherheitsrisiken verursachen.

### Software aus fremden Quellen

Nicht jede Software sollte direkt aus dem Internet installiert werden.

Sei vorsichtig bei Befehlen wie:

`curl irgendeine-url | bash`

oder:

`wget irgendeine-url -O - | sh`

Solche Befehle laden ein Skript aus dem Internet und führen es direkt aus. Das kann gefährlich sein, wenn du die Quelle nicht genau kennst.

Prüfe vor der Installation:

* stammt die Anleitung vom offiziellen Anbieter?
* ist die URL korrekt?
* ist das Projekt vertrauenswürdig?
* wird die Software noch gepflegt?
* gibt es eine sichere Installationsmethode über den Paketmanager?

### Paketverwaltung ist gesperrt

Manchmal erscheint eine Meldung, dass die Paketverwaltung gesperrt ist.

Typische Meldungen:

* `Could not get lock`
* `Unable to acquire the dpkg frontend lock`
* `Waiting for cache lock`
* `Another app is currently holding the yum lock`

Das bedeutet, dass gerade ein anderer Paketprozess läuft.

Mögliche Ursachen:

* automatische Updates laufen
* ein anderer Installationsbefehl ist noch aktiv
* eine vorherige Installation wurde nicht sauber beendet

Warte zuerst einige Minuten.

Prüfe laufende Prozesse:

`ps aux | grep apt`

oder:

`ps aux | grep dnf`

Beende Paketprozesse nicht vorschnell. Eine unterbrochene Paketinstallation kann das System beschädigen.

### Defekte Paketinstallation reparieren

Wenn eine Installation abgebrochen wurde, kann die Paketverwaltung beschädigt sein.

#### Debian und Ubuntu

Versuche zuerst:

`dpkg --configure -a`

Danach:

`apt install -f`

Anschließend:

`apt update`

#### AlmaLinux, Rocky Linux und CentOS Stream

Cache bereinigen:

`dnf clean all`

Danach:

`dnf makecache`

Anschließend erneut installieren oder aktualisieren.

### Speicherplatz prüfen

Wenn Pakete nicht installiert werden können, kann auch fehlender Speicherplatz die Ursache sein.

Speicherplatz prüfen:

`df -h`

Wenn die Festplatte voll ist, können Updates und Installationen fehlschlagen.

Prüfe außerdem große Verzeichnisse:

`du -sh /*`

**Wichtig:** Lösche keine Systemdateien, wenn du nicht genau weißt, wofür sie benötigt werden.

### Nach der Installation aufräumen

Nicht mehr benötigte Pakete und zwischengespeicherte Dateien können Speicherplatz belegen.

#### Debian und Ubuntu

Nicht mehr benötigte Pakete entfernen:

`apt autoremove`

Paketcache bereinigen:

`apt clean`

#### AlmaLinux, Rocky Linux und CentOS Stream

Nicht mehr benötigte Pakete entfernen:

`dnf autoremove`

Cache bereinigen:

`dnf clean all`

### Sicherheit bei Paketinstallationen

Installiere nur Software, die du wirklich benötigst.

Jedes zusätzliche Paket kann neue Dienste, offene Ports oder Sicherheitsrisiken mitbringen.

Achte besonders auf:

* Webpanels
* Datenbankserver
* Mailserver
* FTP-Server
* alte PHP-Versionen
* unbekannte Installationsskripte
* nicht gepflegte Software

Nach der Installation solltest du prüfen, ob neue Ports geöffnet wurden.

Offene Ports anzeigen:

`ss -tulpen`

### Support kontaktieren

Wenn du ein Paket nicht installieren kannst, kontaktiere den Support mit möglichst genauen Angaben.

Hilfreich sind:

* Betriebssystem
* Paketname
* verwendeter Befehl
* genaue Fehlermeldung
* ob du als Root oder mit sudo arbeitest
* ob genug Speicherplatz vorhanden ist
* ob kurz vorher Updates oder Änderungen durchgeführt wurden

**Sicherheit:** Sende niemals Passwörter, private SSH-Keys oder andere geheime Zugangsdaten an den Support.
