[[Vorlage(Getestet, noble, jammy)]] {{{#!vorlage Wissen [:Editor: einen Editor öffnen] [:mit Root-Rechten arbeiten:] }}} [[Inhaltsverzeichnis()]] Dateien mit der Namensendung '''.sources''' enthalten Information zu Paketquellen im [https://man7.org/linux/man-pages/man5/deb822.5.html Format deb822] {en} für das [:APT:] Paketmanagementsystem, welches auch Ubuntu standardmäßig nutzt. Solche Dateien sind der designierte Nachfolger der Datei [:sources.list:] bzw. allgemein von Angaben zu Paketquellen über Dateien mit der Namensendung '''.list'''; diese enthalten die gleichen Informationen im alten, einzeiligen Format. Ubuntu macht die Verwendung des Formats deb822 ab [:Noble:Ubuntu 24.04 LTS] für die eigenen [:Paketquellen:] zum Standard. Wer weitere Paketquellen hinzufügen möchten kann dies in Form vom Dateien mit Namensendung '''.sources''' machen, auch in Ubuntu Versionen vor 24.04. Das ältere Format in Form von Dateien mit Namensendung '''.list''' wird aber auch nach wie vor unterstützt und man kann auf einem System auch beide Dateiarten für verschiedene Quellen mischen. = Installation = Die Paketverwaltung ist integraler Bestandteil jeder Ubuntu Installation. = Speicherort und Dateiname = Dateien im Format deb822 müssen im Verzeichnis '''/etc/apt/sources.list.d/''' liegen. Der Name der jeweiligen Datei für ein oder mehrere Paketquellen kann im Prinzip beliebig sein und muss auf '''.sources''' enden. = Dateistruktur = In Dateien nach dem Format deb822 werden die Information zu einer Paketquellen in mehreren Zeilen angegeben, zwischen den Zeilen mit Angaben zu einer Quelle darf keine Leerzeile sein. In einer Datei können Informationen zu mehreren verschiedenen Paketquellen enthalten sein, die Blöcke für die jeweiligen Quellen müssen durch eine Leerzeile getrennt sein. Die Reihenfolge der Zeilen innerhalb eines Blocks zu einer Paketquelle kann beliebig sein. Es sind pro Paketquelle mindestens drei Zeilen mit den benötigten Angaben Pflicht, Zeilen mit weiteren Angaben können je nach Paketquelle aber notwendig sein. Beispiel: {{{ Types: deb URIs: http://archive.ubuntu.com/ubuntu Suites: jammy jammy-updates Components: main universe Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg }}} In den Zeilen sind Schlüssel-Wert-Paare eingetragen. Die ersten drei Zeilen mit den Schlüsseln `Types`, `URIs` und `Suites` sind Pflichtzeilen bzw. Pflichtschlüssel, die pro Quelle vorhanden sein müssen. `Components` ist optional, im Falle der Ubuntu-Quellen wie im obigen Beispiel aber notwendig, da diese mehrere Komponenten haben. Wie im Beispiel zu sehen ist, können pro Schlüssel mehrere Werte durch ein Leerzeichen voneinander getrennt angegeben werden. Der Schlüssel `Signed-By` für den öffentlichen Signaturschlüssel, mit dem die Quelle signiert ist, muss bei signierten Quellen (wie den Ubuntu Quellen) ebenfalls vorhanden sein. {{{#!vorlage Hinweis Ubuntu erzwingt noch nicht, dass ausschließlich signierte Quellen vorhanden sind. Ab Ubuntu 24.10 erhält man aber eine Warnung bei unsignierten Quellen und für spätere Versionen ist geplant, ausschließlich signierte Quellen zu verwenden. Im eigenen Interesse sollte man aber immer nur signierte Paketquellen verwenden, um zu verhindern, Software aus möglicherweise kompromittierten Archiven zu installieren. }}} Außerdem gibt es noch einige weitere Schlüssel, die im obigen Beispiel aber nicht vorkommen. Die Schlüssel haben die folgenden Bedeutungen: {{{#!vorlage Tabelle <-3 tableclass="zebra_start3" rowclass="titel" :>Schlüssel mit Erklärung zu .sources-Dateien +++ Schlüssel Pflicht? Erklärung +++ `Types` ja Enthält die Information, welcher Pakettyp berücksichtigt werden soll. Mögliche Werte sind `deb` für Binärpakete und `deb-src` für Quellcode-Pakete +++ `URIs` ja Ein oder mehrere "Unified Ressource Identifier" der Quelle(n) des Pakets. Kann, wie im obigen Beispiele, eine URL sein, aber auch z.B. `file` für eine lokale Datei. +++ `Suites` ja Kann der Name bzw. die Namen (wie im obigen Beispiel) ein oder mehrere Archive unterhalb der URI oder ein Pfad relativ zur URI. Bei einem Pfad muss dieser mit einem `/` enden. Wenn die Pakete direkt unter der URI liegen und es keine weiteren Archive oder relativen Pfad gibt, muss hier `./` eingetragen werden. +++ `Components` nein Hier wird angegeben, welche Komponente bzw. Komponenten -- wie im obigen Beispiel `main` und `universe` -- aus der Paketquelle gelesen werden sollen. +++ `Signed-By` nein Absoluter Pfad zum Speicherort des öffentlichen Schlüssels, mit dem die Paketquelle signiert ist. Schlüssel von Fremdquellen sollte man immer unter '''/etc/apt/keyrings/''' speichern. Alternativ kann der Schlüssel hier auch direkt in [#Schluessel-in-Textform-ablegen Textform abgelegt werden]. +++ `Architectures` nein Gibt an, für welche CPU-Architektur(en) Pakete gelesen werden sollen. Mögliche Werte sind z.B. `amd64` oder `arm64`. +++ `Enabled` nein Mögliche Werte sind `yes` (implizite Vorgabe) und `no`. Gibt an, ob die in diesem Block definierte Paketquelle gelesen werden soll. Setzt man `Enabled: no`, wird die Quelle nicht berücksichtigt. }}} Es gibt noch eine Reihe weiterer möglicher Optionen. Dies sind die gleichen wie für die Einträge in der Datei '''sources.list'''. Informationen dazu sind [https://manpages.debian.org/stretch/apt/sources.list.5.en.html#THE_DEB_AND_DEB-SRC_TYPES:_OPTIONS in der Dokumentation] {en} zu finden. == Schlüssel in Textform ablegen == Wie in der obigen Tabelle mit den Erklärungen zu den Schlüsseln erwähnt, kann ein öffentlicher Schlüssel für eine signierte Paketquelle auch direkt in Textform in der Datei abgelegt werden. Dies sieht dann z.B. so aus: {{{ Types: deb URIs: https://typora.io/linux Suites: ./ Architectures: amd64 Signed-By: -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1 . mQENBFfnQVEBCADPtPh703CFkr0xRRZpVoD04jSYn7Kg6DssR+2ItivGup9bu5B9 lKEzIeg1Cjxt5DJwZ1e4ZDMdMX1CjtkIjErvSQ21pjgIWFmj3klh1TblwfxQTupQ ARhhAOdxpLmTz3a20HW7/IMo/0RSZAS1eFkiCEekUY3aqI483UsQUCQ/HYr1QU/f YBLEnlfdS+1L6SzKkop+cwga6Py/r1kQzibvHns8dwY9qvzBiyn41LAc1ytAhTZA UTwYcOvEGcIscEHesy3DsLE1CtHLjPerm21EdAszxWxpQQzi2BhZ9BwzhHMO4KRS lfyJCvFTKZ0LEMljlPOIWze7o4uBaDBWBFdFABEBAAG0G0FibmVyIExlZSA8YWJu ZXJAdHlwb3JhLmlvPokBOAQTAQIAIgUCV+dBUQIbAwYLCQgHAwIGFQgCCQoLBBYC AwECHgECF4AACgkQujALd1Wvz657DwgAtqLc29tRAqNEa28npGHvRiXZcksPJ7cm 9na7nefi1OSgYESCSLOb2JNrtmCc6krCkRKPPQnwSa5jydZ2azZDrvYdRKB8yBnQ PiKMaUX5RdfM4wNDGhBGFlHFBhDKPurOnUml0EqEca6RNmNZR9ach8wFmVMVLkVT 1oiU/KkBWdn11MXZOAVrV2N5smNj1lpe3jJh/sFLTHAcgPRmHjKgsy0e8Rhcz2CS O3IX27C7ddFvW6jxE3seDM5e2O9+ji/a51BmTkUVVYH5AzmJVig9H0Bj1zo4t8qV WhaVREr49CSHJ3gT/yv96qPJsMoCUPSO4q2iRHLW6wYl0upfCskExg== =yAo+ -----END PGP PUBLIC KEY BLOCK------ }}} Wichtig sind dabei zwei Punkte: 1. Die Zeilen nach `Signed-By:`, welche den Schlüssel in Textform enthalten, müssen mit einem Leerzeichen eingerückt sein. 1. Leerzeilen, wie im obigen Beispiel die 3. Zeile, dürfen nicht leer sein, sondern müssen einen Punkt am Anfang der Zeile anhalten. = Beispiele = == Format umwandeln == Im folgenden Beispiel wird gezeigt, wie man einen Eintrag für [:Visual_Studio_Code:] (Zeile in der Datei '''sources.list''' ) in eine entsprechende Datei im Format deb822 umwandelt. Der Eintrag in der Datei '''sources.list''' sieht wie folgt aus: {{{ deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main }}} Möchte man stattdessen die Paketquelle in einer Datei mit Format deb822 hinterlegen, geht man wie folgt vor: Man legt zuerst eine Datei '''/etc/apt/sources.list.d/visualstudiocode.sources''' an. Der Name der Datei kann natürlich auch anders lauten, muss aber auf '''.sources''' enden. Dann öffnet man die Datei mit einem Editor mit Root-Rechten[1][2] und fügt folgenden Inhalt ein: {{{ Types: deb URIs: https://packages.microsoft.com/repos/code Suites: stable Components: main Architectures: amd64 arm64 armhf Signed-By: /etc/apt/keyrings/packages.microsoft.gpg }}} Sofern der unter `Signed-By` definierte GPG-Schlüssel an der angegebenen Stelle abgelegt ist, kann man jetzt die Paketquellen neu einlesen und könnte dann Visual Studio Code aus der Fremdquelle installieren. == Pflege über grafische Oberfläche == === 24.04 === Die Anwendung ''"Anwendungen & Aktualisierungen"'' (Programmname: '''software-properties-gtk''' bzw. '''software-properties-qt''', je nach der vom System verwendeten Grafikbibliothek) unterstützt das Hinzufügen von Paketquellen im Format deb822 leider noch nicht. Man kann eine Paketquelle aber nach wie vor im einzeiligen Format eingeben und es wird eine entsprechende .list Datei unter '''/etc/apt/sources.list.d''' angelegt. Möchte man weitere Paketquellen im Format deb822 hinterlegen, müssen sie wie oben beschrieben mit einem Editor mit Root-Rechten vom Hand erstellt werden. Hat man eine Paketquelle in Form einer Datei mit Namensendung `.sources` wie weiter oben beschrieben über einen Editor hinzugefügt, kann man die Angaben zur Quelle über grafische Anwendung jedoch editieren und speichern. === 22.04 und 20.04 === Ubuntu 22.04 und 20.04 können zwar mit Dateien im Format deb822 umgehen und Anwendungen aus den darin angegebenen Paketquellen installieren, die grafische Anwendung ''"Anwendungen & Aktualisierungen"'' kann mit solchen Dateien aber noch nicht umgehen. Dies bedeutet, dass in Dateien im Format deb822 definierte Paketquellen in der Anwendung nicht angezeigt werden und entsprechend nicht editiert oder entfernt werden können. Das Hinzufügen und Editieren von Paketquellen im einzeiligen Format über Dateien mit Namensendung `.list` funktioniert natürlich. Möchte man Dateien mit Namensendung `sources` unter Ubuntu 22.04 und 20.04 nutzen, muss man diese wie oben beschrieben mit einem Editor mit Root-Rechten anlegen bzw. editieren. === Synaptic === [:Synaptic:] greift zum Anlegen von Paketquellen auf die oben genannten Anwendung ''"Anwendungen & Aktualisierungen"'' zurück, d.h. es gelten die gleichen Einschränkungen. === Andere Werkzeuge === Man darf bei 24.04 noch nicht erwarten, dass alle gängigen grafischen Werkzeuge das neue Format bereits unterstützen. Siehe hierzu die [#Links Information von Ubuntu]. = Offizielle Quellen = Hier findet man als Referenz die Dateiinhalte von '''/etc/apt/sources.list.d/ubuntu.sources''' der aktuellen Versionen von Ubuntu ab [:24.04:Ubuntu 24.04 Noble Numbat]. Frühere Versionen von Ubuntu verwenden standardmäßig diese Datei nicht, siehe hierzu den Artikel [:sources.list:]. == Ubuntu 24.04 Noble Numbat == {{{ Types: deb URIs: http://de.archive.ubuntu.com/ubuntu/ Suites: noble noble-updates noble-backports Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg Types: deb URIs: http://security.ubuntu.com/ubuntu/ Suites: noble-security Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg }}} = Links = == intern == * [:Paketverwaltung:] * [:sources.list:] * [:apt/Schlüsselverwaltung:] == extern == * [https://repolib.readthedocs.io/en/latest/deb822-format.html#deb822-explanation umfangreiche Erklärung] {en} von Dateien im Format deb822 * [ubuntu_discourse:spec-apt-deb822-sources-by-default/29333:Information] {en} von Ubuntu / Canonical zur Verwendung von Dateien im Format deb822 ab Ubuntu 24.04 LTS für die eigenen Paketquellen #tag: System, Paketverwaltung