GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire query su file, pacchetti e repository in Linux

Avendo una certa esperienza con Linux, probabilmente sai che non puoi semplicemente condividere un comando o un'utilità tra i sistemi. Il motivo per cui non puoi semplicemente copiare un eseguibile da un sistema a un altro è a causa delle dipendenze, come librerie e altri pacchetti di supporto. Certamente alcune utilità possono essere copiato ma questo non è universalmente così. Se hai dimenticato quale pacchetto hai installato che includeva nslookup comando, ad esempio, hai bisogno di un modo per trovarlo.

Inoltre, una volta trovato il pacchetto a cui appartiene un comando, potresti voler scoprire da quale repository hai installato il pacchetto. I repository di base di AppStream , BaseOS e Extra contengono molto, ma certamente non tutti dei pacchetti di cui potresti aver bisogno o che potresti incontrare. In questo articolo, esplorerò alcuni metodi per interrogare il sistema per trovare repository, pacchetti e comandi correlati.

  • I pacchetti contengono comandi, utilità e librerie
  • I pacchetti hanno dipendenze
  • I repository contengono, archiviano e forniscono pacchetti

Classificazione del tipo di file

L'utilità che stai utilizzando è uno script, un testo normale o un comando? È compilato? Qual è la posizione del file? Potresti volere alcune informazioni di base sull'utilità. Il which comando individua un file se è nel tuo percorso. Dovrai individuare un file prima di poterlo identificare ulteriormente.

$ which mtr

/usr/sbin/mtr

Per visualizzare le informazioni sul tipo di file, il file il comando è indispensabile.

$ 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)

Il primo tentativo è fallito perché il file il comando non conosce la posizione di mtr comando. Dopo aver fornito il percorso completo a file , le informazioni vengono visualizzate.

Ecco un esempio di un file eseguibile che non è stato compilato.

$ file /usr/sbin/ifcfg
/usr/sbin/ifcfg: POSIX shell script, ASCII text executable

Come puoi vedere, il file il comando è importante da conoscere e che sicuramente utilizzerai nel corso della tua carriera.

[ Ai lettori è piaciuto anche:gestione dei pacchetti Linux con YUM e RPM ]

Trovare il pacco

Il nslookup comando è uno che usi frequentemente ma non è installato su nessuno dei sistemi nel tuo nuovo lavoro. Vuoi installarlo ma non ricordi quale pacchetto lo contiene e stai tentando di installarlo come nslookup fallisce.

# 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

Per trovare il pacchetto che contiene nslookup , puoi eseguire una ricerca "inversa" utilizzando il rpm comando.

# rpm -qf nslookup
error: file /root/nslookup: No such file or directory

Cosa c'è che non va qui? Il rpm comando non riesce a trovare nslookup ma è installato perché l'hai usato. Attesa. Guarda il percorso:/root/nslookup . Non c'è nslookup comando nella directory corrente (home di root). Individua nslookup usando il which comando e quindi emettere il rpm comando.

# which nslookup
/usr/bin/nslookup

# rpm -qf /usr/bin/nslookup
bind-utils-9.11.13-6.el8_2.1.x86_64

Vedi quel nslookup fa parte di bind-utils pacchetto. Ora puoi copiarlo sugli altri tuoi sistemi e usarlo come faresti normalmente.

 # nslookup google.com
/opt/nslookup: error while loading shared libraries: libdns.so.1107: cannot open shared object file: No such file or directory

L'errore ti dice che nslookup comando ha dipendenze che non sono state soddisfatte sul nuovo sistema in cui l'hai copiato. La soluzione è installarlo individualmente su ciascun sistema utilizzando DNF/YUM.

Rivelazione delle dipendenze del pacchetto

Ti piace molto nslookup comando e vorresti averlo disponibile su tutti i tuoi sistemi. Ti rendi conto dopo un tentativo fallito che non puoi semplicemente copiarlo su un altro sistema e aspettarti che funzioni. Dopo molte ricerche, scopri che il nslookup comando ha diverse dipendenze che devono essere soddisfatte. Quali sono queste dipendenze?

# dnf deplist nslookup
Last metadata expiration check: 3:00:24 ago on Tue 10 Nov 2020 03:27:27 PM CST.

Questo significa che non ci sono dipendenze per nslookup ? No. Significa che hai tentato di trovare le dipendenze per un comando anziché per un pacchetto.

# 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

Ricorda che pacchetti avere dipendenze. Elencare le dipendenze può essere utile se vuoi soddisfarle manualmente o se ritieni che le nuove dipendenze possano interferire o essere incompatibili con i pacchetti e le dipendenze già installati sul tuo sistema.

Identificazione del repository

Hai visto un collega amministratore di sistema usare lo strumento di informazioni hardware (hwinfo ) comando sul suo sistema. Provi il comando sul tuo sistema ma ricevi un errore "comando non trovato". Quindi tenti di installarlo.

# 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

Chiedi al tuo collega di dirti dove ha preso il hwinfo pacchetto. Esegue la seguente query per trovarne l'origine.

# 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

Nota che la fonte sembra essere un repository identificato come epel . Le chiedi inoltre di dirti come impostare epel deposito. Si ricorda che epel è in realtà un pacchetto RPM installabile ma non ricorda il suo nome completo. Esegue la seguente query per identificarlo.

# rpm -qa |grep epel
epel-release-8-8.el8.noarch

Ora puoi installare epel-release pacchetto e quindi installare il hwinfo pacchetto.

Nota:il epel-release repository è la configurazione del repository Extra Packages for Enterprise Linux ed è la prima cosa che installo su qualsiasi nuovo sistema che incontro che non lo ha.

[ Download gratuito:cheat sheet dei comandi avanzati di Linux. ]

Conclusione

Linux fornisce ai suoi amministratori molte utili utilità e comandi per trovare informazioni sul sistema e sui suoi componenti. È necessario aggiungere questi comandi e utilità alla casella degli strumenti dell'amministratore di sistema. Come puoi vedere da questo articolo, non è necessario conoscere ogni opzione oscura di un comando per ottenere ciò di cui hai bisogno. Usa man pagine per quelli.


Linux
  1. Come scoprire le directory e i file principali (spazio su disco) in Linux

  2. Che cos'è un comando Chown in Linux e come usarlo

  3. Come rimuovere file e directory nella riga di comando di Linux [Tutorial per principianti]

  4. Come comprimere ed estrarre file usando il comando tar su Linux?

  5. Come copiare file in Linux e Unix? 10 cp Esempi di comandi

Come rinominare file e directory in Linux

Come comprimere file e directory in Linux

Come spostare file e directory in Linux (comando mv)

Come ordinare i file in Linux (GUI e Shell)

Come installare e utilizzare il comando fd in Linux

Come contare i file nella directory su Linux