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 Web und insbesondere im Debian-Wiki viel darüber gelesen (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, Details, die ich im Web nicht finden konnte.
Erstens, wenn Sie ein Online-Repository verwenden. Ich habe verstanden, dass apt-get dem Link folgt, den Sie in der Datei source.list geschrieben haben, und nach einem Packages.gz-Archiv sucht. Was ich nicht verstehe ist, wie dieses einfache Archiv (das nur eine Liste installierbarer Pakete zu sein scheint ) die Installation des Pakets ermöglicht? Gibt Packages.gz passende Informationen darüber, wie Sie die .deb-Datei finden und dann mit der Installation fortfahren können? Oder ist es etwas anderes?
Zweitens über das Sources.gz-Archiv. Ich habe gelesen, dass es der Quellcode der in Packages.gz aufgeführten Pakete ist, ABER in den meisten Fällen wird er nicht benötigt. Also, wenn ich den Link zu diesem Sources.gz in meiner source.list-Datei hinzufüge, was gibt es mir wirklich? Was ist der Sinn davon?
Drittens über das lokale 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: Es wird nicht genug sein, 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 viel .deb gibt. Ich kenne eine Möglichkeit, diese zu installieren (laden Sie die .deb und ihre Abhängigkeiten herunter, installieren Sie sie mit dpkg -i), aber gibt es eine einfachere Möglichkeit? Etwas Automatischeres, das die .deb online finden, ihre Abhängigkeiten finden und alles installieren könnte? (Genau wie apt-get do, 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 dies nicht wirklich eine Frage ist, sondern eine Liste von Fragen ^^, aber alles, was ich online gefunden habe, war meistens "Suche nach dem Paket und seiner Abhängigkeit im Online-Repository und Installation über dpkg", und ich würde es tun wie mehr Details darüber.
Antworten:
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, diese URL zu überprüfen.Wenn Sie beispielsweise die folgende Zeile in Ihrer source.list (.d) haben:
deb https://some-domain.com/some-url some-distribution main
Sie haben die folgende Datei: https://some-domain.com/some-url/dists/some-distribution/main/binary- amd64 / Packages.gz
Diese Datei wird referenziert
pool/main/n/name-of-package/name-of-package_version_amd64.deb
, sodass Ihr Paketmanager dies überprüfthttps://some-domain.com/some-url/pool/main/n/name-of-package/name-of-package_version_amd64.deb
.Sources.gz funktioniert genauso, ist jedoch optional. Es funktioniert mit
apt source
, wodurch Sie die Quelle abrufen, wenn Sie sie selbst kompilieren möchten, anstatt die vorgefertigten Binärdateien zu verwenden.Dies ist vor allem für Systemadministratoren nützlich, die die genaue Version des von einer Distribution verwendeten Pakets patchen möchten, anstatt für Mitwirkende / Neugierige, die einfach auf die Homepage des Projekts gehen und dort die Build-Anweisungen befolgen.
Wenn sich ein Paket im Poolverzeichnis der Distribution befindet, aber nicht in
Packages.gz
, befindet es sich höchstwahrscheinlich in einem anderenPackage.gz
. Beachten Sie, wie Sie mehrere Worte in einer typischensources.list
Zeile:deb http://archive.ubuntu.com/ubuntu precise main universe multiverse
main
,universe
undmultiverse
haben jeweils ihre eigenePackages.gz
Datei. Möglicherweise müssen Sie einige aktivieren, da beispielsweise Debiannon-free
standardmäßig deaktiviert ist. Einige Pakete sind jedoch immer noch nicht verfügbar (nicht einmal im Pool). Sie können nicht vertrauenswürdige Repositorys hinzufügen (z. B. 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 Konflikte mit Ihrem Paketmanager vermeiden).Release
Datei für die Distribution aktualisiert. Dies ermöglichtapt update
zu wissen, dass es erneut heruntergeladen werden mussPackages.gz
.quelle
http://ftp.debian.org/debian stretch main
, so dass ich Zugriff auf alle Stretch-Pakete habe. Aber ist es sicher? (Ich denke, ich werde es auf einem VM versuchen: p)