ubuntuusers.de

Eigene Paketquelle anlegen

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Wiki/Icons/package.png Neben der Nutzung der offiziellen Paketquellen oder von anderen Quellen wie z.B. ein PPA und weiteren Fremdquellen gibt es auch die Möglichkeit, eine eigene Paketquelle lokal anzulegen. Dies kann zum Beispiel dann sinnvoll sein, wenn man regelmäßig Pakete bzw. Paketzusammenstellungen braucht, die in dieser Form in keiner anderen Quelle vorhanden sind oder die man selbst als Paket erstellt hat.

Weitere Programme mit ähnlichen Funktionen sind im Artikel Lokale Paketquellen zu finden.

Paketquelle anlegen

Das Erstellen einer eigenen Paketquelle setzt die Installation [1] des folgenden Paketes voraus:

  • dpkg-dev

Paketliste zum Kopieren:

sudo apt-get install dpkg-dev 

Oder mit apturl installieren, Link: apt://dpkg-dev

Um die Paketquelle zu erstellen, legt man zunächst beispielsweise im Homeverzeichnis einen neuen Ordner ~/Software an, in den man die gewünschten Pakete schiebt. Nun muss ein Index aller Pakete der eigenen Paketquelle erstellt werden. Dazu wechselt man im Terminal [2] in das Verzeichnis mit den Paketen und gibt anschließend den folgenden Befehl ein:

sudo dpkg-scanpackages ./ /dev/null | gzip > Packages.gz 

Wenn dpkg beim Erstellen des Index ein wenig "meckert", ist das in der Regel belanglos.

Experten-Info:

Besonders bei mit checkinstall selber erzeugten Paketen wird eine leere Depends-Zeile in die Paketbeschreibung eingefügt, was zu Problemen mit APT führt. Abhilfe schafft, die leere Depends-Zeile zu entfernen. Das funktioniert am besten mit

sudo dpkg-scanpackages -m ./ /dev/null | sed '/^Depends:[[:space:]]*$/d' | gzip > Packages.gz 

Einbindung in das System

Um die selbst zusammengestellte Paketquelle in das System einzubinden, wird in der Paketverwaltung folgende Angabe (angenommen, die Pakete befinden sich in ~/Software) gemacht, wobei der Ausdruck BENUTZER durch den Namen des Benutzers zu ersetzen ist [3]:

deb file:/home/BENUTZER/Software ./ 

Bitte die Schreibweise der Quelle genau beachten - nur ein einfacher Slash nach dem file:, alles andere schlägt fehl (s.a. das Debian-Anwenderhandbuch 🇩🇪).

Hinweis!

Zusätzliche Fremdquellen können das System gefährden.


Anmerkung: Da es sich auch bei einer lokalen Paketquelle nicht um eine offizielle Ubuntu-Quelle handelt, muss sie wie alle anderen Fremdquellen behandelt werden. Die Risiken für das System und die Paketverwaltung bestehen weiterhin, auch wenn man möglicherweise einzelne Aspekte ausschließen kann.

Natürlich ist es auch möglich, eine Paketquelle in einem durch einen Webserver (z.B. Apache) freigegebenen Verzeichnis zu erstellen, um die selbst erstellten bzw. zusammengesuchten Pakete im Netzwerk/Internet verfügbar zu machen. Diese Paketquelle wird dann mit "deb http:/<Server-IP>" auf den Clients eingebunden und nicht mit "deb file:/".

Nach dem Hinzufügen müssen die gesamten Paketquellen grundsätzlich neu eingelesen werden. Die Paketverwaltung liest die Quelle nur ein, wenn sie auch richtig angegeben wurde. Andernfalls kann es passieren, dass das System bei Leseversuchen auf eine falsch angegebene Quelle einfriert und nur noch sporadisch reagiert. Falls die Quellenangabe in Synaptic vorgenommen wurde, wird sie im Falle, dass sie falsch war, automatisch gelöscht und das System läuft ohne Probleme weiter. Demzufolge ist die Angabe einer lokalen Paketquellen in Synaptic einer manuellen Bearbeitung der sources.list vorzuziehen.

Selbstverständlich ist es auch möglich, die Paketquelle auf CD/DVD zu brennen und dann in das System einzubinden. Dazu muss im einfachsten Fall der Inhalt des Software-Ordners direkt in der obersten Verzeichnisebene der CD liegen - ohne Unterverzeichnisse!

Vereinfachung

Um nicht bei jedem neu hinzugefügten Paket den ganzen, schwer zu merkenden Befehl von Hand eingeben zu müssen, kann man diesen Vorgang durch ein Skript vereinfachen. Dazu erstellt man mit einem Texteditor [4] und Root-Rechten eine Datei /usr/local/bin/refresh_repo mit dem folgenden Inhalt:

1
2
3
#!/bin/sh
cd /home/BENUTZER/Software
sudo dpkg-scanpackages ./ /dev/null | gzip > Packages.gz

Nach dem Speichern unter einem beliebigen Namen muss diese Datei noch als für ihren Besitzer ausführbar markiert werden [5].

Diese Revision wurde am 6. Juni 2017 17:12 von aasche erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: System, Paketverwaltung