GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So fragen Sie Dateien, Pakete und Repositories in Linux ab

Wenn Sie etwas Erfahrung mit Linux haben, wissen Sie wahrscheinlich, dass Sie einen Befehl oder ein Dienstprogramm nicht einfach zwischen Systemen teilen können. Der Grund dafür, dass Sie eine ausführbare Datei nicht einfach von einem System auf ein anderes kopieren können, liegt an Abhängigkeiten wie Bibliotheken und anderen unterstützenden Paketen. Einige Dienstprogramme können es sicherlich kopiert werden, aber das ist nicht überall so. Falls Sie vergessen haben, welches Paket Sie installiert haben, das nslookup enthält Befehl, zum Beispiel, brauchen Sie einen Weg, ihn zu finden.

Sobald Sie das Paket gefunden haben, zu dem ein Befehl gehört, möchten Sie möglicherweise herausfinden, aus welchem ​​Repository Sie das Paket installiert haben. Die grundlegenden Repositories von AppStream , BaseOS und Extras enthalten viel, aber sicherlich nicht alle der Pakete, die Sie möglicherweise benötigen oder denen Sie begegnen. In diesem Artikel untersuche ich einige Methoden zum Abfragen des Systems, um verwandte Repositories, Pakete und Befehle zu finden.

  • Pakete enthalten Befehle, Dienstprogramme und Bibliotheken
  • Pakete haben Abhängigkeiten
  • Repositories enthalten, speichern und stellen Pakete bereit

Klassifizierung des Dateityps

Ist das Dienstprogramm, das Sie verwenden, ein Skript, einfacher Text oder ein Befehl? Ist es kompiliert? Wo ist die Datei? Möglicherweise möchten Sie einige grundlegende Informationen über das Dienstprogramm. Der which Der Befehl findet eine Datei, wenn sie sich in Ihrem Pfad befindet. Sie müssen eine Datei lokalisieren, bevor Sie sie weiter identifizieren können.

$ which mtr

/usr/sbin/mtr

Um Informationen zum Dateityp anzuzeigen, muss die Datei file Befehl ist unverzichtbar.

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

Der erste Versuch ist fehlgeschlagen, weil die Datei file Der Befehl kennt den Speicherort von mtr nicht Befehl. Nachdem der vollständige Pfad zu file gegeben wurde , die Informationen werden angezeigt.

Hier ist ein Beispiel für eine nicht kompilierte ausführbare Datei.

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

Wie Sie sehen können, ist die file Befehl ist wichtig zu kennen und Sie werden ihn sicher während Ihrer gesamten Karriere anwenden.

[ Den Lesern gefiel auch:Linux-Paketverwaltung mit YUM und RPM ]

Das Paket finden

Die nslookup Befehl ist einer, den Sie häufig verwenden, aber er ist auf keinem der Systeme an Ihrem neuen Arbeitsplatz installiert. Sie möchten es installieren, können sich aber nicht erinnern, welches Paket es enthält, und versuchen, es als nslookup zu installieren schlägt fehl.

# 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

Um das Paket zu finden, das nslookup enthält , können Sie mit rpm eine "umgekehrte" Suche durchführen Befehl.

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

Was ist hier falsch? Die rpm Befehl kann nslookup nicht finden aber es ist installiert, weil Sie es verwendet haben. Warten. Sehen Sie sich den Pfad an:/root/nslookup . Es gibt kein nslookup Befehl in Ihrem aktuellen Verzeichnis (das Home-Verzeichnis von root). Suchen Sie nslookup mit dem which Befehl und geben Sie dann rpm aus Befehl.

# which nslookup
/usr/bin/nslookup

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

Sie sehen dieses nslookup ist Teil der bind-utils Paket. Jetzt können Sie es auf Ihre anderen Systeme kopieren und wie gewohnt verwenden.

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

Der Fehler sagt Ihnen, dass die nslookup Der Befehl weist Abhängigkeiten auf, die auf dem neuen System, auf das Sie ihn kopiert haben, nicht erfüllt wurden. Die Lösung besteht darin, es mithilfe von DNF/YUM einzeln auf jedem System zu installieren.

Paketabhängigkeiten aufdecken

nslookup gefällt Ihnen wirklich gut Befehl, und Sie möchten, dass er auf all Ihren Systemen verfügbar ist. Sie stellen nach einem gescheiterten Versuch fest, dass Sie es nicht einfach auf ein anderes System kopieren und erwarten können, dass es funktioniert. Nach langer Recherche stellen Sie fest, dass die Datei nslookup Der Befehl hat mehrere Abhängigkeiten, die erfüllt sein müssen. Was sind diese Abhängigkeiten?

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

Bedeutet dies, dass es keine Abhängigkeiten für nslookup gibt ? Nein. Es bedeutet, dass Sie versucht haben, Abhängigkeiten für einen Befehl und nicht für ein Paket zu finden.

# 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

Denken Sie daran, dass Pakete Abhängigkeiten haben. Das Auflisten von Abhängigkeiten kann hilfreich sein, wenn Sie sie manuell erfüllen möchten oder wenn Sie der Meinung sind, dass neue Abhängigkeiten mit bereits auf Ihrem System installierten Paketen und Abhängigkeiten interferieren oder mit diesen inkompatibel sein könnten.

Das Repository identifizieren

Sie haben gesehen, wie ein anderer Systemadministrator das Hardware-Informationstool (hwinfo )-Befehl auf ihrem System. Sie versuchen den Befehl auf Ihrem System, erhalten aber die Fehlermeldung „Befehl nicht gefunden“. Sie versuchen dann, es zu installieren.

# 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

Sie bitten Ihre Kollegin, Ihnen zu sagen, woher sie die hwinfo hat Paket. Sie führt die folgende Abfrage durch, um die Quelle zu finden.

# 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

Sie stellen fest, dass die Quelle ein als epel identifiziertes Repository zu sein scheint . Du bittest sie weiter, dir zu sagen, wie man das epel einrichtet Repository. Sie erinnert sich an dieses epel ist eigentlich ein installierbares RPM-Paket, erinnert sich aber nicht an seinen vollständigen Namen. Sie führt die folgende Abfrage durch, um es zu identifizieren.

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

Jetzt können Sie das epel-release installieren Paket und installieren Sie dann hwinfo Paket.

Hinweis:Die epel-release repository ist die Extra Packages for Enterprise Linux-Repository-Konfiguration und ist das erste, was ich auf jedem neuen System installiere, auf das ich stoße, auf dem es nicht vorhanden ist.

[ Kostenloser Download:Spickzettel für fortgeschrittene Linux-Befehle. ]

Abschluss

Linux bietet seinen Administratoren viele nützliche Dienstprogramme und Befehle, um Informationen über das System und seine Komponenten zu finden. Sie müssen diese Befehle und Dienstprogramme zu Ihrer Sysadmin-Toolbox hinzufügen. Wie Sie diesem Artikel entnehmen können, müssen Sie nicht alle obskuren Optionen eines Befehls kennen, um das zu bekommen, was Sie brauchen. Verwenden Sie man Seiten für diese.


Linux
  1. So finden Sie die wichtigsten Verzeichnisse und Dateien (Festplattenspeicherplatz) in Linux heraus

  2. Was ist ein Chown-Befehl unter Linux und wie wird er verwendet?

  3. So benennen Sie Dateien unter Linux um

  4. So teilen und kombinieren Sie Dateien von der Befehlszeile in Linux

  5. So archivieren und komprimieren Sie Dateien unter Linux

So benennen Sie Dateien und Verzeichnisse in Linux um

So komprimieren Sie Dateien und Verzeichnisse unter Linux

So verschieben Sie Dateien und Verzeichnisse in Linux (mv-Befehl)

So sortieren Sie Dateien in Linux (GUI und Shell)

So installieren und verwenden Sie den fd-Befehl unter Linux

So zählen Sie Dateien im Verzeichnis unter Linux