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ě.