Okay, ich verstehe, wie ich apt-get {install|upgrade|remove} mypackages
Binärdateien sowie deren Konfigurationsdatendateien und Abhängigkeiten installieren, aktualisieren oder entfernen kann (tatsächlich remove
werden die Binärdateien nur entfernt, sofern keine zusätzlichen Flags bereitgestellt werden).
Ich suche nicht, wie es verwendet wird, wie es das man
beschreibt, sondern auf hohem Niveau, was es tut. Mein Endziel ist es, ein Mittel zu schaffen, mit dem ich eine benutzerdefinierte Software (die von einer Make-Datei erstellt wurde) auf mehreren Remotecomputern installieren und verwalten kann, und ich muss mehr über den Prozess erfahren. Wenn die Antworten auf diese Frage darauf basieren, welche Distribution verwendet wird, passen Sie sie bitte an Debian an.
Neben der allgemeinen Funktionsweise habe ich folgende spezifische Fragen:
- Wie verfolgt der Client, der auf das Apt-Repository zugreift, die Dateien?
- Muss das Repository auf demselben Betriebssystem gehostet werden (dh kann das Apt-Repository auf RedHat gehostet werden)?
- Wie werden die Speicherorte für die Installation der Dateien angegeben? Wird dies in der
.deb
Datei angegeben? - Wie greift ein Remote-Computer auf das Repository zu? Ist es nur ftp (s) oder http (s)?
- Ist der Rechner, auf dem das Repository gehostet wird, eine spezielle Software (wie gitlab für ein Git-Repository) oder handelt es sich nur um ein strukturiertes Dateisystem?
quelle
Antworten:
Sie müssen einen Blick auf https://wiki.debian.org/Packaging werfen - das Paket-Tutorial dort wird Ihnen viel helfen, ebenso wie Teile des neuen Betreuerhandbuchs.
In Bezug auf Ihre Fragen, um:
Das Repository enthält "List" -Dateien. ZB http://http.us.debian.org/debian/dists/stretch/main/binary-amd64/Packages.xz .
apt-get update
Lädt diese Listendateien herunter und speichert sie in/var/lib/apt/lists
. In den Listendateien werden alle Pakete aufgelistet, einschließlich einer Reihe von Metadaten und einer relativen URL, unter der die .deb gefunden werden kann. (Es handelt sich um für Menschen lesbare Nur-Text-Dateien, Sie können sie sich also einfach ansehen.)Betriebssystem spielt keine Rolle. Sie könnten es auf Windows hosten, wenn Sie wollten. (Vielleicht haben Sie Probleme mit Dateinamen, die Windows nicht mag.) (Siehe auch Nr. 4 und Nr. 5).
Ja, es ist in der Deb-Datei. Eine Deb-Datei ist eigentlich ein Archiv (mit
ar
). Darin befinden sich einige Teerdateien; einer von ihnen wird (im Wesentlichen) zu extrahiert/
.Es ist nur HTTP (oder HTTPS oder FTP oder ... apt-get unterstützt viele Protokolle). Nichts besonderes. Beachten Sie, dass es Release-Dateien gibt, die mit gpg signiert sind und die Integrität auch ohne HTTPS gewährleisten. Debian-Spiegel verwenden meistens HTTP, nicht HTTPs. (Einige unterstützen auch HTTPS für die Vertraulichkeit).
Es ist nur ein strukturiertes Dateisystem.
Eine schnelle, allgemeine Übersicht über die Interaktion von apt-get mit einer Paketquelle:
Sie konfigurieren, welche Quellen in Ihrer sources.list-Datei angezeigt werden sollen. Betrachten Sie eine Zeile wie:
deb
sagt, dass dies eine Quelle für .deb-Dateien (Binärdateien) ist; dann gibt es das URL-Präfix, suite / release ("stretch") und component ("main").apt-get hat eine Liste von Architekturen, die von dpkg stammen. Sagen wir mal
dpkg --print-architecture
istamd64
. apt-get kann nun die URLs erstellen, von denen es tatsächlich heruntergeladen werden soll, indem das URL-Präfix, das Wort "dists", die Suite, die Komponente und die Architektur kombiniert werden. Dann werden ein paar feste Dateinamen angehängt, wie "Packages.xz". Das gibt die URL oben (in # 1). Es gibt einige weitere Dateien mit definierten Namen / Pfaden, wie z. B. die Release-Datei http://http.us.debian.org/debian/dists/stretch/Release und deren Signatur (ebenfalls mit angefügtem .gpg). Dies sind alles (möglicherweise komprimierte) Nur-Text-Dateien. Die Release-Datei enthält Prüfsummen für andere Dateien, die apt-get herunterladen wird, z. B. Packages.xz.In der Datei Packages.xz werden alle Pakete in dieser Suite / Codename / Architektur aufgelistet . Es gibt auch den Pfad an, in dem sich diese Datei befindet. zum beispiel
pool/main/0/0ad/0ad_0.0.21-2_amd64.deb
.Wenn Sie apt-get zum Herunterladen eines Pakets auffordern, wird dieser Speicherort + die Basis-URL zum Herunterladen des Pakets verwendet, sodass sich das Paket unter http://http.us.debian.org/debian/pool/main/0/0ad befindet /0ad_0.0.21-2_amd64.deb
Das andere interessante Verzeichnis ist
source
stattbinary-amd64
. Dies wird für Ihredeb-src
Eingaben verwendet. Es enthält Informationen zu Quellpaketen (und ist ansonsten ziemlich ähnlich).Es gibt einige andere Dinge (die alle optional sind, glaube ich), die Teil des Repositorys sein können (dh über HTTP verfügbar sind): Unterschiede zwischen verschiedenen Versionen der Datei Packages.xz; Übersetzungen von Paketbeschreibungen, eine vollständige Liste aller installierbaren Dateien und des Pakets, zu dem sie gehören (Contents-amd64.gz, verwendet von zB apt-file, nicht von apt-get) usw. Diese sind wahrscheinlich für Sie nicht relevant. Sie können sie jedoch alle sehen, indem Sie sich unter http://http.us.debian.org/debian/dists/stretch/ umsehen . Die meisten von ihnen sind Klartextdateien.
Alle diese Dateien sind Klartextdateien. Sie können theoretisch von Hand erstellt werden. In der Praxis verwendet jeder Benutzer eines dieser Repository-Generierungstools . Hier - und ich warne davor, dass dies eine Entscheidung war, die vor langer Zeit getroffen wurde. Vielleicht ist sie veraltet - verwenden wir mini-dinstall. Die Ausgabe dieser Tools sind normale Dateien oder im schlimmsten Fall Symlinks. Sie können sie mit einem beliebigen Webserver synchronisieren.
quelle
/var/lib/apt/lists/
. Inhalte werden von apt-file und auto-apt heruntergeladen.