Bien, entiendo cómo puedo usar apt-get {install|upgrade|remove} mypackages
para instalar, actualizar o eliminar archivos binarios, así como sus archivos de datos de configuración y dependencias (en realidad, remove
solo eliminará los archivos binarios a menos que se proporcionen marcas adicionales).
No estoy buscando cómo se usa como man
describe esto, sino un alto nivel de lo que está haciendo. Mi objetivo final es crear un medio para instalar y administrar un software personalizado (creado por un archivo make) en múltiples máquinas remotas, y necesito aprender más sobre el proceso. Si las respuestas a esta pregunta se basan en qué distribución se utiliza, por favor, personalícela a Debian.
Además de cómo funciona en general, tengo las siguientes preguntas específicas:
- ¿Cómo el cliente que está accediendo al repositorio de apt hace un seguimiento de los archivos?
- ¿Debe estar alojado el repositorio en el mismo sistema operativo (es decir, ¿puede ser alojado el repositorio apt en redhat)?
- ¿Cómo se especifican las ubicaciones para instalar archivos? ¿Está esto especificado por el
.deb
archivo? - ¿Cómo accede una máquina remota al repositorio? ¿Es solo ftp (s) o http (s)?
- ¿La máquina que aloja el repositorio está ejecutando un software especial (como gitlab para un repositorio git), o es solo un sistema de archivos estructurado?
fuente
Respuestas:
Debes echar un vistazo a https://wiki.debian.org/Packaging : el tutorial de empaquetado allí te ayudará mucho, así como partes de la nueva guía del mantenedor.
En cuanto a sus preguntas, en orden:
El repositorio contiene archivos de "lista". Por ejemplo, http://http.us.debian.org/debian/dists/stretch/main/binary-amd64/Packages.xz .
apt-get update
descarga estos archivos de lista y los almacena en/var/lib/apt/lists
. Los archivos de la lista enumeran todos los paquetes, incluidos un grupo de metadatos y una URL relativa para encontrar el .deb en. (Son archivos de texto sin formato legibles por humanos, así que puedes verlos).El sistema operativo no importa. Puede alojarlo en Windows, si lo desea. (Bueno, tal vez tengas problemas con los nombres de archivo que a Windows no le gustan) (ver también # 4 y # 5).
Sí, está dentro del archivo deb. Un archivo deb es en realidad un archivo (usando
ar
). Dentro hay algunos archivos tar; uno de ellos es (esencialmente) extraído a/
.Es solo HTTP (o HTTPS, o FTP, o ... apt-get admite muchos protocolos). Sin embargo, nada especial. Tenga en cuenta que hay archivos Release, firmados con gpg, que garantizan la integridad incluso sin HTTPS. Las réplicas de Debian utilizan principalmente HTTP, no HTTP. (Algunos admiten HTTPS también para la confidencialidad).
Es solo un sistema de archivos estructurado.
Una descripción rápida y de alto nivel de cómo interactúa apt-get con una fuente de paquete:
Usted configura qué fuentes mirar en su archivo sources.list. Considere una línea como:
deb
dice que esta es una fuente para obtener archivos .deb (binarios); luego está el prefijo URL, suite / release ("stretch") y componente ("main").apt-get tiene una lista de arquitecturas, la obtiene de dpkg. Digamos que
dpkg --print-architecture
esamd64
. apt-get ahora puede construir las URL de las que realmente va a descargar, combinando el prefijo de URL, la palabra "dists", la suite, el componente y la arquitectura. Luego agrega algunos nombres de archivo fijos, como "Packages.xz". Eso da la URL anterior (en el n. ° 1). Hay algunos archivos más con nombres / rutas definidos, como el archivo Release http://http.us.debian.org/debian/dists/stretch/Release y su firma (lo mismo, con .gpg adjunto). Todos estos son archivos de texto sin formato (posiblemente comprimidos). El archivo de lanzamiento contiene sumas de comprobación para otros archivos que apt-get va a descargar, como Packages.xz.El archivo Packages.xz enumera todos los paquetes en esa suite / nombre de código / arquitectura. También proporciona la ruta donde se encuentra ese archivo; por ejemplo
pool/main/0/0ad/0ad_0.0.21-2_amd64.deb
.Cuando le pide a apt-get que descargue un paquete, utiliza esa ubicación + la URL base para descargar el paquete, por lo que ese paquete está en http://http.us.debian.org/debian/pool/main/0/0ad /0ad_0.0.21-2_amd64.deb
El otro directorio interesante es en
source
lugar debinary-amd64
. Eso se usa para susdeb-src
entradas; contiene información sobre paquetes fuente (y de lo contrario es bastante similar).Hay algunas otras cosas (todas opcionales, creo) que pueden ser parte del repositorio (es decir, disponibles a través de HTTP): difieren entre las diferentes versiones del archivo Packages.xz; traducciones de descripciones de paquetes, una lista completa de cada archivo instalable y a qué paquete pertenece (Contents-amd64.gz, usado por ejemplo, apt-file, no por apt-get), etc. Es probable que esto no sea relevante para usted, pero puede verlos todos navegando por http://http.us.debian.org/debian/dists/stretch/ ; la mayoría de ellos son archivos de texto sin formato.
Todos estos archivos son texto sin formato. Pueden, en teoría, ser creados a mano. En la práctica, todos usan una de estas herramientas de generación de repositorios . Aquí, y advierto que esta fue una elección tomada hace mucho tiempo, por lo que puede estar desactualizada, usamos mini-dinstall. La salida de esas herramientas son archivos ordinarios o, en el peor de los casos, enlaces simbólicos. Puede sincronizarlos con el servidor web que desee.
fuente
/var/lib/apt/lists/
. El contenido se descarga mediante apt-file y auto-apt.