Cómo consultar archivos, paquetes y repositorios en Linux

Al tener algo de experiencia con Linux, probablemente sepa que no puede simplemente compartir un comando o una utilidad entre sistemas. La razón por la que no puede simplemente copiar un ejecutable de un sistema a otro es debido a las dependencias, como bibliotecas y otros paquetes de soporte. Ciertas utilidades ciertamente deben copiarse, pero este no es el caso universalmente. Si olvidó qué paquete instaló que incluía el nslookup
comando, por ejemplo, necesita una forma de encontrarlo.
Además, una vez que encuentre el paquete al que pertenece un pedido, es posible que desee saber desde qué repositorio instaló el paquete. Los depósitos básicos de flujo de aplicaciones, Sistema operativo base, y Suplementos contiene mucho, pero ciertamente no paquetes que pueda necesitar o encontrar. En este artículo, exploro algunos métodos de consulta del sistema para encontrar repositorios, paquetes y comandos relacionados.
- Los paquetes contienen comandos, utilidades y bibliotecas
- Los paquetes tienen dependencias
- Los repositorios contienen, almacenan y entregan paquetes
Clasificar tipo de archivo
¿La utilidad que está utilizando es un script, texto sin formato o un comando? ¿Está compilado? ¿Cuál es la ubicación del archivo? Es posible que desee obtener información básica sobre la utilidad. el which
El comando localiza un archivo si está en su camino. Deberá ubicar un archivo antes de poder identificarlo.
$ which mtr
/usr/sbin/mtr
Para ver la información del tipo de archivo, el file
ordenar es esencial.
$ file mtr
mtr: cannot open `mtr' (No such file or directory)
$ file /usr/sbin/mtr
/usr/sbin/mtr: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=d34479cefafe7299b65d8375769c63978c6c453f, stripped, too many notes (256)
El primer intento fracasó porque el file
el comando no conoce la ubicación del mtr
pedido. Una vez que se da la ruta completa a file
, se muestra la información.
Aquí hay un ejemplo de un archivo ejecutable que no está compilado.
$ file /usr/sbin/ifcfg
/usr/sbin/ifcfg: POSIX shell script, ASCII text executable
Como puedes ver, el file
El comando es algo importante que debe saber y que seguramente usará a lo largo de su carrera.
Encuentra el paquete
el nslookup
El comando es un comando que usa con frecuencia, pero no está instalado en ninguno de los sistemas en su nuevo trabajo. Quiere instalarlo pero no puede recordar qué paquete lo contiene e intenta instalarlo como nslookup
fallido.
# dnf -y install nslookup
Last metadata expiration check: 2:44:51 ago on Tue 10 Nov 2020 03:27:27 PM CST.
No match for argument: nslookup
Error: Unable to find a match: nslookup
Para encontrar el paquete que contiene nslookup
, puede realizar una búsqueda "inversa" utilizando el rpm
pedido.
# rpm -qf nslookup
error: file /root/nslookup: No such file or directory
¿Que esta mal aquí? el rpm
el comando no encuentra nslookup
pero está instalado porque lo usaste. Esperar. Mira el camino: /root/nslookup
. No hay nslookup
en su directorio actual (inicio de la raíz). Localizar nslookup
utilizando el which
comando, luego ejecute el rpm
pedido.
# which nslookup
/usr/bin/nslookup
# rpm -qf /usr/bin/nslookup
bind-utils-9.11.13-6.el8_2.1.x86_64
ves eso nslookup
es parte de bind-utils
paquete. Ahora puede copiarlo a sus otros sistemas y usarlo como lo haría normalmente.
# nslookup google.com
/opt/nslookup: error while loading shared libraries: libdns.so.1107: cannot open shared object file: No such file or directory
El error te dice que el nslookup
El comando tiene dependencias que no se cumplieron en el nuevo sistema en el que lo copió. La solución es instalarlo individualmente en cada sistema usando DNF/YUM.
Revelar dependencias de paquetes
realmente te gusta el nslookup
y le gustaría que estuviera disponible en todos sus sistemas. Después de un intento fallido, te das cuenta de que no puedes simplemente copiarlo a otro sistema y esperar que funcione. Después de mucha investigación, descubres que el nslookup
El comando tiene varias dependencias que deben cumplirse. ¿Cuáles son estas dependencias?
# dnf deplist nslookup
Last metadata expiration check: 3:00:24 ago on Tue 10 Nov 2020 03:27:27 PM CST.
¿Significa esto que no hay dependencias para nslookup
? No. Esto significa que ha intentado encontrar dependencias para un pedido en lugar de un paquete.
# dnf deplist bind-utils
Last metadata expiration check: 0:00:14 ago on Tue 10 Nov 2020 06:29:37 PM CST.
package: bind-utils-32:9.11.13-6.el8_2.1.x86_64
dependency: /usr/libexec/platform-python
provider: platform-python-3.6.8-23.el8.i686
provider: platform-python-3.6.8-23.el8.x86_64
dependency: bind-libs(x86-64) = 32:9.11.13-6.el8_2.1
provider: bind-libs-32:9.11.13-6.el8_2.1.x86_64
*** longer list of dependencies ***
dependency: rtld(GNU_HASH)
provider: glibc-2.28-101.el8.i686
provider: glibc-2.28-101.el8.x86_64
Recuerda que hay dependencias. La lista de dependencias puede ser útil si desea satisfacerlas manualmente o si cree que las nuevas dependencias pueden interferir o ser incompatibles con los paquetes y dependencias ya instalados en su sistema.
Identificación del repositorio
Ha visto a un compañero administrador del sistema usar la Herramienta de información de hardware (hwinfo
) en su sistema. Prueba el comando en su sistema, pero recibe un error de "comando no encontrado". Luego intenta instalarlo.
# dnf -y install hwinfo
Last metadata expiration check: 0:09:34 ago on Tue 10 Nov 2020 06:42:15 PM CST.
No match for argument: hwinfo
Error: Unable to find a match: hwinfo
Le pide a su colega que le diga dónde consiguió el hwinfo
paquete. Ejecuta la siguiente consulta para encontrar su fuente.
# dnf list hwinfo
Last metadata expiration check: 0:11:17 ago on Tue 10 Nov 2020 06:42:15 PM CST.
Installed Packages
hwinfo.x86_64 21.47-9.el8 @epel
Observa que la fuente parece ser un repositorio identificado como epel
. También le pide que le muestre cómo configurar el epel
depositar. Recuerda que en realidad se trata de un paquete RPM instalable, pero no recuerda su nombre completo. Ella hace la siguiente consulta para identificarlo.
# rpm -qa |grep epel
epel-release-8-8.el8.noarch
Ahora puede instalar el epel-release
paquete, luego instale el hwinfo
paquete.
Envoltura
Linux proporciona a sus administradores muchas utilidades y comandos útiles para encontrar información sobre el sistema y sus componentes. Debe agregar estos comandos y utilidades a su kit de herramientas de administrador de sistemas. Como puede ver en este artículo, no tiene que conocer todas las oscuras opciones de un pedido para obtener lo que necesita. Usar man
páginas para esos.
Artículos de interés