102.5 Lección 1
Certificación: |
LPIC-1 |
---|---|
Versión: |
5.0 |
Tema: |
102 Instalación de Linux y Administración de Paquetes |
Objetivo: |
102.5 Uso y gestión de paquetes con RPM y YUM |
Lección: |
1 de 1 |
Introducción
Hace mucho tiempo, cuando Linux todavía estaba en su infancia, la forma más común de distribuir software era a través de archivos comprimidos (generalmente como archivos .tar.gz
) con código fuente, que desempaquetaría y compilaría usted mismo.
Sin embargo, a medida que crecía la cantidad y la complejidad del software, se hizo evidente la necesidad de una forma de distribuir el software precompilado. Después de todo, no todos tenían los recursos, tanto en tiempo como en potencia informática, para compilar grandes proyectos como el núcleo (Kernel) de Linux o un servidor X.
Pronto, crecieron los esfuerzos para estandarizar una forma de distribuir estos “paquetes” de software, y nacieron los primeros administradores de paquetes. Estas herramientas facilitaron mucho la instalación, configuración o eliminación de software de un sistema.
Uno de ellos fue el RPM Package Manager y su herramienta correspondiente (rpm
), desarrollada por Red Hat. Hoy en día, se usan ampliamente no solo en Red Hat Enterprise Linux (RHEL), sino también en sus descendientes, como Fedora, CentOS y Oracle Linux, otras distribuciones como openSUSE e incluso otros sistemas operativos, como AIX de IBM.
Otras herramientas de administración de paquetes populares en las distribuciones compatibles con Red Hat son yum
(YellowDog Updater Modified), dnf
(Dandified YUM) y zypper
, que pueden simplificar muchos de los aspectos de la instalación, mantenimiento y eliminación de paquetes, haciendo que gestión de paquetes mucho más fácil.
En esta lección, aprenderemos cómo usar rpm
, yum
, dnf
y zypper
para obtener, instalar, administrar y eliminar software en un sistema Linux.
Note
|
A pesar de usar el mismo formato de paquete, existen diferencias internas entre las distribuciones, por lo que un paquete hecho específicamente para openSUSE podría no funcionar en un sistema RHEL, y viceversa. Cuando busque paquetes, siempre verifique la compatibilidad e intente encontrar uno adaptado a su distribución específica. |
El gestor de paquetes RPM (rpm)
El gestor de paquetes RPM (rpm
) es la herramienta esencial para administrar paquetes de software en sistemas basados en Red Hat (o derivados).
Instalar, Actualizar y Eliminar Paquetes
La operación más básica es instalar un paquete, que se puede hacer con:
# rpm -i PACKAGENAME
Donde PACKAGENAME
es el nombre del paquete .rpm
que desea instalar.
Si hay una versión anterior de un paquete en el sistema, puede actualizar a una versión más nueva utilizando el parámetro -U
:
# rpm -U PACKAGENAME
Si no hay instalada una versión anterior de PACKAGENAME
, se instalará una copia nueva. Para evitar esto y solo actualizar un paquete instalado, use la opción -F
.
En ambas operaciones, puede agregar el parámetro -v
para obtener una salida detallada (se muestra más información durante la instalación) y -h
para obtener signos hash (#
) impresos como una ayuda visual para rastrear el progreso de la instalación. Se pueden combinar varios parámetros en uno, por lo que rpm -i -v -h
es lo mismo que rpm -ivh
.
Para eliminar un paquete instalado, pase el parámetro -e
(como en “erase”) a rpm
, seguido del nombre del paquete que desea eliminar:
# rpm -e wget
Si un paquete instalado depende del paquete que se está eliminando, recibirá un mensaje de error:
# rpm -e unzip error: Failed dependencies: /usr/bin/unzip is needed by (installed) file-roller-3.28.1-2.el7.x86_64
Para completar la operación, primero deberá eliminar los paquetes que dependen del que desea eliminar (en el ejemplo anterior, file-roller
). Puede pasar varios nombres a rpm -e
para eliminar varios paquetes a la vez.
Manejo de dependencias
La mayoría de las veces, un paquete puede depender de otros para que funcione según lo previsto. Por ejemplo, un editor de imágenes puede necesitar bibliotecas para abrir archivos JPG, o una utilidad puede necesitar un kit de herramientas de widgets como Qt o GTK para su interfaz de usuario.
rpm
verificará si esas dependencias están instaladas en su sistema y no podrá instalar el paquete si no lo están. En este caso, rpm
listará lo que falta. Sin embargo, no puede resolver dependencias por sí mismo.
En el ejemplo a continuación, el usuario intentó instalar un paquete para el editor de imágenes GIMP, pero faltaban algunas dependencias:
# rpm -i gimp-2.8.22-1.el7.x86_64.rpm error: Failed dependencies: babl(x86-64) >= 0.1.10 is needed by gimp-2:2.8.22-1.el7.x86_64 gegl(x86-64) >= 0.2.0 is needed by gimp-2:2.8.22-1.el7.x86_64 gimp-libs(x86-64) = 2:2.8.22-1.el7 is needed by gimp-2:2.8.22-1.el7.x86_64 libbabl-0.1.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgegl-0.2.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimp-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpbase-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpcolor-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpconfig-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpmath-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpmodule-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpthumb-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpui-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpwidgets-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libmng.so.1()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libwmf-0.2.so.7()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libwmflite-0.2.so.7()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
Depende del usuario encontrar los paquetes .rpm
con las dependencias correspondientes e instalarlos. Los administradores de paquetes como yum
, zypper
y dnf
tienen herramientas que pueden indicar qué paquete proporciona un archivo específico. Esos serán discutidos más adelante en esta lección.
Listar paquetes instalados
Para obtener una lista de todos los paquetes instalados en su sistema, use el rpm -qa
(piense en “query all”).
# rpm -qa selinux-policy-3.13.1-229.el7.noarch pciutils-libs-3.5.1-3.el7.x86_64 redhat-menus-12.0.2-8.el7.noarch grubby-8.28-25.el7.x86_64 hunspell-en-0.20121024-6.el7.noarch dejavu-fonts-common-2.33-6.el7.noarch xorg-x11-drv-dummy-0.3.7-1.el7.1.x86_64 libevdev-1.5.6-1.el7.x86_64 [...]
Obtener Información de Paquetes
Para obtener información sobre un paquete instalado, como su número de versión, arquitectura, fecha de instalación, empaquetador, resumen, etc., use rpm
con los parámetros -qi
(piense en “query info”), seguido de el nombre del paquete. Por ejemplo:
# rpm -qi unzip Name : unzip Version : 6.0 Release : 19.el7 Architecture: x86_64 Install Date: Sun 25 Aug 2019 05:14:39 PM EDT Group : Applications/Archiving Size : 373986 License : BSD Signature : RSA/SHA256, Wed 25 Apr 2018 07:50:02 AM EDT, Key ID 24c6a8a7f4a80eb5 Source RPM : unzip-6.0-19.el7.src.rpm Build Date : Wed 11 Apr 2018 01:24:53 AM EDT Build Host : x86-01.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://www.info-zip.org/UnZip.html Summary : A utility for unpacking zip files Description : The unzip utility is used to list, test, or extract files from a zip archive. Zip archives are commonly found on MS-DOS systems. The zip utility, included in the zip package, creates zip archives. Zip and unzip are both compatible with archives created by PKWARE(R)'s PKZIP for MS-DOS, but the programs' options and default behaviors do differ in some respects. Instale el paquete unzip si necesita enumerar, probar o extraer archivos de un archivo zip.
Para obtener una lista de los archivos que están dentro de un paquete instalado, use los parámetros -ql
(piense en “query list”) seguido del nombre del paquete:
# rpm -ql unzip /usr/bin/funzip /usr/bin/unzip /usr/bin/unzipsfx /usr/bin/zipgrep /usr/bin/zipinfo /usr/share/doc/unzip-6.0 /usr/share/doc/unzip-6.0/BUGS /usr/share/doc/unzip-6.0/LICENSE /usr/share/doc/unzip-6.0/README /usr/share/man/man1/funzip.1.gz /usr/share/man/man1/unzip.1.gz /usr/share/man/man1/unzipsfx.1.gz /usr/share/man/man1/zipgrep.1.gz /usr/share/man/man1/zipinfo.1.gz
Si desea obtener información o una lista de archivos de un paquete que aún no se ha instalado, simplemente agregue el parámetro -p
a los comandos anteriores, seguido del nombre del archivo RPM (FILENAME
). Entonces, rpm -qi PACKAGENAME
se convierte en rpm -qip FILENAME
, y rpm -ql PACKAGENAME
se convierte en rpm -qlp FILENAME
, como se muestra a continuación.
# rpm -qip atom.x86_64.rpm Name : atom Version : 1.40.0 Release : 0.1 Architecture: x86_64 Install Date: (not installed) Group : Unspecified Size : 570783704 License : MIT Signature : (none) Source RPM : atom-1.40.0-0.1.src.rpm Build Date : sex 09 ago 2019 12:36:31 -03 Build Host : b01bbeaf3a88 Relocations : /usr URL : https://atom.io/ Summary : A hackable text editor for the 21st Century. Description : A hackable text editor for the 21st Century.
# rpm -qlp atom.x86_64.rpm /usr/bin/apm /usr/bin/atom /usr/share/applications/atom.desktop /usr/share/atom /usr/share/atom/LICENSE /usr/share/atom/LICENSES.chromium.html /usr/share/atom/atom /usr/share/atom/atom.png /usr/share/atom/blink_image_resources_200_percent.pak /usr/share/atom/content_resources_200_percent.pak /usr/share/atom/content_shell.pak (listing goes on)
Averiguar qué paquete posee un archivo específico
Para averiguar qué archivo posee un paquete instalado, use el -qf
(piense en “query file”) seguido de la ruta completa al archivo:
# rpm -qf /usr/bin/unzip unzip-6.0-19.el7.x86_64
En el ejemplo anterior, el archivo /usr/bin/unzip
pertenece al paquete unzip-6.0-19.el7.x86_64
.
YellowDog Updater Modificado (YUM)
yum
se desarrolló originalmente como Yellow Dog Updater (YUP), una herramienta para la gestión de paquetes en la distribución de Yellow Dog Linux. Con el tiempo, evolucionó para administrar paquetes en otros sistemas basados en RPM, como Fedora, CentOS, Red Hat Enterprise Linux y Oracle Linux.
Funcionalmente, es similar a la utilidad apt
en los sistemas basados en Debian, pudiendo buscar, instalar, actualizar y eliminar paquetes y manejar automáticamente las dependencias. yum
se puede usar para instalar un solo paquete o para actualizar un sistema completo a la vez.
Buscar Paquetes
Para instalar un paquete, necesita saber su nombre. Para esto, puede realizar una búsqueda con yum search PATTERN
, donde PATTERN
es el nombre del paquete que está buscando. El resultado es una lista de paquetes cuyos nombres o resúmenes contienen el patrón de búsqueda especificado. Por ejemplo, si necesita una utilidad para manejar archivos comprimidos de 7Zip (con la extensión .7z
) puede usar:
# yum search 7zip Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br =========================== N/S matchyutr54ed: 7zip ============================ p7zip-plugins.x86_64 : Additional plugins for p7zip p7zip.x86_64 : Very high compression ratio file archiver p7zip-doc.noarch : Manual documentation and contrib directory p7zip-gui.x86_64 : 7zG - 7-Zip GUI version Name and summary matches only, use "search all" for everything.
Instalar, Actualizar y Eliminar Paquetes
Para instalar un paquete usando yum
, use el comando yum install PACKAGENAME
, donde PACKAGENAME
es el nombre del paquete. yum
buscará el paquete y las dependencias correspondientes de un repositorio en línea e instalará todo en su sistema.
# yum install p7zip Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br Resolving Dependencies --> Running transaction check ---> Package p7zip.x86_64 0:16.02-10.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ========================================================================== Package Arch Version Repository Size ========================================================================== Installing: p7zip x86_64 16.02-10.el7 epel 604 k Transaction Summary ========================================================================== Install 1 Package Total download size: 604 k Installed size: 1.7 M Is this ok [y/d/N]:
Para actualizar un paquete instalado, use yum update PACKAGENAME
, donde PACKAGENAME
es el nombre del paquete que desea actualizar. Por ejemplo:
# yum update wget Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br Resolving Dependencies --> Running transaction check ---> Package wget.x86_64 0:1.14-18.el7 will be updated ---> Package wget.x86_64 0:1.14-18.el7_6.1 will be an update --> Finished Dependency Resolution Dependencies Resolved ========================================================================== Package Arch Version Repository Size ========================================================================== Updating: wget x86_64 1.14-18.el7_6.1 updates 547 k Transaction Summary ========================================================================== Upgrade 1 Package Total download size: 547 k Is this ok [y/d/N]:
Si omite el nombre de un paquete, puede actualizar cada paquete en el sistema si existen actualizaciones disponibles.
Para verificar si hay una actualización disponible para un paquete específico, use yum check-update PACKAGENAME
. Como antes, si omite el nombre del paquete, yum
buscará actualizaciones para cada paquete instalado en el sistema.
Para eliminar un paquete instalado, use yum remove PACKAGENAME
, donde PACKAGENAME
es el nombre del paquete que desea eliminar.
Encontrar qué paquete proporciona un archivo específico
En un ejemplo anterior mostramos un intento de instalar el editor de imágenes gimp
, que falló debido a dependencias insatisfechas. Sin embargo, rpm
muestra qué archivos faltan, pero no lista el nombre de los paquetes que los proporcionan.
Por ejemplo, una de las dependencias que faltaba era libgimpui-2.0.so.0
. Para ver qué paquete lo proporciona, puede usar yum whatprovides
, seguido del nombre del archivo que está buscando:
# yum whatprovides libgimpui-2.0.so.0 Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br 2:gimp-libs-2.8.22-1.el7.i686 : GIMP libraries Repo : base Matched from: Provides : libgimpui-2.0.so.0
La respuesta es gimp-libs-2.8.22-1.el7.i686
. Luego puede instalar el paquete con el comando yum install gimp-libs
.
Esto también funciona para archivos que ya están en su sistema. Por ejemplo, si desea saber de dónde proviene el archivo /etc/hosts
, puede usar:
# yum whatprovides /etc/hosts Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br setup-2.8.71-10.el7.noarch : A set of system configuration and setup files Repo : base Matched from: Filename : /etc/hosts
La respuesta es setup-2.8.71-10.el7.noarch
.
Obtener información sobre un paquete
Para obtener información sobre un paquete, como su versión, arquitectura, descripción, tamaño y más, use yum info PACKAGENAME
donde PACKAGENAME
es el nombre del paquete para el que desea información:
# yum info firefox Last metadata expiration check: 0:24:16 ago on Sat 21 Sep 2019 02:39:43 PM -03. Installed Packages Name : firefox Version : 69.0.1 Release : 3.fc30 Architecture : x86_64 Size : 268 M Source : firefox-69.0.1-3.fc30.src.rpm Repository : @System From repo : updates Summary : Mozilla Firefox Web browser URL : https://www.mozilla.org/firefox/ License : MPLv1.1 or GPLv2+ or LGPLv2+ Description : Mozilla Firefox is an open-source web browser, designed : for standards compliance, performance and portability.
Gestión de repositorios de software
Para yum
, los “repos” se enumeran en el directorio /etc/yum.repos.d/
. Cada repositorio está representado por un archivo .repo
, como CentOS-Base.repo
.
El usuario puede agregar repositorios adicionales agregando un archivo .repo
en el directorio mencionado anteriormente, o al final de /etc/yum.conf
. Sin embargo, la forma recomendada de agregar o administrar repositorios es con la herramienta yum-config-manager
.
Para agregar un repositorio, use el parámetro --add-repo
, seguido de la URL a un archivo .repo
.
# yum-config-manager --add-repo https://rpms.remirepo.net/enterprise/remi.repo Loaded plugins: fastestmirror, langpacks adding repo from: https://rpms.remirepo.net/enterprise/remi.repo grabbing file https://rpms.remirepo.net/enterprise/remi.repo to /etc/yum.repos.d/remi.repo repo saved to /etc/yum.repos.d/remi.repo
Para obtener una lista de todos los repositorios disponibles, use yum repolist all
. Obtendrá una salida similar a esta:
# yum repolist all Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br repo id repo name status updates/7/x86_64 CentOS-7 - Updates enabled: 2,500 updates-source/7 CentOS-7 - Updates Sources disabled
Los repositorios disabled
serán ignorados al instalar o actualizar el software. Para habilitar o deshabilitar un repositorio, use la utilidad yum-config-manager
, seguido de la identificación del repositorio.
En el resultado anterior, la identificación del repositorio se muestra en la primera columna (repo id
) de cada línea. Utilice solo la parte anterior a la primera /
, por lo que la identificación para el repositorio CentOS-7 - Updates
es updates
, y no updates/7/x86_64
.
# yum-config-manager --disable updates
El comando anterior deshabilitará el repositorio updates
. Para volver a habilitarlo use:
# yum-config-manager --enable updates
Note
|
Yum almacena los paquetes descargados y los metadatos asociados en un directorio de caché (generalmente |
DNF
dnf
es la herramienta de administración de paquetes utilizada en Fedora, y es una bifurcación de yum
. Como tal, muchos de los comandos y parámetros son similares. Esta sección le dará solo una descripción rápida de dnf
.
- Buscar paquetes
-
dnf search PATTERN
, dondePATTERN
es lo que está buscando. Por ejemplo,dnf search unzip
mostrará todos los paquetes que contienen la palabraunzip
en el nombre o la descripción. - Obtener información de un paquete
-
dnf info PACKAGENAME
- Instalar paquetes
-
dnf install PACKAGENAME
, dondePACKAGENAME
es el nombre del paquete que desea instalar. Puede encontrar el nombre realizando una búsqueda. - Eliminar paquetes
-
dnf remove PACKAGENAME
- Actualizar paquetes
-
dnf upgrade PACKAGENAME
para actualizar solo un paquete. Omita el nombre del paquete para actualizar todos los paquetes en el sistema. - Encontrar qué paquete proporciona un archivo específico
-
dnf provides FILENAME
- Obtener una lista de todos los paquetes instalados en el sistema
-
dnf list --installed
- Listar el contenido de un paquete
-
dnf repoquery -l PACKAGENAME
Note
|
|
Gestión de repositorios de software
Al igual que con yum
y zypper
, dnf
funciona con repositorios de software (repos). Cada distribución tiene una lista de repositorios predeterminados, y los administradores pueden agregar o eliminar repositorios según sea necesario.
Para obtener una lista de todos los repositorios disponibles, use dnf repolist
. Para listar solo los repositorios habilitados, agregue la opción --enabled
, y para listar solo los repositorios deshabilitados, agregue la opción --disabled
.
# dnf repolist Last metadata expiration check: 0:20:09 ago on Sat 21 Sep 2019 02:39:43 PM -03. repo id repo name status *fedora Fedora 30 - x86_64 56,582 *fedora-modular Fedora Modular 30 - x86_64 135 *updates Fedora 30 - x86_64 - Updates 12,774 *updates-modular Fedora Modular 30 - x86_64 - Updates 145
Para agregar un repositorio, use dnf config-manager --add-repo URL
, donde URL
es la URL completa del repositorio. Para habilitar un repositorio, use dnf config-manager --set-enabled REPO_ID
.
Del mismo modo, para deshabilitar un repositorio use dnf config-manager --set-disabled REPO_ID
. En ambos casos, REPO_ID es la ID única para el repositorio, que puede obtener usando dnf repolist
. Los repositorios agregados están habilitados por defecto.
Los repositorios se almacenan en archivos .repo
en el directorio /etc/yum.repos.d/
, con exactamente la misma sintaxis utilizada para yum
.
Zypper
zypper
es la herramienta de gestión de paquetes utilizada en SUSE Linux y OpenSUSE. En cuanto a las características, es similar a apt
y yum
, pudiendo instalar, actualizar y eliminar paquetes de un sistema, con resolución de dependencias automatizada.
Actualización de los Índices de Paquetes
Al igual que otras herramientas de administración de paquetes, zypper
funciona con repositorios que contienen paquetes y metadatos. Estos metadatos deben actualizarse de vez en cuando, para que la utilidad conozca los últimos paquetes disponibles. Para hacer una actualización, simplemente utilice el siguiente commando:
# zypper refresh Repository 'Non-OSS Repository' is up to date. Repository 'Main Repository' is up to date. Repository 'Main Update Repository' is up to date. Repository 'Update Repository (Non-Oss)' is up to date. All repositories have been refreshed.
zypper
tiene una función de actualización automática que se puede habilitar por repositorio, lo que significa que algunos repositorios pueden actualizarse automáticamente antes de una consulta o instalación del paquete, y otros pueden necesitar actualizarse manualmente. Aprenderá a controlar esta función en breve.
Buscar Paquetes
Para buscar un paquete, use el operador search
(o se
), seguido del nombre del paquete:
# zypper se gnumeric Loading repository data... Reading installed packages... S | Name | Summary | Type --+----------------+-----------------------------------+-------- | gnumeric | Spreadsheet Application | package | gnumeric-devel | Spreadsheet Application | package | gnumeric-doc | Documentation files for Gnumeric | package | gnumeric-lang | Translations for package gnumeric | package
El operador de búsqueda también se puede utilizar para obtener una lista de todos los paquetes instalados en el sistema. Para hacerlo, use el parámetro -i
sin un nombre de paquete, como en zypper se -i
.
Para ver si está instalado un paquete específico, agregue el nombre del paquete al comando anterior. Por ejemplo, el siguiente comando buscará entre los paquetes instalados cualquier contenido que contenga “firefox” en el nombre:
# zypper se -i firefox Loading repository data... Reading installed packages... S | Name | Summary | Type --+------------------------------------+-------------------------+-------- i | MozillaFirefox | Mozilla Firefox Web B-> | package i | MozillaFirefox-branding-openSUSE | openSUSE branding of -> | package i | MozillaFirefox-translations-common | Common translations f-> | package
Para buscar solo entre paquetes no-instalados, agregue el parámetro -u
al operador se
.
Instalar, Actualizar y Eliminar Paquetes
Para instalar un paquete de software, use el operador install
(o in
), seguido del nombre del paquete. Al igual que:
# zypper in unrar zypper in unrar Loading repository data... Reading installed packages... Resolving package dependencies... The following NEW package is going to be installed: unrar 1 new package to install. Overall download size: 141.2 KiB. Already cached: 0 B. After the operation, additional 301.6 KiB will be used. Continue? [y/n/v/...? shows all options] (y): y Retrieving package unrar-5.7.5-lp151.1.1.x86_64 (1/1), 141.2 KiB (301.6 KiB unpacked) Retrieving: unrar-5.7.5-lp151.1.1.x86_64.rpm .......................[done] Checking for file conflicts: .......................................[done] (1/1) Installing: unrar-5.7.5-lp151.1.1.x86_64 .....................[done]
zypper
también se puede usar para instalar un paquete RPM en disco, mientras se intenta satisfacer sus dependencias usando paquetes de los repositorios. Para hacerlo, solo proporcione la ruta completa al paquete en lugar del nombre del paquete, como zypper in /home/john/newpackage.rpm
.
Para actualizar los paquetes instalados en el sistema, use zypper update
. Al igual que en el proceso de instalación, esto mostrará una lista de paquetes para instalar/actualizar antes de preguntar si desea continuar.
Si solo desea listar las actualizaciones disponibles, sin instalar nada, puede usar zypper list-updates
.
Para eliminar un paquete, use el operador remove
(o rm
), seguido del nombre del paquete:
# zypper rm unrar Loading repository data... Reading installed packages... Resolving package dependencies... The following package is going to be REMOVED: unrar 1 package to remove. After the operation, 301.6 KiB will be freed. Continue? [y/n/v/...? shows all options] (y): y (1/1) Removing unrar-5.7.5-lp151.1.1.x86_64 ........................[done]
Tenga en cuenta que eliminar un paquete también elimina cualquier otro paquete que dependa de él. Por ejemplo:
# zypper rm libgimp-2_0-0 Loading repository data... Warning: No repositories defined. Operating only with the installed resolvables. Nothing can be installed. Reading installed packages... Resolving package dependencies... The following 6 packages are going to be REMOVED: gimp gimp-help gimp-lang gimp-plugins-python libgimp-2_0-0 libgimpui-2_0-0 6 packages to remove. After the operation, 98.0 MiB will be freed. Continue? [y/n/v/...? shows all options] (y):
Encontrar qué paquete proporciona un archivo específico
Para ver qué paquetes contiene un archivo específico, use el operador de búsqueda seguido del parámetro --provides
y el nombre del archivo (o la ruta completa). Por ejemplo, si desea saber qué paquetes contienen el archivo libgimpmodule-2.0.so.0
en /usr/lib64/
use:
# zypper se --provides /usr/lib64/libgimpmodule-2.0.so.0 Loading repository data... Reading installed packages... S | Name | Summary | Type --+---------------+----------------------------------------------+-------- i | libgimp-2_0-0 | The GNU Image Manipulation Program - Libra-> | package
Obtener Información de Paquetes
Para ver los metadatos asociados con un paquete, use el operador info
seguido del nombre del paquete. Esto le proporcionará el repositorio de origen, el nombre del paquete, la versión, la arquitectura, el proveedor, el tamaño instalado, si está instalado o no, el estado (si está actualizado), el paquete fuente y una descripción.
# zypper info gimp Loading repository data... Reading installed packages... Information for package gimp: ----------------------------- Repository : Main Repository Name : gimp Version : 2.8.22-lp151.4.6 Arch : x86_64 Vendor : openSUSE Installed Size : 29.1 MiB Installed : Yes (automatically) Status : up-to-date Source package : gimp-2.8.22-lp151.4.6.src Summary : The GNU Image Manipulation Program Description : The GIMP is an image composition and editing program, which can be used for creating logos and other graphics for Web pages. The GIMP offers many tools and filters, and provides a large image manipulation toolbox, including channel operations and layers, effects, subpixel imaging and antialiasing, and conversions, together with multilevel undo. The GIMP offers a scripting facility, but many of the included scripts rely on fonts that we cannot distribute.
Gestión de repositorios de software
zypper
también se puede usar para administrar repositorios de software. Para ver una lista de todos los repositorios actualmente registrados en su sistema, use zypper repos
:
# zypper repos Repository priorities are without effect. All enabled repositories share the same priority. # | Alias | Name | Enabled | GPG Check | Refresh ---+---------------------------+------------------------------------+---------+-----------+-------- 1 | openSUSE-Leap-15.1-1 | openSUSE-Leap-15.1-1 | No | ---- | ---- 2 | repo-debug | Debug Repository | No | ---- | ---- 3 | repo-debug-non-oss | Debug Repository (Non-OSS) | No | ---- | ---- 4 | repo-debug-update | Update Repository (Debug) | No | ---- | ---- 5 | repo-debug-update-non-oss | Update Repository (Debug, Non-OSS) | No | ---- | ---- 6 | repo-non-oss | Non-OSS Repository | Yes | (r ) Yes | Yes 7 | repo-oss | Main Repository | Yes | (r ) Yes | Yes 8 | repo-source | Source Repository | No | ---- | ---- 9 | repo-source-non-oss | Source Repository (Non-OSS) | No | ---- | ---- 10 | repo-update | Main Update Repository | Yes | (r ) Yes | Yes 11 | repo-update-non-oss | Update Repository (Non-Oss) | Yes | (r ) Yes | Yes
En la columna Enabled
se puede verificar que algunos repositorios están habilitados, mientras que otros no. Puede cambiar esto con el operador modifyrepo
, seguido del parámetro -e
(habilitar) o -d
(deshabilitar) y el alias del repositorio (la segunda columna en la salida anterior).
# zypper modifyrepo -d repo-non-oss Repository 'repo-non-oss' has been successfully disabled. # zypper modifyrepo -e repo-non-oss Repository 'repo-non-oss' has been successfully enabled.
Anteriormente mencionamos que zypper
tiene la capacidad de actualización automática que se puede habilitar por repositorio. Cuando está habilitado, este indicador hará que zypper
ejecute una operación de actualización (lo mismo que ejecutar zypper refresh
) antes de trabajar con el repositorio especificado. Esto se puede controlar con los parámetros -f
y -F
del operador modifyrepo
:
# zypper modifyrepo -F repo-non-oss Autorefresh has been disabled for repository 'repo-non-oss'. # zypper modifyrepo -f repo-non-oss Autorefresh has been enabled for repository 'repo-non-oss'.
Agregar y quitar repositorios
Para agregar un nuevo repositorio de software para zypper
, use el operador addrepo
seguido de la URL del repositorio y el nombre del repositorio, como se muestra a continuación:
# zypper addrepo http://packman.inode.at/suse/openSUSE_Leap_15.1/ packman Adding repository 'packman' ........................................[done] Repository 'packman' successfully added URI : http://packman.inode.at/suse/openSUSE_Leap_15.1/ Enabled : Yes GPG Check : Yes Autorefresh : No Priority : 99 (default priority) Repository priorities are without effect. All enabled repositories share the same priority.
Al agregar un repositorio, puede habilitar las actualizaciones automáticas con el parámetro -f
. Los repositorios agregados están habilitados de manera predeterminada, pero puede agregar y deshabilitar un repositorio al mismo tiempo utilizando el parámetro -d
.
Para eliminar un repositorio, use el operador removerepo
, seguido del nombre del repositorio (Alias). Para eliminar el repositorio agregado en el ejemplo anterior, el comando sería:
# zypper removerepo packman Removing repository 'packman' ......................................[done] Repository 'packman' has been removed.
Ejercicios Guiados
-
Usando
rpm
en un sistema Red Hat Enterprise Linux, ¿cómo instalaría el paquetefile-roller-3.28.1-2.el7.x86_64.rpm
mostrando una barra de progreso durante la instalación? -
Usando
rpm
, descubra qué paquete contiene el archivo/etc/redhat-release
. -
¿Cómo usaría
yum
para buscar actualizaciones para todos los paquetes en el sistema? -
Usando
zypper
, ¿cómo deshabilitaría un repositorio llamado repo-extras? -
Si tiene un archivo
.repo
que describe un nuevo repositorio, ¿dónde se debe colocar este archivo para que DNF lo reconozca?
Ejercicios Exploratorios
-
¿Cómo usaría
zypper
para averiguar qué paquete posee el archivo/usr/sbin/swapon
? -
¿Cómo puede obtener una lista de todos los paquetes instalados en el sistema usando
dnf
? -
Usando
dnf
, ¿cuál es el comando para agregar un repositorio ubicado enhttps://www.example.url/home:reponame.repo
al sistema? -
¿Cómo puede usar
zypper
para verificar si el paqueteunzip
está instalado? -
Usando
yum
, descubra qué paquete proporciona el archivo/bin/wget
.
Resumen
En esta lección aprendimos:
-
¿Cómo usar
rpm
para instalar, actualizar y eliminar paquetes? -
¿Cómo usar
yum
,zypper
ydnf
? -
¿Cómo obtener información sobre un paquete?
-
¿Cómo obtener una lista de los contenidos de un paquete?
-
¿Cómo averiguar de qué paquete proviene un archivo?
-
¿Cómo listar, agregar, eliminar, habilitar o deshabilitar repositorios de software?
Los siguientes comandos se discutieron en esta lección:
-
rpm
-
yum
-
dnf
-
zypper
Respuestas a los ejercicios guiados
-
Usando
rpm
en un sistema Red Hat Enterprise Linux, ¿cómo instalaría el paquetefile-roller-3.28.1-2.el7.x86_64.rpm
mostrando una barra de progreso durante la instalación?Use el parámetro
-i
para instalar un paquete y la opción-h
para habilitar las “hash marks” que muestran el progreso de la instalación. Entonces, la respuesta es:rpm -ih file-roller-3.28.1-2.el7.x86_64.rpm
. -
Usando
rpm
, descubra qué paquete contiene el archivo/etc/redhat-release
.Para consultar información sobre un archivo use el parámetro
-qf
:rpm -qf /etc/redhat-release
. -
¿Cómo usaría
yum
para buscar actualizaciones para todos los paquetes en el sistema?Utilice la operación
check-update
sin un nombre de paquete:yum check-update
. -
Usando
zypper
, ¿cómo deshabilitaría un repositorio llamado repo-extras?Use la operación
modifyrepo
para cambiar los parámetros de un repositorio, y el parámetro-d
para deshabilitarlo:zypper modifyrepo -d repo-extras
. -
Si tiene un archivo
.repo
que describe un nuevo repositorio, ¿dónde se debe colocar este archivo para que DNF lo reconozca?Los archivos
.repo
para DNF deben colocarse en el mismo lugar utilizado por YUM, dentro de/etc/yum.repos.d/
.
Respuestas a ejercicios exploratorios
-
¿Cómo usarías
zypper
para averiguar qué paquete posee el archivo/usr/sbin/swapon
?Utilice el operador
se
(search) y el parámetro--provides
:zypper se --provides /usr/sbin/swapon
. -
¿Cómo puede obtener una lista de todos los paquetes instalados en el sistema usando
dnf
?Utilice el operador
list
, seguido del parámetro--installed
:dnf list --installed
. -
Usando
dnf
, ¿cuál es el comando para agregar un repositorio ubicado enhttps://www.example.url/home:reponame.repo
al sistema?Trabajar con repositorios es un “configuration change”, así que utilice el parámetro
config-manager
y el parámetro--add_repo
:dnf config-manager --add_repo https://www.example.url/home:reponame.repo
. -
¿Cómo puede usar 'zypper' para verificar si el paquete 'unzip' está instalado?
Debe hacer una búsqueda (
se
) en los paquetes instalados (-i
):zypper se -i unzip
. -
Usando
yum
, descubra qué paquete proporciona el archivo/bin/wget
.Para averiguar qué paquete proporciona un archivo, use
whatprovides
y el nombre del archivo:yum whatprovides /bin/wget
.