Ayant une certaine expérience avec Linux, vous savez probablement que vous ne pouvez pas simplement partager une commande ou un utilitaire entre les systèmes. La raison pour laquelle vous ne pouvez pas simplement copier un exécutable d'un système à un autre est due aux dépendances, telles que les bibliothèques et autres packages de support. Certains utilitaires peuvent certainement être copié, mais ce n'est pas universellement le cas. Si vous avez oublié le package que vous avez installé et qui incluait le nslookup
commande, par exemple, vous avez besoin d'un moyen de la trouver.
De plus, une fois que vous avez trouvé le package auquel appartient une commande, vous souhaiterez peut-être savoir à partir de quel référentiel vous avez installé le package. Les référentiels de base de AppStream , BaseOS , et Extras contiennent beaucoup, mais certainement pas tous des packages dont vous pourriez avoir besoin ou que vous pourriez rencontrer. Dans cet article, j'explore certaines méthodes d'interrogation du système pour trouver des référentiels, des packages et des commandes associés.
- Les packages contiennent des commandes, des utilitaires et des bibliothèques
- Les packages ont des dépendances
- Les référentiels contiennent, stockent et fournissent des packages
Classer le type de fichier
L'utilitaire que vous utilisez est-il un script, du texte brut ou une commande ? Est-il compilé ? Quel est l'emplacement du fichier ? Vous voudrez peut-être quelques informations de base sur l'utilitaire. Le which
La commande localise un fichier s'il se trouve dans votre chemin. Vous devrez localiser un fichier avant de pouvoir l'identifier davantage.
$ which mtr
/usr/sbin/mtr
Pour afficher les informations sur le type de fichier, le file
commande est indispensable.
$ 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)
La première tentative a échoué car le file
la commande ne connaît pas l'emplacement du mtr
commande. Une fois le chemin complet donné au file
, les informations s'affichent.
Voici un exemple de fichier exécutable non compilé.
$ file /usr/sbin/ifcfg
/usr/sbin/ifcfg: POSIX shell script, ASCII text executable
Comme vous pouvez le voir, le file
est une commande importante à connaître et que vous utiliserez certainement tout au long de votre carrière.
[ Les lecteurs ont également aimé :la gestion des packages Linux avec YUM et RPM ]
Trouver le colis
Le nslookup
La commande est celle que vous utilisez fréquemment mais elle n'est installée sur aucun des systèmes de votre nouveau travail. Vous voulez l'installer mais vous ne vous souvenez plus quel paquet le contient et essayez de l'installer en tant que nslookup
échoue.
# 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
Pour trouver le package qui contient nslookup
, vous pouvez effectuer une recherche "inversée" en utilisant le rpm
commande.
# rpm -qf nslookup
error: file /root/nslookup: No such file or directory
Qu'est-ce qui ne va pas ici ? Le rpm
la commande ne trouve pas nslookup
mais il est installé parce que vous l'avez utilisé. Attendre. Regardez le chemin :/root/nslookup
. Il n'y a pas de nslookup
commande dans votre répertoire actuel (racine d'accueil). Localisez nslookup
en utilisant le which
commande puis émettez le rpm
commande.
# which nslookup
/usr/bin/nslookup
# rpm -qf /usr/bin/nslookup
bind-utils-9.11.13-6.el8_2.1.x86_64
Vous voyez que nslookup
fait partie des bind-utils
emballer. Vous pouvez maintenant le copier sur vos autres systèmes et l'utiliser comme vous le feriez normalement.
# nslookup google.com
/opt/nslookup: error while loading shared libraries: libdns.so.1107: cannot open shared object file: No such file or directory
L'erreur vous indique que le nslookup
La commande a des dépendances qui n'ont pas été satisfaites sur le nouveau système sur lequel vous l'avez copiée. La solution consiste à l'installer individuellement sur chaque système à l'aide de DNF/YUM.
Révéler les dépendances des packages
Vous aimez vraiment le nslookup
commande, et vous aimeriez qu'elle soit disponible sur tous vos systèmes. Vous réalisez après une tentative infructueuse que vous ne pouvez pas simplement le copier sur un autre système et vous attendre à ce qu'il fonctionne. Après de nombreuses recherches, vous découvrez que le nslookup
La commande a plusieurs dépendances qui doivent être respectées. Quelles sont ces dépendances ?
# dnf deplist nslookup
Last metadata expiration check: 3:00:24 ago on Tue 10 Nov 2020 03:27:27 PM CST.
Cela signifie-t-il qu'il n'y a pas de dépendances pour nslookup
? Non. Cela signifie que vous avez tenté de trouver des dépendances pour une commande plutôt que pour un package.
# 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
N'oubliez pas que les packages ont des dépendances. La liste des dépendances peut être utile si vous souhaitez les satisfaire manuellement ou si vous pensez que de nouvelles dépendances pourraient interférer ou être incompatibles avec les packages et les dépendances déjà installés sur votre système.
Identifier le dépôt
Vous avez vu un autre administrateur système utiliser l'outil d'informations sur le matériel (hwinfo
) commande sur son système. Vous essayez la commande sur votre système mais vous recevez une erreur "commande introuvable". Vous tentez alors de l'installer.
# 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
Vous demandez à votre collègue de vous dire où elle a obtenu le hwinfo
emballer. Elle effectue la requête suivante pour trouver sa source.
# 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
Vous notez que la source semble être un dépôt identifié comme epel
. Vous lui demandez en outre de vous dire comment configurer le epel
dépôt. Elle se souvient que epel est en fait un package RPM installable mais ne se souvient pas de son nom complet. Elle effectue la requête suivante pour l'identifier.
# rpm -qa |grep epel
epel-release-8-8.el8.noarch
Vous pouvez maintenant installer le epel-release
package puis installez le hwinfo
paquet.
Remarque :Le epel-release
repository est la configuration du référentiel Extra Packages for Enterprise Linux et c'est la première chose que j'installe sur tout nouveau système que je rencontre et qui ne l'a pas.
[ Téléchargement gratuit :Aide-mémoire sur les commandes avancées de Linux. ]
Conclusion
Linux fournit à ses administrateurs de nombreux utilitaires et commandes pratiques pour trouver des informations sur le système et ses composants. Vous devez ajouter ces commandes et utilitaires à votre boîte à outils sysadmin. Comme vous pouvez le voir dans cet article, vous n'avez pas besoin de connaître toutes les options obscures d'une commande pour obtenir ce dont vous avez besoin. Utilisez man
pages pour ceux-là.