Que fait la apt-get install ...
commande?
Lorsque je saisis une apt-get install ...
commande, des textes apparaissent à l'écran, mais ils ne contiennent pas assez d'informations. Je veux savoir si un fichier est créé / édité, si un service est démarré et d'autres activités ...
Y at-il un .sh
fichier exécuté lors de l' apt-get install ...
exécution? Si oui, comment puis-je voir le contenu de ce sh
fichier?
La raison de cette question est que j’ai récemment essayé d’installer tomcat7 avec apt-get install tomcat7
. Tout fonctionne bien jusqu'à ce que j'installe tomcat7-admin
(application Web du gestionnaire), le serveur ne répondait plus à aucune requête. J'ai essayé cela plusieurs fois, et cela se produit toujours.
apt
software-installation
TrungDQ
la source
la source
apt-get
est remplacé parapt
. Le remplacement est pas encore terminée, mais il travaille pourinstall
,upgrade
etdist-upgrade
entre autres.Réponses:
Fait principalement
apt-get
les choses suivantes:dpkg
de l'installer.dpkg
volonté:preinst
,postinst
(etprerm
,postrm
avant ceux - ci, si un paquet est mis à jour)Vous pourriez être intéressé par les scripts du responsable, qui sont généralement situés à l'adresse
/var/lib/dpkg/info/<package-name>.{pre,post}{rm,inst}
. Ce sont généralement des scripts shell, mais il n'y a pas de règle stricte. Par exemple:la source
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:
De la page de manuel :
Ces packages sont stockés sur un référentiel du réseau. Alors,
apt-get
télécharge tous les fichiers nécessaires dans un répertoire temporaire (/var/cache/apt/archives/
). Ils seront téléchargés depuis un serveur web ou ftp. Ils sont spécifiés dans le soi-disantsources.list
; une liste de référentiels. À partir de ce moment-là, ils sont installés un à un dans les procédures.Les premiers sont ceux qui n'ont plus de dépendances; donc, aucun autre paquet ne doit être installé pour eux. Grâce à cela, d'autres paquets (qui avaient des dépendances auparavant) n'ont plus de dépendances. Le système continue à répéter ce processus jusqu'à ce que les packages spécifiés soient installés.
Chaque paquet subit une procédure d'installation.
Installation du package:
Dans les distributions Linux basées sur Debian, comme Ubuntu, ces paquets sont dans un format normalisé spécifié appelé: deb - Le format du paquet binaire Debian .
Un tel paquet contient les fichiers à installer sur le système. En outre, ils contiennent un fichier de contrôle . Ce fichier contient des scripts que le système de packaging doit exécuter dans une situation spécifique. les scripts dits de mainteneur . Ces scripts sont divisés en:
preinst
: avant l'installation des fichiers dans la hiérarchie de fichiers du systèmepostinst
: après l'installationprerm
: avant la désinstallationpostrm
: après la désinstallationIl y a une image intéressante, montrant la procédure d'installation d'un nouveau paquet:
Il y a aussi plus de fichiers de contrôle, les plus importants étant les suivants:
control
: Liste des dépendances et autres informations utiles pour identifier le paquetconffiles
: Une liste de fichiers de configuration (généralement ceux de/etc
)debian-binary
: contient la version du paquet deb, actuellement 2.0md5sums
: Une liste des sommes md5 de chaque fichier du paquet à vérifiertemplates
: Un fichier avec des descriptions d'erreur et des boîtes de dialogue lors de l'installationla source
Pour ce qui est du sous-capot , vous devez récupérer la source Apt. Assez simple si vous avez activé les référentiels sources:
La
apt-get
commande elle-même vit àcmdline/apt-get.cc
. C'est pénible à lire, mais la plupart desapt-get
actions sont décrites de manière assez détaillée. L'installation est toutefois mappée par uneDoInstall
fonction qui réside dansapt-private/private-install.{cc,h}
.Vous devez vous rappeler que apt-get n'est qu'un côté de la médaille.
dpkg
gère l'installation actuelle maisDoInstall
ne le sait pasdpkg
directement.apt-get
est en fait étonnamment agnostique pour les gestionnaires de paquets. Toutes les fonctionnalités sont résumées à traversapt-pkg/package-manager.cc
Je ne fais que regarder brièvement mais même là, je ne vois pas où cela se rattache réellement aux
dpkg
systèmes. Une partie de cela semble être autoconfigurée,apt-pkg/aptconfiguration.cc
mais c'est un puits profond. Vous pourriez passer des jours à démêler cela.La documentation source est bonne cependant. Vous pourriez faire des choses pires que de parcourir chaque fichier et de lire l'en-tête pour comprendre ce qui se passe réellement.
la source
Docker est une solution que vous pouvez envisager pour vous aider à mieux comprendre les modifications apportées par un gestionnaire de paquets . Vous pouvez comparer les modifications apportées dans un conteneur à l'aide de
docker diff <container>
et il vous montrera toutes les modifications. Ceci est particulièrement utile pour jeter un coup d'œil sous le capot pour voir ce queapt-get install
fait un système. Une recherche rapide vous donnera plusieurs ressources pour vous aider à mettre en œuvre cela.la source