¿Por qué hay archivos deb en / var / cache / apt / archives /?

Respuestas:

21

Información de contexto

Hay dos cosas en Ubuntu (y en Debian, en las que se basa Ubuntu) que comúnmente se llaman "el administrador de paquetes": dpkgy APT.

dpkges un programa que instala y elimina paquetes y mantiene una base de datos de qué paquetes están instalados y en qué versiones. Cuando instala paquetes, lo hace desde .debarchivos de almacenamiento. Estos archivos son la forma en que se distribuyen los paquetes.

dpkghace más que copiar (o eliminar) archivos y actualizar su base de datos; también ejecutará scripts de instalación y scripts de eliminación. Puede considerarse bastante sofisticado. Pero lo que no hará es encontrar y descargar paquetes.

APT encuentra y descarga paquetes, y se ejecuta dpkgadecuadamente para instalarlos, actualizarlos y eliminarlos. APT no es realmente una sola pieza de software, aunque hay un paquete aptoInstalar apt que proporciona sus partes esenciales.

APT incluye una biblioteca ( libapt-pkg ) que proporciona funcionalidad central, a la que acceden varias herramientas. Algunas de estas herramientas, como apt-get, también son proporcionadas por el paquete aptInstalar apt . Otras herramientas se instalan por separado. APT también proporciona varios archivos de configuración que controlan cómo funciona su biblioteca principal y los programas que la utilizan.

Más que eso, APT es un sistema para almacenar y recuperar datos sobre qué fuentes de software proporcionan qué paquetes en qué versiones, y para actuar sobre esos datos para realizar automáticamente tareas de administración de paquetes como instalar y actualizar paquetes. Esto incluye hacer un seguimiento de qué paquetes son necesarios para que otros paquetes funcionen, y elegir e instalar automáticamente los paquetes apropiados para satisfacer estas dependencias.

Por ejemplo, cuando le digo a la apt-getutilidad que instale el paquete chocolate-doomInstalar chocolate-doom , descubre qué otros paquetes deben instalarse para que funcione y también los recuperará e instalará automáticamente:

$ sudo apt-get install chocolate-doom
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  doom-wad-shareware libmikmod3 libsdl-mixer1.2 libsdl-net1.2 libsdl1.2debian
Recommended packages:
  doom-engine
The following NEW packages will be installed:
  chocolate-doom doom-wad-shareware libmikmod3 libsdl-mixer1.2 libsdl-net1.2
  libsdl1.2debian
0 upgraded, 6 newly installed, 0 to remove and 1 not upgraded.
Need to get 0 B/2,846 kB of archives.
After this operation, 8,626 kB of additional disk space will be used.

Las herramientas gráficas como el Centro de software, el Actualizador de software / Administrador de actualizaciones y Synaptic realizan funciones similares a apt-get. También usan el sistema APT, mediante una combinación de observar sus reglas y utilizar la funcionalidad proporcionada por las bibliotecas principales, para cambiar qué paquetes están instalados, para darle al usuario lo que él / ella quiere (generalmente), de tal manera que las cosas (por lo general) continúan trabajando.

Cómo y cuándo /var/cache/apt/archivesse usa la carpeta

Cuando apt-get, aptitude, Centro de Software , Synaptic , Actualización de Software Update Manager / o cualquier otro paquete de descargas de utilidad de gestión de paquetes (y los otros paquetes que dependen) desde configurados fuentes de software y los instala, los paquetes descargados (es decir, los ficheros de archivo .deb desde donde se instalan) se almacenan en /var/cache/apt/archives.

Si tiene un archivo .deb en el disco y lo instala con dpkg, eso no hace que se haga una copia /var/cache/apt/archives. Pero cuando un programa que usa o implementa el sistema APT de resolución automática de dependencia y recuperación de paquetes descarga paquetes, ahí es donde los almacena.

Si bien los archivos .deb para paquetes descargados automáticamente se almacenan e instalan desde /var/cache/apt/archives, en realidad no se descargan directamente a esa ubicación. En cambio, existen descargas de archivos .deb incompletas (es decir, en progreso) /var/cache/apt/archives/partialy luego se trasladan a ellas /var/cache/apt/archivescuando finalizan.

Los archivos de paquete .deb permanecen en caché /var/cache/apt/archivesincluso después de una instalación exitosa en caso de que sean necesarios para su uso futuro. Pero puede eliminar de forma segura los archivos .deb que tienen la edad suficiente para que no sea necesario volver a usarlos sudo apt-get autoclean, o borrar los .debarchivos en caché por completo sudo apt-get clean. Ver man apt-getpara más información.

Para ilustrar la función de sudo apt-get autocleancomandos similares y para determinar si desea ejecutarlos, puede simular sus acciones ejecutándolas luego con la -sbandera. Es mejor pasar esta bandera antes del autocleanverbo de acción (o cualquier otro). Por lo general, no es necesario ejecutar una utilidad como root sudocuando se usa -s, porque no se están realizando cambios reales.

Por ejemplo, en mi sistema:

$ apt-get -s autoclean
NOTE: This is only a simulation!
      apt-get needs root privileges for real execution.
      Keep also in mind that locking is deactivated,
      so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Del libubsan0 4.9.1-15ubuntu1 [83.7 kB]
Del cups-server-common 1.7.5-3 [519 kB]
Del python2.7 2.7.8-9 [205 kB]
Del g++-4.9 4.9.1-15ubuntu1 [17.4 MB]
Del libstdc++-4.9-dev 4.9.1-15ubuntu1 [1,121 kB]
    ....

Los paquetes enumerados no se desinstalarían ; en cambio, solo los archivos .deb en caché se eliminarían. (De hecho, tampoco sucedió cuando ejecuté ese comando, ya que era simplemente una simulación).

Otros archivos descargados

El software instalado a través de dpkg(a través de APT o de otro modo) no se ejecuta realmente desde el archivo .deb que lo proporciona. Como se señaló en la sección Información básica , se extraen los archivos .deb. Es por eso que se pueden eliminar y el paquete instalado continúa funcionando.

Los archivos en todo el sistema que se instalan desde paquetes .deb no se descargan a sus ubicaciones actuales, sino que se extraen de ellos desde los archivos .deb que los proporcionan (o tal vez especialmente creados durante la instalación o posteriormente, como es el caso para algunos archivos de configuración).

Pero los archivos .deb no son los únicos archivos descargados por las utilidades de administración de paquetes. A menudo se descargan otros archivos que proporcionan información sobre dónde existen los paquetes.

Por ejemplo, cuando ejecuto sudo apt-get update, la salida incluye líneas como:

Get:13 http://us.archive.ubuntu.com utopic/main i386 Packages [1,341 kB]

Esto significa que un archivo como http://us.archive.ubuntu.com/ubuntu/dists/utopic/main/binary-amd64/Packages.bz2 fue descargado y examinado para ayudar a actualizar la base de datos APT con información sobre qué paquetes están disponibles ( y en qué versiones) de esa fuente de software en particular. Puede encontrar archivos de paquetes y otros archivos similares en el /var/lib/apt/listdirectorio. Las copias almacenadas allí reciben nombres distintivos como us.archive.ubuntu.com_ubuntu_dists_utopic_main_binary-amd64_Packages, ya que puede haber muchos de esos archivos.

Usted preguntó sobre apt-cacheespecíficamente. Consulta la base de datos del paquete, pero no realiza ningún cambio en el sistema ni descarga ningún archivo.

Archivos descargados específicos del Centro de software

Cuando el Centro de software de Ubuntu descarga datos para su propio uso, específicos y no relacionados con la funcionalidad general APT (o dpkg), los almacena /var/cache/software-center.

Por ejemplo, en mi sistema (y en la mayoría de los sistemas), esa carpeta contiene una xapiansubcarpeta:

ek@Ilex:/var/cache/software-center/xapian$ ls
flintlock       postlist.baseB  record.baseB    spelling.baseB  termlist.baseB
iamchert        postlist.DB     record.DB       spelling.DB     termlist.DB
postlist.baseA  record.baseA    spelling.baseA  termlist.baseA

El Centro de software utiliza Xapian para indexar información para realizar búsquedas rápidas.

Archivos descargados para otras utilidades relacionadas

Algunas utilidades adicionales que funcionan con el sistema APT descargan y almacenan archivos como parte de su operación. apt-fileno está instalado de manera predeterminada en Ubuntu, pero puede instalarse desde el paquete apt-fileInstalar apt-file .

apt-filealmacena información sobre qué archivos son proporcionados por qué paquetes (incluso para paquetes que no están instalados localmente). Obtiene esta información sobre el contenido de los paquetes descargando Contentsarchivos comprimidos :

$ sudo apt-file update
Downloading complete file http://us.archive.ubuntu.com/ubuntu/dists/utopic/Contents-amd64.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 29.6M  100 29.6M    0     0   856k      0  0:00:35  0:00:35 --:--:--  832k

Cuando apt-file updatese ejecuta como root (como arriba), estos archivos se descargan al /var/cache/apt/apt-filedirectorio. Para descubrir esto, corrí:

$ sudo updatedb
$ locate Contents-amd64
/var/cache/apt/apt-file/us.archive.ubuntu.com_ubuntu_dists_utopic-proposed_Contents-amd64.gz
/var/cache/apt/apt-file/us.archive.ubuntu.com_ubuntu_dists_utopic_Contents-amd64.gz

Tenga en cuenta que la información provista en esta publicación brinda una serie de ejemplos de archivos de datos descargados y almacenados por las utilidades de administración de paquetes en Ubuntu, pero no debe considerarse una lista exhaustiva de instancias donde dichos archivos se usan y almacenan.

Eliah Kagan
fuente
Gracias. Hacer apt-cache o / y apt-filetambién descargar muchas cosas? Si es así, ¿dónde están?
Tim
Qué significa "Pero cuando un programa que usa o implementa el sistema APT de resolución automática de dependencia y recuperación de paquetes descarga paquetes, ahí es donde los almacena". ¿media?
Tim
@Tim He expandido mi respuesta considerablemente, de una manera que espero responda adecuadamente esas preguntas (y más). Como siempre, sus comentarios son bienvenidos, especialmente si algo no está claro.
Eliah Kagan
Gracias "apt-cache consulta la base de datos del paquete", ¿está la base de datos en línea o en la computadora local? ¿Apt-cache necesita acceso a internet?
Tim
1
@Orian (¡me alegra que esta respuesta haya ayudado!) Puedes hacer clic en la estrella en la pregunta. Está justo debajo de las flechas de puntuación y votación de la pregunta. Luego, la pregunta aparece en la pestaña de favoritos de su perfil . Solo las preguntas pueden ser favorecidas. En el caso de esta respuesta, actualmente es la única en la pregunta. Es posible que se publiquen otros, aunque es probable que desee verlos también, ya que a veces las nuevas respuestas tienen información sobre los nuevos desarrollos en un tema. Puede usar los marcadores de su navegador, que funcionan incluso para las respuestas. Use el enlace para compartir debajo de la respuesta para abrir la página con una respuesta específica.
Eliah Kagan el