[[Vorlage(Kopie, Eigene_Paketquelle_anlegen)]] [[Vorlage(Getestet, )]] [[Vorlage(Fehlerhaft, "Man kann so zwar eine eigene Paketquelle anlegen, diese aber nicht benutzen! Apt verarbeitet inzwischen nur noch signierte Quellen und man benötigt auch eine Release-Datei.")]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Paketen] [:Terminal: Ein Terminal öffnen] [:Paketquellen freischalten: Bearbeiten von Paketquellen] [:Editor: Einen Editor öffnen] [:Rechte: Rechte für Dateien und Ordner ändern] }}} [[Inhaltsverzeichnis()]] [[Bild(Wiki/Icons/package.png, 48, left)]] Neben der Nutzung der offiziellen [:Paketquellen:] oder von anderen Quellen wie z.B. ein [:Launchpad/PPA: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: {{{#!vorlage Paketinstallation 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: {{{#!vorlage Befehl sudo dpkg-scanpackages ./ /dev/null | gzip > Packages.gz }}} Wenn ''dpkg'' beim Erstellen des Index ein wenig "meckert", ist das in der Regel belanglos. {{{#!vorlage Experten 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 {{{#!vorlage Befehl 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 [http://debiananwenderhandbuch.de/dpkg-scanpackages.html Debian-Anwenderhandbuch] {de}). [[Vorlage(Fremd, Quelle, "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:/`" 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: {{{#!code Bash #!/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]. = Links = * [:Lokale_Paketquellen:] {Übersicht} Übersichtsartikel * [:reprepro:] - Werkzeug für eigene Paketquellen * Apt-Repositorium erstellen: * [http://www.pro-linux.de/artikel/2/1459/apt-repositorium-erstellen-variante-1-apt-ftparchive.html Variante 1 - apt-ftparchive] {de} * [http://www.pro-linux.de/artikel/2/1475/apt-repositorium-erstellen-variante-2-reprepro.html Variante 2 - reprepro] {de} #tag: System, Paketverwaltung