GNU/Linux >> Znalost Linux >  >> Linux

Jak se dotazovat na soubory, balíčky a úložiště v Linuxu

Máte-li nějaké zkušenosti s Linuxem, pravděpodobně víte, že nemůžete mezi systémy pouze sdílet příkaz nebo nástroj. Důvodem, proč nemůžete jednoduše zkopírovat spustitelný soubor z jednoho systému do druhého, jsou závislosti, jako jsou knihovny a další podpůrné balíčky. Některé utility určitě umí kopírovat, ale neplatí to univerzálně. Pokud jste zapomněli, který balíček jste nainstalovali, který obsahoval nslookup například příkaz, potřebujete způsob, jak jej najít.

Kromě toho, jakmile najdete balíček, ke kterému příkaz patří, možná budete chtít zjistit, ze kterého úložiště jste balíček nainstalovali. Základní úložiště AppStream , BaseOS a Doplňkové služby obsahují hodně, ale rozhodně ne všechny z balíčků, které byste mohli potřebovat nebo se s nimi setkat. V tomto článku prozkoumám některé metody dotazování systému, abych našel související úložiště, balíčky a příkazy.

  • Balíčky obsahují příkazy, nástroje a knihovny
  • Balíčky mají závislosti
  • Repozitáře obsahují, uchovávají a poskytují balíčky

Klasifikace typu souboru

Je nástroj, který používáte, skript, prostý text nebo příkaz? Je to zkompilované? Jaké je umístění souboru? Možná budete chtít nějaké základní informace o nástroji. which příkaz vyhledá soubor, pokud je ve vaší cestě. Než budete moci dále identifikovat soubor, budete jej muset najít.

$ which mtr

/usr/sbin/mtr

Chcete-li zobrazit informace o typu souboru, file příkaz je nepostradatelný.

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

První pokus se nezdařil, protože file příkaz nezná umístění mtr příkaz. Po zadání úplné cesty k file , zobrazí se informace.

Zde je příklad spustitelného souboru, který není zkompilován.

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

Jak můžete vidět, file velení je důležité znát a určitě ho budete používat během své kariéry.

[ Čtenářům se také líbilo:Správa balíčků Linuxu pomocí YUM a RPM ]

Nalezení balíčku

nslookup příkaz je ten, který často používáte, ale není nainstalován na žádném ze systémů ve vaší nové úloze. Chcete jej nainstalovat, ale nemůžete si vzpomenout, který balíček jej obsahuje, a pokoušíte se jej nainstalovat jako nslookup selže.

# 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

Chcete-li najít balíček, který obsahuje nslookup , můžete provést "zpětné" vyhledávání pomocí rpm příkaz.

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

co je tady špatně? rpm příkaz nemůže najít nslookup ale je nainstalován, protože jste ho použili. Počkejte. Podívejte se na cestu:/root/nslookup . Neexistuje žádné nslookup příkaz ve vašem aktuálním (kořenovém domovském) adresáři. Vyhledejte nslookup pomocí which a poté zadejte rpm příkaz.

# which nslookup
/usr/bin/nslookup

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

Vidíte, že nslookup je součástí bind-utils balík. Nyní jej můžete zkopírovat do ostatních systémů a používat jej jako obvykle.

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

Chyba vám říká, že nslookup příkaz má závislosti, které nebyly splněny v novém systému, do kterého jste jej zkopírovali. Řešením je nainstalovat jej jednotlivě na každý systém pomocí DNF/YUM.

Odhalení závislostí balíčků

Opravdu se vám líbí nslookup a rádi byste jej měli k dispozici na všech svých systémech. Po neúspěšném pokusu si uvědomíte, že jej nemůžete jednoduše zkopírovat do jiného systému a očekávat, že to bude fungovat. Po dlouhém zkoumání zjistíte, že nslookup příkaz má několik závislostí, které musí být splněny. Jaké jsou tyto závislosti?

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

Znamená to, že pro nslookup neexistují žádné závislosti ? Ne. Znamená to, že jste se pokusili najít závislosti pro příkaz spíše než pro balíček.

# 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

Pamatujte, že balíčky mít závislosti. Výpis závislostí může být cenný, pokud je chcete splnit ručně nebo pokud si myslíte, že nové závislosti mohou narušovat nebo být nekompatibilní s balíčky a závislostmi již nainstalovanými ve vašem systému.

Identifikace úložiště

Viděli jste kolegu sysadmina, jak používá nástroj pro informace o hardwaru (hwinfo ) příkaz v jejím systému. Vyzkoušíte příkaz v systému, ale zobrazí se chyba „Příkaz nenalezen“. Poté se jej pokusíte nainstalovat.

# 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

Požádáte svou kolegyni, aby vám řekla, kde vzala hwinfo balík. Provede následující dotaz, aby nalezla jeho zdroj.

# 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

Všimněte si, že zdroj vypadá jako úložiště označené jako epel . Dále ji požádáte, aby vám řekla, jak nastavit epel úložiště. Pamatuje si ten epel je ve skutečnosti instalovatelný balíček RPM, ale nepamatuje si jeho celé jméno. Provede následující dotaz, aby ji identifikovala.

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

Nyní můžete nainstalovat epel-release a poté nainstalujte hwinfo balíček.

Poznámka:epel-release repository je konfigurace úložiště Extra Packages for Enterprise Linux a je první věcí, kterou nainstaluji na jakýkoli nový systém, se kterým se setkám a který ji nemá.

[ Zdarma ke stažení:Cheat sheet pro pokročilé příkazy Linuxu. ]

Koneckonců

Linux poskytuje svým administrátorům spoustu užitečných nástrojů a příkazů k vyhledání informací o systému a jeho komponentách. Tyto příkazy a nástroje musíte přidat do sady nástrojů správce systému. Jak můžete vidět z tohoto článku, nemusíte znát všechny obskurní možnosti příkazu, abyste získali to, co potřebujete. Použijte man stránky pro ně.


Linux
  1. Co je příkaz Chown v Linuxu a jak jej používat

  2. Jak archivovat a komprimovat soubory na Linuxu

  3. Jak odstranit soubory a adresáře v příkazovém řádku Linuxu [Výukový program pro začátečníky]

  1. Jak zjistit nejlepší adresáře a soubory (místo na disku) v Linuxu

  2. Jak přejmenovat soubory v Linuxu

  3. Jak kopírovat soubory v Linuxu a Unixu? 10 cp Příklady příkazů

  1. Jak odstranit soubory a adresáře v Linuxu z příkazového řádku

  2. Jak rozdělit a kombinovat soubory z příkazového řádku v Linuxu

  3. Jak komprimovat a extrahovat soubory pomocí příkazu tar v systému Linux?