
Ich arbeite derzeit mit Ubuntu und versuche, ein Debian-System auf einer VM zu installieren, was bedeutet, dass ich mich mit Paketen befassen muss. Da ich neu darin bin, habe ich im Internet und insbesondere im Debian-Wiki viel darüber gelesen (das Ubuntu-Wiki ist auch nützlich). Insbesondere habe ich gelernt, wie man ein lokales Repository erstellt und wie man die Datei „sources.list“ richtig bearbeitet.
Ich habe jedoch noch einige Fragen zur Funktionsweise und Einzelheiten, die ich im Internet nicht finden konnte.
Erstens, wenn Sie ein Online-Repository verwenden. Ich habe verstanden, dass apt-get dem Link folgt, den Sie in die Datei source.list geschrieben haben, und nach einem Packages.gz-Archiv sucht. Was ich nicht verstehe, ist, wie dieses einfache Archiv (das anscheinend nur eine Liste voninstallierbare Pakete) die Installation des Pakets zulassen? Gibt Packages.gz geeignete Informationen darüber, wie man die .deb-Datei findet und dann mit der Installation fortfährt? Oder ist es etwas anderes?
Zweitens zum Sources.gz-Archiv. Ich habe gelesen, dass es der Quellcode der in Packages.gz aufgelisteten Pakete ist, ABER in den meisten Fällen wird es nicht benötigt. Wenn ich also den Link zu diesem Sources.gz in meine source.list-Datei einfüge, was bringt mir das dann wirklich? Was ist der Sinn davon?
Drittens zum lokalen Repository; dies hängt mit den vorherigen Fragen zusammen. Ich weiß, wie man ein lokales Repository mit .deb-Dateien erstellt, aber nehmen wir an, ich habe nur dieses Packages.gz-Archiv: Das wird nicht ausreichen, oder? Und wenn ich das Sources.gz-Archiv habe, wird es funktionieren?
Schließlich habe ich im Debian-Repository gesehen, dass es zusätzlich zum Dist-Repository ein Pool-Repository mit vielen .deb-Dateien gibt. Ich kenne eine Möglichkeit, diese zu installieren (Download der .deb-Datei und ihrer Abhängigkeiten, Installation mit dpkg -i), aber gibt es einen einfacheren Weg? Etwas Automatischeres, das die .deb-Datei online finden, ihre Abhängigkeiten finden und alles installieren könnte? (genau wie apt-get, aber soweit ich es verstanden habe, funktioniert apt-get nur mit den Archiven Packages.gz und Sources.gz, nicht direkt mit .deb)
Es tut mir leid, dass das nicht wirklich eine Frage ist, sondern eher eine Liste von Fragen ^^, aber alles, was ich online gefunden habe, war hauptsächlich „apt-get, suche im Online-Repository nach dem Paket und seiner Abhängigkeit und installiere es über dpkg“, und ich hätte gerne mehr Details dazu.
Antwort1
Die Packages.gz enthält ein
Filename
Feld mit einem Wert, der wahrscheinlich ungefähr so aussiehtpool/main/n/name-of-package/name-of-package_version_amd64.deb
. Dies weist den Paketmanager an, sich diese URL anzusehen.
Wenn Sie beispielsweise die folgende Zeile in Ihrer sources.list(.d) haben:
deb https://some-domain.com/some-url some-distribution main
Sie erhalten die folgende Datei:https://some-domain.com/some-url/dists/some-distribution/main/binary-amd64/Packages.gz
Diese Datei verweist daraufpool/main/n/name-of-package/name-of-package_version_amd64.deb
, sodass Ihr Paketmanager nachschauthttps://some-domain.com/some-url/pool/main/n/name-of-package/name-of-package_version_amd64.deb
.Sources.gz funktioniert auf die gleiche Weise, ist aber optional. Es funktioniert mit
apt source
, das Ihnen die Quelle holt, wenn Sie sie selbst kompilieren möchten, anstatt die vorgefertigten Binärdateien zu verwenden.
Dies ist hauptsächlich für Systemadministratoren nützlich, die die genaue Version des von einer Distribution verwendeten Pakets patchen möchten, und nicht für Mitwirkende/neugierige Personen, die einfach auf die Homepage des Projekts gehen und dort den Build-Anweisungen folgen würden.Wenn sich ein Paket im Pool-Verzeichnis der Distribution befindet, aber nicht in
Packages.gz
, befindet es sich höchstwahrscheinlich in einem anderenPackage.gz
. Beachten Sie, dass Sie in einer typischensources.list
Zeile mehrere Wörter haben:
deb http://archive.ubuntu.com/ubuntu precise main universe multiverse
main
,universe
undmultiverse
jedes hat seine eigenePackages.gz
Datei. Möglicherweise müssen Sie einige aktivieren, da Debian sie beispielsweisenon-free
standardmäßig deaktiviert. Einige Pakete sind jedoch trotzdem nicht verfügbar (nicht einmal im Pool). Sie können nicht vertrauenswürdige Repositories hinzufügen (wie PPAs unter Ubuntu), das fehlende Programm selbst verpacken (damit Sie und andere Personen ihren Paketmanager zum Verwalten dieses Programms verwenden können) oder es einfach selbst erstellen und installieren (Sie sollten das/usr/local
Präfix verwenden, um Konflikte mit Ihrem Paketmanager zu vermeiden).- Wenn ein neues Paket (oder eine neue Version eines Pakets) erscheint,
Release
wird die Datei für die Distribution aktualisiert. Dadurchapt update
weiß man, dass es erneut heruntergeladen werden mussPackages.gz
.