¿Qué hace el apt-get install ...
comando?
Cuando ingreso el apt-get install ...
comando, aparecen algunos textos en la pantalla, pero eso no tiene suficiente información para mí. Quiero saber si algún archivo se crea / edita, se inicia algún servicio y otras actividades ...
¿Hay algún .sh
archivo ejecutado cuando se apt-get install ...
ejecuta? Si es así, ¿cómo puedo ver el contenido de ese sh
archivo?
La razón de esta pregunta es que recientemente intenté instalar tomcat7 con apt-get install tomcat7
. Todo funciona bien hasta que instalo tomcat7-admin
(aplicación web del administrador), el servidor no responde a ninguna solicitud. Lo intenté muchas veces, y esto siempre sucede.
apt
software-installation
TrungDQ
fuente
fuente
apt-get
se sustituye porapt
. El reemplazo aún no está completo, pero funciona parainstall
,upgrade
ydist-upgrade
entre otros.Respuestas:
Principalmente,
apt-get
hace las siguientes cosas:dpkg
que lo instale.dpkg
será:preinst
,postinst
, (yprerm
,postrm
antes de que éstos, si se está actualizando un paquete)Puede interesarle los scripts de mantenedor, que generalmente se encuentran en
/var/lib/dpkg/info/<package-name>.{pre,post}{rm,inst}
. Estos son generalmente scripts de shell, pero no hay una regla estricta. Por ejemplo:fuente
En resumen :
apt-get install
hace todo lo necesario para que su sistema pueda ejecutar con éxito la nueva aplicación de software instalada.Más, alargar:
Preliminares:
Desde la página del manual :
Esos paquetes se almacenan en un repositorio en la red. Entonces,
apt-get
descarga todos los necesarios en un directorio temporal (/var/cache/apt/archives/
). Se descargarán de un servidor web o ftp. Se especifican en el llamadosources.list
; Una lista de repositorios. A partir de entonces se instalan uno por uno de forma procesal.Los primeros son los que no tienen más dependencias; así que no hay que instalar ningún otro paquete para ellos. A través de eso, otros paquetes (que tenían dependencias anteriormente) ahora ya no tienen dependencias. El sistema sigue haciendo ese proceso una y otra vez hasta que se instalan los paquetes especificados.
Cada paquete se somete a un procedimiento de instalación.
Instalación del paquete:
En las distribuciones de Linux basadas en Debian, como Ubuntu, esos paquetes están en un formato estandarizado específico llamado: deb - El formato de paquete binario de Debian .
Dicho paquete contiene los archivos que se instalarán en el sistema. También contienen un archivo de control . Ese archivo contiene scripts que el sistema de empaquetado debe ejecutar en una situación específica; los llamados scripts de mantenedor . Esas secuencias de comandos se dividen en:
preinst
: antes de la instalación de los archivos en la jerarquía de archivos del sistemapostinst
: después de la instalaciónprerm
: antes de la desinstalaciónpostrm
: después de la desinstalaciónHay una imagen interesante, que muestra el procedimiento de instalación de un nuevo paquete:
También hay más archivos de control, los más importantes son los siguientes:
control
: Una lista de las dependencias y otra información útil para identificar el paqueteconffiles
: Una lista de archivos de configuración (generalmente aquellos en/etc
)debian-binary
: contiene la versión del paquete deb, actualmente 2.0md5sums
: Una lista de sumas md5 de cada archivo en el paquete para verificartemplates
: Un archivo con descripciones de errores y cuadros de diálogo durante la instalaciónfuente
Para las cosas reales debajo del capó , necesitarás obtener la fuente Apt. Bastante simple si tiene repositorios de origen habilitados:
El
apt-get
comando en sí mismo vivecmdline/apt-get.cc
. Es difícil leerlo, pero la mayoría deapt-get
las acciones se detallan de forma bastante extensa allí. Sin embargo, la instalación se asigna a través de unaDoInstall
función en la que viveapt-private/private-install.{cc,h}
.Debe recordar que apt-get es simplemente una cara de la moneda.
dpkg
está manejando la instalación real peroDoInstall
no lo sabedpkg
directamente.apt-get
en realidad es sorprendentemente agnóstico de administrador de paquetes. Toda la funcionalidad se abstrae a través deapt-pkg/package-manager.cc
Solo miro brevemente, pero incluso allí no puedo ver dónde se une esto realmente a los
dpkg
sistemas. Algo de esto parece configurarse automáticamente,apt-pkg/aptconfiguration.cc
pero este es un pozo profundo. Podrías pasar días desentrañando esto.Sin embargo, la documentación fuente es buena. Podría hacer cosas peores que revisar cada archivo y leer el encabezado para averiguar lo que realmente está sucediendo.
fuente
Aquí hay algunas respuestas fantásticas que son mejores que esta breve, pero algo que podría considerar para ayudarlo a comprender mejor los cambios realizados por un administrador de paquetes es Docker . Puede diferenciar los cambios realizados en un contenedor utilizando
docker diff <container>
y le mostrará todos los cambios. Esto es especialmente útil para echar un vistazo debajo del capó para ver qué leapt-get install
hace a un sistema. Una búsqueda rápida le proporcionará varios recursos para ayudar a implementar esto.fuente