68 votes

Que fait apt-get install sous le capot ?

Que fait le apt-get install ... commande font ?

Quand j'entre apt-get install ... commande, il y a quelques textes qui apparaissent à l'écran, mais cela ne contient pas assez d'informations pour moi. Je veux savoir si un fichier est créé / modifié, si un service est démarré et d'autres activités...

Y a-t-il un .sh exécuté lorsque le fichier apt-get install ... courir ? Si c'est le cas, comment puis-je voir le contenu de ce fichier ? sh fichier ?

La raison de cette question est que récemment j'ai essayé d'installer tomcat7 avec apt-get install tomcat7 . Tout fonctionne bien jusqu'à ce que j'installe tomcat7-admin (application web de gestion), le serveur ne répondait plus à aucune requête. J'ai essayé plusieurs fois, et cela se produit toujours.

56voto

muru Points 180007

En général, apt-get fait les choses suivantes :

  • vérifie les dépendances (et demande de les installer),
  • télécharge le paquet, le vérifie et dit ensuite à dpkg pour l'installer.

dpkg volonté :

  • extraire le paquet et copier le contenu au bon endroit, et vérifier s'il y a des fichiers préexistants et des modifications sur ceux-ci,
  • exécuter paquet mainteneur scripts : preinst , postinst (et prerm , postrm avant ceux-ci, si un paquet est en cours de mise à jour)
  • exécuter certaines actions basées sur déclencheurs

Vous pourriez être intéressé par les scripts du mainteneur scripts, qui sont généralement situés à l'adresse suivante /var/lib/dpkg/info/<package-name>.{pre,post}{rm,inst} . Ce sont généralement des Shell Shell, mais il n'y a pas de règle absolue. Par exemple :

$ ls /var/lib/dpkg/info/xml-core.{pre,post}{rm,inst}
/var/lib/dpkg/info/xml-core.postinst
/var/lib/dpkg/info/xml-core.postrm
/var/lib/dpkg/info/xml-core.preinst
/var/lib/dpkg/info/xml-core.prerm

34voto

chaos Points 25386

En bref : apt-get install fait tout ce qui est nécessaire pour que votre système puisse exécuter avec succès la nouvelle application logicielle installée.

Plus long :

Préliminaires :

Desde el page d'accueil :

Tous les paquets requis par le(s) paquet(s) spécifié(s) pour l'installation seront également récupérés et installés.

Ces paquets sont stockés dans un référentiel sur le réseau. Donc, apt-get télécharge tous ceux qui sont nécessaires dans un répertoire temporaire ( /var/cache/apt/archives/ ). Ils seront téléchargés à partir d'un serveur web ou ftp. Ils sont spécifiés dans ce que l'on appelle sources.list ; une liste de référentiels. A partir de là, ils sont installés un par un de manière procédurale.

Les premiers sont ceux qui n'ont pas d'autres dépendances, donc aucun autre paquet ne doit être installé pour eux. Grâce à cela, les autres paquets (qui avaient des dépendances auparavant) n'ont maintenant plus de dépendances. Le système continue ce processus encore et encore jusqu'à ce que les paquets spécifiés soient installés.

Chaque paquet est soumis à une procédure d'installation.

Installation du paquet :

Dans les distributions Linux basées sur Debian, comme Ubuntu, ces paquets sont dans un format standardisé spécifique appelé : deb -. Le format de paquet binaire de Debian .

Un tel paquet contient les fichiers à installer sur le système. Ils contiennent également un fichier de contrôle . Ce fichier contient des scripts que le système d'empaquetage devrait exécuter dans une situation spécifique ; ce qu'on appelle le mainteneur scripts . Ces scripts sont divisés en :

  • preinst : avant l'installation des fichiers dans la hiérarchie des fichiers du système
  • postinst après l'installation
  • prerm : avant la désinstallation
  • postrm après la désinstallation

Il y a une image intéressante, montrant la procédure d'installation d'un nouveau paquet :

installation

Il y a aussi d'autres fichiers de contrôle, les plus importants sont les suivants :

  • control : A liste des dépendances, et d'autres informations utiles pour identifier le paquet
  • conffiles : A liste des fichiers de configuration (généralement ceux qui se trouvent dans /etc )
  • debian-binary : contient la version de deb-package, actuellement 2.0
  • md5sums : Une liste de md5sums de chaque fichier du paquet à vérifier
  • templates : Un fichier avec description et dialogue des erreurs pendant l'installation

13voto

Mufaka Points 54

Pour l'actuel sous le capot vous devrez récupérer la source Apt. C'est assez simple si vous avez activé les dépôts de sources :

apt-get source apt

El apt-get Le commandement lui-même vit dans cmdline/apt-get.cc . C'est difficile à lire, mais la plupart des éléments de l'histoire de l'humanité. apt-get Les actions de l'entreprise sont expliquées en détail là-dedans. L'installation, cependant, est représentée par un DoInstall qui vit dans apt-private/private-install.{cc,h} .

Il faut se rappeler qu'apt-get n'est qu'un côté de la médaille.
dpkg s'occupe de l'installation proprement dite, mais DoInstall n'est pas au courant dpkg directement. apt-get est en fait étonnamment agnostique vis-à-vis des gestionnaires de paquets. Toutes les fonctionnalités sont abstraites à travers apt-pkg/package-manager.cc

Je ne regarde que brièvement, mais même là, je ne vois pas où cela s'attache au dpkg systèmes. Une partie d'entre eux semble être autoconfigurée par le biais de apt-pkg/aptconfiguration.cc mais c'est un puits profond. Tu pourrais passer des jours à le démêler.

La documentation source est cependant bonne. Vous pouvez faire pire que de parcourir chaque fichier et de lire l'en-tête pour comprendre ce qui se passe réellement.

10voto

L0j1k Points 196

Il y a quelques réponses fantastiques ici qui sont meilleures que cette courte réponse, mais quelque chose que vous pourriez considérer pour vous aider à mieux comprendre les changements faits par un gestionnaire de paquets est Docker . Vous pouvez différer les modifications apportées à un conteneur à l'aide de la fonction docker diff <container> et il vous montrera tous les changements. C'est particulièrement utile pour jeter un coup d'œil sous le capot afin de voir ce qui a été modifié. apt-get install fait à un système. Une recherche rapide vous permettra d'obtenir plusieurs ressources pour aider à la mettre en œuvre.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X