¿Cómo funciona apt-get en detalle?

¿Cómo funciona apt-get en detalle?

Actualmente estoy trabajando con Ubuntu e intento instalar un sistema Debian en una máquina virtual, lo que significa que tengo que lidiar con paquetes. Como soy nuevo en esto, he leído mucho sobre ello en la web y especialmente en la wiki de Debian (la wiki de Ubuntu también es útil). En particular, aprendí cómo crear un repositorio local y cómo editar correctamente el archivo fuentes.list.

Sin embargo, todavía tengo algunas dudas sobre cómo funciona, detalles que no pude encontrar en la web.

  • Primero, cuando utiliza un repositorio en línea. Entendí que apt-get seguirá el enlace que escribiste en el archivo source.list y buscará un archivo Packages.gz. Lo que no entiendo es cómo este simple archivo (que parece ser sólo una lista depaquetes instalables) permitir la instalación del paquete? ¿Packes.gz brinda información adecuada sobre cómo encontrar el archivo .deb y luego continuar con la instalación? ¿O es otra cosa?

  • En segundo lugar, sobre el archivo Sources.gz. He leído que es el código fuente de los paquetes enumerados en Packages.gz, PERO en la mayoría de los casos no es necesario. Entonces, si agrego el enlace a este Sources.gz en mi archivo source.list, ¿qué me aporta realmente? ¿Cuál es el punto de esto?

  • En tercer lugar, sobre el repositorio local; Esto está relacionado con las preguntas anteriores. Sé cómo crear un repositorio local con archivos .deb, pero digamos que solo tengo este archivo Packages.gz: no será suficiente, ¿verdad? y si tengo el archivo Sources.gz, ¿funcionará?

  • Finalmente, he visto en el repositorio de Debian que, además del repositorio dist, hay un repositorio de grupo con una gran cantidad de .deb. Conozco una manera de instalarlos (descargar .deb y sus dependencias, instalarlos con dpkg -i), pero ¿hay alguna manera más fácil? ¿Algo más automático, que pueda encontrar el .deb en línea, encontrar sus dependencias e instalar todo? (al igual que apt-get, pero hasta donde tengo entendido, apt-get solo funciona con los archivos Packages.gz y Sources.gz, no directamente con .deb)

Lo siento, esto no es realmente una pregunta, más bien una lista de preguntas ^^ pero todo lo que encontré en línea fue principalmente "apt-get busca el paquete y su dependencia en el repositorio en línea e lo instala a través de dpkg", y lo haría. como más detalles al respecto.

Respuesta1

  1. Packages.gz contiene un Filenamecampo con un valor que probablemente se parezca a pool/main/n/name-of-package/name-of-package_version_amd64.deb. Esto le dice al administrador de paquetes que mire esa URL.
    Por ejemplo, si tiene la siguiente línea en su fuente.lista(.d):
    deb https://some-domain.com/some-url some-distribution main
    Tendrá el siguiente archivo:https://some-domain.com/some-url/dists/some-distribution/main/binary-amd64/Packages.gz
    Ese archivo hará referencia pool/main/n/name-of-package/name-of-package_version_amd64.deb, por lo que su administrador de paquetes lo verá https://some-domain.com/some-url/pool/main/n/name-of-package/name-of-package_version_amd64.deb.

  2. Sources.gz funciona de la misma manera, pero es opcional. Funciona con apt source, que le traerá el código fuente si desea compilarlo usted mismo en lugar de utilizar los archivos binarios prediseñados.
    Esto es principalmente útil para administradores de sistemas que desean parchear la versión exacta del paquete utilizado por una distribución, en lugar de contribuyentes/personas curiosas que simplemente irían a la página de inicio del proyecto y seguirían las instrucciones de compilación allí.

  3. Si un paquete está en el directorio del grupo de distribución pero no en Packages.gz, lo más probable es que esté en otro Package.gz. Observe cómo tiene varias palabras en una sources.listlínea típica:
    deb http://archive.ubuntu.com/ubuntu precise main universe multiverse
    mainy universecada multiverseuna tiene su propio Packages.gzarchivo. Es posible que necesite habilitar algunos, ya que Debian, por ejemplo, los deshabilita non-freede forma predeterminada. Sin embargo, algunos paquetes aún no estarán disponibles (ni siquiera en el grupo). Puede optar por agregar repositorios que no sean de confianza (como PPA en Ubuntu), empaquetar el programa que falta usted mismo (para que usted y otras personas puedan usar su administrador de paquetes para administrar ese programa) o simplemente compilarlo e instalarlo usted mismo (debe usar el /usr/localprefijo para evite conflictos con su administrador de paquetes).

  4. Cuando aparece un nuevo paquete (versión de un), el Releasearchivo de la distribución se actualiza. Esto permite apt updatesaber que tiene que volver a descargarse Packages.gz.

información relacionada