Administrador de paquetes y apto

1. ¿Qué es un paquete?

Un "paquete" (o "paquete de software") generalmente se refiere a una aplicación, que puede ser una aplicación GUI, una herramienta de línea de comandos o una biblioteca de software (requerida por otros programas de software). Un paquete es esencialmente un archivo de almacenamiento que contiene archivos ejecutables binarios, archivos de configuración y, a veces, información de dependencia.

En los viejos tiempos, el software solía instalarse desde su código fuente. Hará referencia a un archivo (normalmente llamado README) para ver qué componentes de software necesita y la ubicación de los archivos binarios. Por lo general, incluye un script de configuración o Makefile. Debe compilar el software usted mismo o manejar todas las dependencias usted mismo (algunos programas requieren la instalación de otro software).

Para deshacerse de esta complejidad, la distribución de Linux ha creado su propio formato de empaquetado para proporcionar a los usuarios finales archivos binarios listos para usar (software precompilado) para instalar el software, al tiempo que proporciona algunos metadatos (número de versión, descripción ) y dependencias.

Es como hornear un pastel y comprar un pastel.
A mediados de la década de 1990, Debian creó el formato de empaquetado DEB (.deb) y Red Hat Linux creó el sistema de empaquetado RPM (abreviatura de Red Hat Package Manager) (.rpm). La forma de compilar el código fuente todavía existe, pero ahora es opcional.
Inserte la descripción de la imagen aquí
Para interactuar con el sistema de empaquetado o utilizarlo, necesita un administrador de paquetes. Los usuarios solo necesitan decidir qué pastel comer y cómo hacerlo es un almacén de software similar a una tienda.

2. ¿Cómo funciona el administrador de paquetes?

Recuerde, el administrador de paquetes es un concepto general, no es exclusivo de Linux. A menudo encontrará administradores de paquetes para varios software o lenguajes de programación. Hay administradores de paquetes PIP solo para paquetes de Python. Incluso el editor Atom tiene su propio administrador de paquetes. Dado que el enfoque de este artículo es Linux, comenzaré desde la perspectiva de Linux. Sin embargo, la mayoría de las explicaciones aquí también se pueden aplicar a los administradores de paquetes generales. Creé este diagrama (basado en SUSE Wiki) para que pueda comprender fácilmente cómo funciona el administrador de paquetes.
Inserte la descripción de la imagen aquí
Casi todas las distribuciones de Linux tienen un " repositorio de software ", que es básicamente una colección de paquetes de software. Sí, puede haber más de una biblioteca de software. La biblioteca de software contiene diferentes tipos de paquetes de software.

El almacén de software también tiene un archivo de metadatos, que contiene información sobre el paquete de software, como el nombre del paquete de software, el número de versión, la descripción del paquete de software y el nombre del almacén de software. Esto es lo que ve usando el comando apt show en Ubuntu / Debian.

El administrador de paquetes de su sistema primero interactuará con los metadatos. El administrador de paquetes crea una caché local de metadatos en su sistema. Cuando ejecuta la opción de actualización del administrador de paquetes (como apt update), actualizará la caché de metadatos local haciendo referencia a los metadatos en el repositorio.

Cuando ejecuta el comando de instalación del administrador de paquetes (por ejemplo, apt install nombre_paquete), el administrador de paquetes hará referencia a este caché. Si encuentra la información del paquete en la caché, utilizará Internet para conectarse al almacén correspondiente y descargar el paquete antes de instalarlo en su sistema.

Un paquete puede tener dependencias. Esto significa que es posible que deba instalar otros paquetes de software. El administrador de paquetes generalmente maneja estas dependencias y las instala automáticamente junto con el paquete que está instalando.

Inserte la descripción de la imagen aquí
El administrador de paquetes en Linux maneja las dependencias : de manera similar, cuando usa el administrador de paquetes para eliminar un paquete, lo eliminará automáticamente o le notificará que el sistema tiene paquetes sin usar que se pueden limpiar.

Además de instalar y eliminar estas tareas obvias, también puede utilizar el administrador de paquetes para configurar el paquete y administrarlo según sus necesidades. Por ejemplo, puede evitar que la versión de un paquete se actualice durante las actualizaciones regulares del sistema. Es posible que su administrador de paquetes pueda hacer mucho más.

Diferentes tipos de administradores de paquetes Los administradores de
Inserte la descripción de la imagen aquí
paquetes varían según el sistema de empaque, pero el mismo sistema de empaque puede tener varios administradores de paquetes. El administrador de paquetes no se basa necesariamente en la línea de comandos, también existen herramientas gráficas de administración de paquetes, como Synaptic. El "Centro de software" de su distribución también es un administrador de paquetes, incluso si está ejecutando apt-get o DNF debajo. Por ejemplo, RPM tiene administradores de paquetes Yum y DNF. Para DEB, tiene administradores de paquetes basados ​​en la línea de comandos, como apt-get y aptitude.

Tres, la herramienta apt de Ubuntu

Advanced Packaging Tools (en inglés: Advanced Packaging Tools, abreviado como APT) es Debian y su administrador de paquetes derivado de Linux. Con esta herramienta, podemos descargar, configurar e instalar fácilmente formatos de software en formato binario o de código fuente. Para los sistemas Debian, a menudo se habla de la herramienta dpkg. Esta función es similar a la función apt.

apt proporciona una interfaz de línea de comandos avanzada para el sistema de administración de paquetes. Si es un usuario relativamente temprano de Ubuntu, a menudo puede usar apt-get en lugar de apt. En comparación con apt-get, apt es más como una versión simplificada de apt-get. La simplificación se refleja en solo mencionar los comandos más comunes . Y opciones. Después de todo, no a todo el mundo le gustan los comandos de control largos. Eche un vistazo a la comparación entre apt y apt-get:

comando apt comando apt-get sentido
apto instalar apt-get install Instalar un paquete
apto eliminar apt-get remove Desinstalar un paquete
depurar apto apt-get purge Desinstalar y eliminar archivos de configuración
actualización apta apt-get update Actualizar el índice del repositorio
actualización apto actualización de apt-get Actualizar todos los paquetes actualizables
apt autoremove apt-get auto remove Elimina automáticamente los paquetes innecesarios
apt actualización completa apt-get dist-upgrade Manejar dependencias automáticamente al actualizar paquetes
búsqueda apta apt-get search Aplicación de búsqueda
apto para mostrar espectáculo de apt-cache Mostrar detalles del paquete de instalación

Tome cmake como ejemplo para ver cómo utilizar esta herramienta.

Desinstalar cmake : sudo apt remove cmake
Inserte la descripción de la imagen aquí
instalar cmake : sudo apt install cmake
Inserte la descripción de la imagen aquí
vista de información de la aplicación cmake :
Inserte la descripción de la imagen aquí
De la información que muestra el administrador de apt, puede ver:

  • La versión de cmake es3.16.3
  • Talla
  • confiar
  • Página principal
  • descripción
  • Ubicación de la fuente APT: http://mirrors.aliyun.com/ubuntu focal / main amd64 Packages

La ubicación específica puede ser un poco diferente de APT-source: http://mirrors.aliyun.com/ubuntu/dists/focal/main/binary-amd64/Packages.gz, en este paquete comprimido, podemos ver la configuración relacionada con cmake :

Package: cmake
Architecture: amd64
Version: 3.16.3-1ubuntu1
Multi-Arch: foreign
Priority: optional
Section: devel
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Debian CMake Team <[email protected]>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 18758
Depends: cmake-data (= 3.16.3-1ubuntu1), procps, libarchive13 (>= 3.3.3), libc6 (>= 2.17), libcurl4 (>= 7.16.2), libexpat1 (>= 2.0.1), libgcc-s1 (>= 3.0), libjsoncpp1 (>= 1.7.4), librhash0 (>= 1.2.6), libstdc++6 (>= 9), libuv1 (>= 1.11.0), zlib1g (>= 1:1.1.4)
Recommends: gcc, make
Suggests: cmake-doc, ninja-build
Filename: pool/main/c/cmake/cmake_3.16.3-1ubuntu1_amd64.deb
Size: 3668668
MD5sum: 0901cd90df683245c1c63aa25494e895
SHA1: 987da0bb67fef6ed1cc4bdf791c983534dea4341
SHA256: 1f09f5bd58627092ed1787538051ce9f5f016ab279fe4c795e01faa1f9619180
Homepage: https://cmake.org/
Description: cross-platform, open-source make system
Description-md5: 47b53839da906127970f1e8c870afc2d

En pocas palabras, dada una dirección, cada vez que se pasa la autenticación de Ubuntu, el nuevo paquete de instalación se actualizará al paquete en el sitio web, y el usuario puede sincronizar la dirección del nuevo software a través de la actualización. Entonces, ¿hay alguna forma de instalar una versión superior de cmake?

  • ppa
  • Código binario
  • Código fuente

Cuatro, herramientas de gestión de almacén de software de Ubuntu

Un almacén de software es un conjunto de archivos que contiene información sobre varios software y sus versiones, así como otra información detallada, como sumas de verificación. Cada versión de Ubuntu tiene sus propios cuatro repositorios de software oficiales :

  • Software principal gratuito y de código abierto compatible con Canonical;
  • Software libre de universo y de código abierto mantenido por la comunidad;
  • Restringido: el controlador propietario del dispositivo;
  • Software multiverso restringido por derechos de autor o cuestiones legales.
    Inserte la descripción de la imagen aquí
    Además del software oficial, hay otro software (Otro software) , ¡el más común puede ser VSCODE!
    Inserte la descripción de la imagen aquí

El sistema recupera la información correspondiente a través de /etc/aptlos sources.listarchivos almacenados en el directorio , lo que puede ayudar al sistema a obtener el paquete de software correspondiente del sitio web donde está realmente almacenado el software. En este caso, cuando ejecute el sudo apt updatecomando, su sistema utilizará la herramienta APT para verificar el repositorio de software y almacenar el software y su información de versión en la caché. Cuando usa el sudo apt install package_namecomando, obtiene el paquete de la URL del software de almacenamiento real a través de la información. Si no hay información sobre un determinado paquete en el almacén de software, se le preguntará E:Unable to locate package. Existe un problema con el uso del repositorio oficial: para garantizar la compatibilidad, las nuevas herramientas desarrolladas y actualizadas en Ubuntu no se actualizarán al sistema existente de inmediato, sino que se agregarán oficialmente al repositorio oficial después de algunas pruebas. Esta vez puede Serán varios meses. Entonces, ¿cómo podemos solucionarlo? ¡A través de PPA!

PPA

PPA (Personal Package Archive) es un almacén que contiene información de software cuando se archiva un paquete personal. El significado personal es exclusivo del desarrollador y no tiene una licencia formal para su distribución. Ubuntu proporciona una plataforma llamada Launchpad que permite a los desarrolladores de software crear sus propios repositorios de software. Usuario final, es decir, puede agregar el repositorio PPA al archivo sources.list cuando actualice el sistema, su sistema conocerá la disponibilidad de este nuevo software, luego puede usar el sudo apt installcomando estándar para instalarlo.

  • sudo add-apt-repository <PPA_info>Este comando agrega el repositorio de PPA a la lista.
  • sudo apt-get update Este comando actualiza la lista de paquetes que se pueden instalar en el sistema actual.
  • sudo apt-get install <package_in_PPA> Este comando instala el paquete.

Tal como:

sudo add-apt-repository ppa:dr-akulavich/lighttable

Notará que este comando no tiene la URL del repositorio de software. Esto se debe a que la herramienta está diseñada para abstraer la información de la URL antes de mostrársela.

Una pequeña nota: si agrega ppa: dr-akulavich / lighttable, obtendrá la mesa de luz. Pero si agrega ppa: dr-akulavich, obtendrá todos los repositorios o paquetes en el "repositorio de software superior". Está dividido por nivel.

Básicamente, cuando agrega un PPA usando add-apt-repository, realizará las mismas operaciones que ejecutar manualmente estos comandos:

deb http://ppa.launchpad.net/dr-akulavich/lighttable/ubuntu YOUR_UBUNTU_VERSION_HERE main
deb-src http://ppa.launchpad.net/dr-akulavich/lighttable/ubuntu YOUR_UBUNTU_VERSION_HERE main

Las dos líneas anteriores son la forma tradicional de agregar cualquier repositorio de software al archivo sources.list de su sistema. Pero PPA completará automáticamente estas tareas por usted, sin tener en cuenta la URL exacta del almacén de software y la versión del sistema operativo.

El punto menos importante aquí es que cuando usa PPA, no cambia el archivo sources.list original. Por el contrario, /etc/apt/sources.dcrea dos archivos en el directorio de nivel de sistema, un .list y archivos de respaldo con un sufijo .save.
Inserte la descripción de la imagen aquí
Esta es una medida de seguridad para garantizar que el PPA agregado no se confunda con el archivo sources.list original. También ayuda a eliminar el PPA.
Puede preguntar por qué desea usar PPA, PPA debe usarse a través de la línea de comando, no a todo el mundo le gusta usar la línea de comando. ¿Por qué no distribuir directamente paquetes DEB que se pueden instalar gráficamente?

La respuesta está en el proceso de actualización. Si utiliza el paquete DEB para instalar software, no hay garantía de que el software instalado se actualice a una versión más reciente cuando ejecute los comandos sudo apt update y sudo apt upgrade.

Esto se debe a que el proceso de actualización de apt se basa en el archivo sources.list. Si no hay una entrada de software correspondiente en el archivo, no se actualizará mediante el procedimiento de actualización de software estándar.

Entonces, ¿significa esto que el software instalado con DEB nunca se actualizará? no. Depende de cómo se haya creado el paquete DEB.

Algunos desarrolladores agregarán automáticamente una entrada a sources.list para que el software se pueda actualizar como el software normal. El navegador Google Chrome es un ejemplo.

Algún software le notificará cuando una nueva versión esté disponible cuando se ejecute. Debe descargar el nuevo paquete DEB y ejecutarlo nuevamente para actualizar el software actual a una versión más reciente. Oracle Virtual Box es uno de esos ejemplos.

Para los paquetes DEB restantes, debe buscar actualizaciones manualmente, lo cual es muy inconveniente, especialmente cuando su software es para probadores Beta, debe agregar muchas actualizaciones con frecuencia. Este es exactamente el problema que PPA está tratando de resolver.

[1] [APT] https://zh.wikipedia.org/wiki/APT
[2] [La diferencia entre rpm y deb] https://www.cnblogs.com/longchang/p/12530697.html
[3] [Linux (3): herramientas de administración de paquetes de Linux] https://blog.csdn.net/xu_fengyu/article/details/85218057

Supongo que te gusta

Origin blog.csdn.net/weixin_39258979/article/details/111772857
Recomendado
Clasificación