OK, je comprends comment je peux utiliser apt-get {install|upgrade|remove} mypackages
pour installer, mettre à niveau ou supprimer des fichiers binaires, ainsi que leurs fichiers de données de configuration et leurs dépendances (en fait, remove
les fichiers binaires ne seront supprimés que si des indicateurs supplémentaires sont fournis).
Je ne cherche pas à savoir comment il est utilisé comme man
décrit ici, mais à haut niveau ce qu'il fait. Mon objectif final est de créer un moyen pour moi d’installer et de gérer un logiciel personnalisé (créé par un fichier make) sur plusieurs ordinateurs distants, et j’ai besoin d’approfondir mes connaissances du processus. Si les réponses à cette question sont basées sur la distribution utilisée, veuillez l’adapter à Debian.
En plus de savoir comment cela fonctionne, j'ai les questions spécifiques suivantes:
- Comment le client qui accède au référentiel apt garde-t-il une trace des fichiers?
- Le référentiel doit-il être hébergé sur le même système d'exploitation (le référentiel apt peut-il être hébergé sur redhat)?
- Comment les emplacements pour installer les fichiers sont-ils spécifiés? Est-ce spécifié par le
.deb
fichier? - Comment une machine distante accède-t-elle au référentiel? Est-ce juste ftp (s) ou http (s)?
- La machine hébergeant le référentiel utilise-t-elle un logiciel spécial (tel que gitlab pour un référentiel git) ou s'agit-il simplement d'un système de fichiers structuré?
la source
Réponses:
Vous devez consulter https://wiki.debian.org/Packaging - le tutoriel d’emballage qui s’y trouve vous aidera beaucoup, ainsi que certaines parties du guide du nouveau responsable.
En ce qui concerne vos questions, dans l'ordre:
Le référentiel contient des fichiers "list". Par exemple, http://http.us.debian.org/debian/dists/stretch/main/binary-amd64/Packages.xz .
apt-get update
télécharge ces fichiers de liste et les stocke dans/var/lib/apt/lists
. Les fichiers de liste répertorient tous les packages, y compris un ensemble de métadonnées et une URL relative permettant de rechercher le fichier .deb. (Ce sont des fichiers en texte brut lisibles par l’homme, vous pouvez donc les consulter).OS n'a pas d'importance. Vous pouvez l'héberger sur Windows si vous le souhaitez. (Eh bien, vous pourriez avoir des problèmes avec les noms de fichiers que Windows n’aime pas.) (Voir aussi les n ° 4 et 5).
Oui, c'est dans le fichier deb. Un fichier deb est en réalité une archive (utiliser
ar
). À l'intérieur se trouvent des fichiers tar; l'un d'eux est (essentiellement) extrait vers/
.C'est juste HTTP (ou HTTPS, ou FTP, ou ... apt-get supporte beaucoup de protocoles). Rien de spécial, cependant. Notez qu'il existe des fichiers Release, signés avec gpg, qui garantissent une intégrité même sans HTTPS. Les miroirs Debian utilisent principalement HTTP, pas HTTP. (Quelques-uns supportent également HTTPS pour des raisons de confidentialité).
C'est juste un système de fichiers structuré.
Voici un aperçu rapide et détaillé de la manière dont apt-get interagit avec une source de paquet:
Vous configurez les sources à consulter dans votre fichier sources.list. Considérez une ligne comme:
deb
dit que ceci est une source pour obtenir des fichiers .deb (binaires); il y a ensuite le préfixe d'URL, la suite / release ("stretch") et le composant ("main").apt-get a une liste d'architectures, il l'obtient de dpkg. Disons
dpkg --print-architecture
estamd64
. apt-get peut maintenant construire les URL à partir desquelles il va télécharger, en combinant le préfixe d'URL, le mot "dists", la suite, le composant et l'architecture. Ensuite, il pointe sur quelques noms de fichiers fixes, tels que "Packages.xz". Cela donne l'URL ci-dessus (dans # 1). Il existe encore quelques fichiers avec des noms / chemins définis, comme le fichier de publication http://http.us.debian.org/debian/dists/stretch/Release et sa signature (identique, avec .gpg ajouté). Ce sont tous des fichiers texte brut (éventuellement compressés). Le fichier de version contient des sommes de contrôle pour d’autres fichiers qu’apt-get va télécharger, tels que Packages.xz.Le fichier Packages.xz répertorie tous les packages de cette suite / nom de code / architecture. Il donne également le chemin où ce fichier est situé; par exemple
pool/main/0/0ad/0ad_0.0.21-2_amd64.deb
.Lorsque vous demandez à apt-get de télécharger un paquet, il utilise cet emplacement + l'URL de base pour le télécharger. Ce paquet se trouve donc à l' adresse http://http.us.debian.org/debian/pool/main/0/0ad. /0ad_0.0.21-2_amd64.deb
L'autre répertoire intéressant est à la
source
place debinary-amd64
. C'est utilisé pour vosdeb-src
entrées; il contient des informations sur les paquets sources (et est par ailleurs assez similaire).Il y a d'autres choses (toutes facultatives, je crois) qui peuvent faire partie du référentiel (c'est-à-dire disponibles via HTTP): diffs entre différentes versions du fichier Packages.xz; traductions des descriptions de paquet, une liste complète de chaque fichier installable et le paquet auquel il appartient (Contents-amd64.gz, utilisé par exemple par apt-fichier, pas par apt-get), etc. Ceci ne vous concerne probablement pas, mais vous pouvez tous les voir en parcourant http://http.us.debian.org/debian/dists/stretch/ ; la plupart d'entre eux sont des fichiers en texte brut.
Tous ces fichiers sont en texte brut. Ils peuvent, en théorie, être créés à la main. En pratique, tout le monde utilise l'un de ces outils de génération de référentiel . Ici - et je vous avertis que ce choix a été fait il y a longtemps, donc peut-être obsolète - nous utilisons mini-dinstall. La sortie de ces outils sont des fichiers ordinaires ou, au pire, des liens symboliques. Vous pouvez les resynchroniser sur le serveur Web de votre choix.
la source
/var/lib/apt/lists/
. Le contenu est téléchargé par apt-file et auto-apt.