Raspberry Pi OS: Paketquellen prüfen und ändern

Linux besteht vereinfacht gesagt aus einem Kernel und Paketen. Pakete beinhalten Programme, Bibliotheken und Treiber. Pakete können aufeinander aufbauen und sind oftmals von anderen Paketen abhängig. Die Versionen der Pakete und deren Abhängigkeiten werden in den Paketquellen verwaltet. Die Paketquellen stellen Listen bereit, in denen die Pakete und ihre Abhängigkeiten verzeichnet sind. Jede Linux-Distribution hat unter Umständen andere und mehrere Paketquellen (Repository, Software-Archiv).

Gelegentlich gibt es Gründe, die Paketquellen zu ändern oder zu ergänzen.

Übersicht

  1. Paketquellen ermitteln und prüfen.
  2. Paketquellen ändern.
  3. Unnötige Paketquellen löschen.

Lösung a: Paketquellen ermitteln und prüfen

Es geht nicht zwangsläufig darum in den Paketquellen etwas zu ändern, sondern zu prüfen aus welchen Quellen die Pakete bezogen werden und ob diese Quellen für den Zweck und die Anwendung vertrauenswürdig genug sind.

Folgender Befehl listet alle Paketquellen und deren Priorität auf.

apt-cache policy

In der Datei "/etc/apt/sources.list" steht, woher Debians/Raspbians Paketverwaltung neue Programme und Aktualisierungen bekommt.

cat /etc/apt/sources.list

Außerdem muss man noch im Verzeichnis "/etc/apt/sources.list.d" nachschauen, welche Paketquellen zusätzlich eingetragen sind.

ls /etc/apt/sources.list.d

Hier befindet sich beispielhaft die Datei "raspi.list".

cat /etc/apt/sources.list.d/raspi.list

Lösung b: Paketquellen ändern

Je nach Anwendung macht es Sinn den einen oder anderen Bereich der Distribution oder ganze Paketquellen zu ändern oder auszuklammern. Die in Text-Dateien vorliegenden Eintragungen der Paketquellen lassen sich mit einem Text-Editor ändern. Man sollte aber nicht einfach so eine Zeile entfernen, sondern mit einem "#" auskommentieren.

sudo nano /etc/apt/sources.list

Es geht nicht darum hier zwangsweise etwas zu ändern. Folgende Eintragung ist an dieser Stelle sinnvoll.

Für Raspbian Wheezy:

deb http://mirrordirector.raspbian.org/raspbian wheezy main contrib non-free firmware rpi

Für Raspbian Jessie:

deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi

Gegebenenfalls sind noch weitere Dateien aus dem Verzeichnis "/etc/apt/sources.list.d/" zu bearbeiten. Man sollte aber nicht einfach die darin enthaltenen Zeilen entfernen, sondern mit einem "#" auskommentieren.

sudo nano /etc/apt/sources.list.d/raspi.list

Hat man die Dateien bearbeitet, müssen diese nicht nur gespeichert, sondern auch noch die Liste der verfügbaren Pakete aktualisiert werden.

sudo apt-get update

Erst danach werden die Änderung in den verfügbaren Paketen berücksichtigt.

"apt-get update" liest alle in der "/etc/apt/sources.list" und in Verzeichnis "/etc/apt/sources.list.d/" eingetragenen Paketquellen ein und lädt sich anschließend die Listen von diesen Quellen herunter.

Lösung c: Unnötige Paketquellen löschen

Die Paketquellen im Verzeichnis "/etc/apt/sources.list.d/" müssen nicht zwangsläufig verwendet werden. Wenn man möchte, kann man diese löschen. Es sei denn, man hat hier individuelle Einstellungen vorgenommen. Alternativ lassen sich die Zeilen in diesen Dateien auch mit "#" auskommentieren.

sudo rm -f /etc/apt/sources.list.d/*

Anschließend müssen die Paketlisten aktualisiert werden.

sudo apt-get update

Erläuterungen zu der Konfiguration der Paketquellen

Eine Paketquelle wird beispielsweise wie folgt adressiert. Es handelt sich dabei um einen Auszug aus der Datei "/etc/apt/sources.list".

deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free firmware rpi

Was genau bedeutet das?
Die Zeile besteht, getrennt durch Leerzeichen, aus dem Pakettyp, Art und Pfad der Quelle, dem Release-Namen der Distribution und die Komponenten einer Distribution, deren Listen geladen werden sollen. Wobei die Komponenten wiederum durch Leerzeichen voneinander getrennt sind.

Der Pakettyp hat den Wert "deb" oder "deb-src". "deb" bezieht sich auf eine Paketquelle, deren Pakete im Binärformat vorliegen. Der Wert "deb-src" ist nur dann interessant, wenn man den Quellcode von Debian-Paketen herunterladen möchte. Beispielsweise weil man den Quellcode überprüfen, daran Änderungen vornehmen oder selber compilieren möchte. Der Quellcode eines Pakets muss immer gesondert geladen werden, setzt aber voraus, dass die Paketquelle mit "deb-src" eingetragen ist.

Die Art der Quelle kann eine URL mit der Pfadangabe sein. Als Quelle kann aber auch eine CD-ROM oder ein USB-Stick dienen. Eine URL enthält den Pfad zum Stammverzeichnis der Quelle.

Das Release einer Distribution entspricht meist einem Codenamen oder den Werten "stable" (stabil), "testing" (Testphase) oder "unstable" (instabil). Es gibt also von jedem Release mehrere Versionen.
"stable" wäre das gerade aktuelle Release. Der Unterschied zwischen "stable" und dem Codenamen macht sich dann bemerkbar, wenn ein neues Release veröffentlicht wird. Wenn der Codename eingetragen ist, dann bleibt das gewählte Release bestehen, auch wenn es veraltet ist. Bei "stable" wird automatisch auf das neue Release gewechselt, wenn es veröffentlicht wird.
In der Regel wird man immer den Codenamen des aktuell installierten Releases wählen, um zu verhindern, dass ein neues Release ein laufendes System überschreibt. Das kann unvorhersehbare Folgen haben.
"testing" ist die Test-Version der gerade aktuellen Releases und enthält Pakete, die in der stabilen Version noch nicht enthalten sind, aber bereits in der Warteschlange dafür stehen. Der Vorteil dieser Version ist, dass man schneller aktuelle Versionen der Software bekommt.
"unstable" ist die gerade in der aktiven Entwicklung befindlichen Version. Diese Version wird hauptsächlich von den daran arbeitenden Entwicklern genutzt. Darüberhinaus gibt es keinen Grund diese Version für die normale Nutzung zu verwenden.

Die Komponenten am Ende enthalten einen oder meist mehrere Bereiche der Distribution. Mehrere Einträge sind durch Leerzeichen getrennt. Typisch sind die Bereiche "main", "contrib" und "non-free". Der Raspberry Pi enthält zusätzlich den Bereich "rpi".

Aufgrund restriktiver Lizenzen oder rechtlicher Probleme können nicht alle Pakete in einer Liste enthalten sein. Alle Pakete, die unter freier Lizenz gestellt sind und nur Software benötigen, die ebenfalls unter freier Lizenz gestellt sind, sind in "main" enthalten. Pakete, die von ihrem Urheber unter einer freien Lizenz gestellt sind, aber Software benötigen, die nicht frei ist, sind in "contrib" enthalten. Diese nicht freie Software ist an Lizenzbedingungen gebunden, die die Verwendung oder Weitergabe der Software einschränken, und ist somit in "non-free" enthalten.
Raspbian enthält zwei weitere Bereiche, "firmware" und "rpi", die speziell für den Raspberry Pi bereitgestellte Pakete enthält. Beispielsweise auch die Firmware, Kernel und weitere Module und Bibliotheken.

Pakete aus fremden Quellen

Alle Bereiche einer Distribution, die nicht "main" sind können Pakete enthalten, die nicht vertrauenswürdig sind. Pakete, die in "non-free" sind, enthalten Pakete, deren Quellcode nicht veröffentlicht wird. Darunter auch Treiber für Hardware, für die es keinen freien Treiber gibt. Sobald man Software aus "non-free" auf seinen Rechner installiert, muss man damit rechnen, dass dieser Computer kompromittiert werden kann. Denn für "non-free"-Pakete gibt es nicht immer öffentlich zugänglichen Quellcode, den man überprüfen kann.

Wenn es um eine hohe Sicherheit geht, wird man es vermeiden, Hardware und Software einzusetzen, die Pakete aus "non-free" benötigen. Nur dann kann man sicher stellen, die vollständige Kontrolle über diesen Computer zu behalten.

Neben den Paketen aus "non-free" gibt es weitere fremde Quellen. Hierbei muss man die Vertrauenswürdigkeit der Quelle prüfen oder ihre Notwendigkeit infrage stellen. Das Installieren von Paketen aus fremden Quellen kann das System beschädigen, es kann zu Konflikten und Fehlfunktionen zwischen offiziellen und fremden Paketen führen, zu Datenverlust oder zur Installation von Schadsoftware kommen. Es wird daher davon abgeraten fremde Quellen zu benutzen.

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Elektronik-Set Raspberry Pi Edition
Elektronik-Set Raspberry Pi Edition

Elektronik erleben mit dem Raspberry Pi mit Python und GPIO Zero

  • Leichter Einstieg ins Hardware-nahe Programmieren mit Python und GPIO Zero
  • Experimentieren und Programmieren ohne Vorkenntnisse
  • Sofort Loslegen mit All-in-one-Set

Elektronik-Set jetzt bestellen

Elektronik-Fibel

Elektronik einfach und leicht verständlich

Die Elektronik-Fibel ist ein Buch über die Grundlagen der Elektronik, Bauelemente, Schaltungstechnik und Digitaltechnik.

Das will ich haben!