# apk — Der Paketmanager von Alpine Linux

> Praxis-Guide zu apk: Pakete installieren, aktualisieren und verwalten unter Alpine Linux — schlank, schnell und das Standard-Pattern für Docker-Images.

Source: https://www.jpkc.com/db/cheatsheets/package-managers/apk/

<!-- PROSE:intro -->
`apk` (Alpine Package Keeper) ist der Paketmanager von Alpine Linux – einer bewusst minimalistischen Distribution, die du vor allem aus schlanken Docker-Images kennst. Er installiert, aktualisiert und entfernt Pakete schnell und mit geringem Platzbedarf, was ihn zur ersten Wahl für Container macht. Das wichtigste Container-Pattern dabei: `apk add --no-cache` installiert Pakete, ohne den Paketindex auf der Platte zu hinterlassen – so bleiben deine Images klein. Dieser Guide zeigt dir die Befehle, die du im Alltag und in Dockerfiles am häufigsten brauchst.
<!-- PROSE:intro:end -->

## Aktualisieren & Upgraden

`apk update` — Aktualisiert den Paketindex.

```bash
apk update
```

`apk upgrade` — Aktualisiert alle installierten Pakete.

```bash
apk upgrade
```

`apk update && apk upgrade` — Aktualisiert Index und Pakete in einem Schritt.

```bash
apk update && apk upgrade
```

## Installieren & Entfernen

`apk add <package>` — Installiert ein Paket.

```bash
apk add curl
```

`apk add <pkg1> <pkg2>` — Installiert mehrere Pakete.

```bash
apk add curl wget git
```

`apk add --no-cache <package>` — Installiert ohne Caching (kleinere Docker-Images).

```bash
apk add --no-cache nodejs npm
```

`apk add --virtual .<name> <packages>` — Installiert als virtuelles Paket (einfaches späteres Entfernen im Block).

```bash
apk add --virtual .build-deps gcc musl-dev
```

`apk del <package>` — Entfernt ein Paket.

```bash
apk del nginx
```

`apk del .<name>` — Entfernt ein virtuelles Paket samt aller zugehörigen Mitglieder.

```bash
apk del .build-deps
```

## Suchen & Informieren

`apk search <query>` — Sucht Pakete nach Namen.

```bash
apk search nginx
```

`apk search -d '<query>'` — Sucht in den Paketbeschreibungen.

```bash
apk search -d 'web server'
```

`apk info <package>` — Zeigt Informationen zu einem installierten Paket.

```bash
apk info nginx
```

`apk info -a <package>` — Zeigt alle Informationen (Abhängigkeiten, Größe, Dateien).

```bash
apk info -a nginx
```

`apk info -L <package>` — Listet die von einem Paket installierten Dateien auf.

```bash
apk info -L nginx
```

`apk list --installed` — Listet alle installierten Pakete auf.

```bash
apk list --installed
```

## Cache & Repositories

`apk cache clean` — Bereinigt den Paket-Cache.

```bash
apk cache clean
```

`cat /etc/apk/repositories` — Zeigt die konfigurierten Repositories.

```bash
cat /etc/apk/repositories
```

`apk add --repository <url> <package>` — Installiert aus einem bestimmten Repository.

```bash
apk add --repository=https://dl-cdn.alpinelinux.org/alpine/edge/testing <package>
```

`apk policy <package>` — Zeigt verfügbare Versionen und ihre Repositories.

```bash
apk policy nodejs
```

## Docker-Muster

`apk add --no-cache <packages>` — Standard-Installationsmuster für Docker (kein zurückbleibender Cache).

```bash
RUN apk add --no-cache python3 py3-pip
```

`apk add --virtual .deps <pkgs> && ... && apk del .deps` — Build-Abhängigkeiten installieren, kompilieren, dann entfernen (Alternative zu Multi-Stage-Builds).

```bash
RUN apk add --virtual .build-deps gcc musl-dev && pip install package && apk del .build-deps
```

`apk --no-cache add <package>` — Alternative Schreibweise für die No-Cache-Installation.

```bash
RUN apk --no-cache add curl bash
```

<!-- PROSE:outro -->
## Fazit

apk macht Paketverwaltung auf Alpine Linux schnell und unkompliziert – genau das, was du in Container-Umgebungen brauchst. In Dockerfiles ist `apk add --no-cache` der Standard: Es vermeidet einen zurückbleibenden Paketindex und hält deine Images schlank, ganz ohne nachträgliches `apk cache clean`. Achte darauf, dass `apk del` Pakete tatsächlich entfernt und systemweite Änderungen meist root (oder `sudo`) erfordern – ein vertippter `del`-Befehl kann Abhängigkeiten mitreißen. Installiere zudem nur aus vertrauenswürdigen Repositories und mit den offiziellen Signaturschlüsseln von Alpine, besonders wenn du `--repository` auf `edge`/`testing` zeigen lässt.

## Weiterführende Links

- [Alpine Linux Wiki: Package Management](https://wiki.alpinelinux.org/wiki/Package_management) – offizielle Dokumentation zu apk (englisch)
- [Alpine Linux – Projektseite](https://alpinelinux.org/) – Downloads, Releases und Hintergründe zur Distribution (englisch)
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [apt](https://www.jpkc.com/db/cheatsheets/package-managers/apt/) – High-Level-Paketmanager von Debian und Ubuntu
- [apt-get](https://www.jpkc.com/db/cheatsheets/package-managers/apt-get/) – klassisches Debian-/Ubuntu-Tool für Skripte
- [brew](https://www.jpkc.com/db/cheatsheets/package-managers/brew/) – Paketmanager für macOS und Linux

