Linuxの経験があれば、システム間でコマンドやユーティリティを共有するだけでは不十分であることをご存知でしょう。実行可能ファイルをあるシステムから別のシステムに単純にコピーできない理由は、ライブラリやその他のサポートパッケージなどの依存関係が原因です。一部のユーティリティは確かに コピーされますが、これは普遍的にそうではありません。 nslookup
を含むインストールしたパッケージを忘れた場合 たとえば、コマンドを見つける方法が必要です。
さらに、コマンドが属するパッケージを見つけたら、そのパッケージをインストールしたリポジトリを見つけたい場合があります。 AppStreamの基本的なリポジトリ 、 BaseOS 、およびその他 たくさん含まれていますが、すべてではありません あなたが必要とするか、遭遇するかもしれないパッケージの。この記事では、関連するリポジトリ、パッケージ、およびコマンドを見つけるためにシステムにクエリを実行するいくつかの方法について説明します。
- パッケージには、コマンド、ユーティリティ、ライブラリが含まれています
- パッケージには依存関係があります
- リポジトリにはパッケージが含まれ、保存され、提供されます
ファイルタイプの分類
使用しているユーティリティは、スクリプト、プレーンテキスト、またはコマンドですか?コンパイルされていますか?ファイルの場所はどこですか?ユーティリティに関する基本的な情報が必要になる場合があります。 which
コマンドは、ファイルがパスにある場合にファイルを検索します。さらに特定する前に、ファイルを見つける必要があります。
$ which mtr
/usr/sbin/mtr
ファイルタイプ情報を表示するには、file
コマンドは不可欠です。
$ 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)
file
が原因で、最初の試行は失敗しました コマンドはmtr
の場所を知りません 指図。フルパスがfile
に指定された後 、情報が表示されます。
コンパイルされていない実行可能ファイルの例を次に示します。
$ file /usr/sbin/ifcfg
/usr/sbin/ifcfg: POSIX shell script, ASCII text executable
ご覧のとおり、file
コマンドは知っておくべき重要なものであり、キャリアを通じて必ず使用するものです。
[読者も気に入りました:YUMとRPMを使用したLinuxパッケージ管理]
パッケージの検索
nslookup
コマンドは頻繁に使用するコマンドですが、新しいジョブではどのシステムにもインストールされていません。インストールしたいのですが、どのパッケージに含まれているのか思い出せず、nslookup
としてインストールしようとしています。 失敗します。
# 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
nslookup
を含むパッケージを検索するには 、rpm
を使用して「逆引き」ルックアップを実行できます コマンド。
# rpm -qf nslookup
error: file /root/nslookup: No such file or directory
ここで何が問題になっていますか? rpm
コマンドがnslookup
を見つけることができません しかし、あなたがそれを使用したので、それはインストールされます。待って。パスを見てください:/root/nslookup
。 nslookup
はありません 現在の(ルートのホーム)ディレクトリにあるコマンド。 nslookup
を見つけます which
を使用する コマンドを実行してから、rpm
を発行します コマンド。
# which nslookup
/usr/bin/nslookup
# rpm -qf /usr/bin/nslookup
bind-utils-9.11.13-6.el8_2.1.x86_64
nslookup
が表示されます bind-utils
の一部です パッケージ。これで、他のシステムにコピーして、通常どおりに使用できます。
# nslookup google.com
/opt/nslookup: error while loading shared libraries: libdns.so.1107: cannot open shared object file: No such file or directory
このエラーは、nslookup
コマンドに、コピー先の新しいシステムで満たされていない依存関係があります。解決策は、DNF/YUMを使用して各システムに個別にインストールすることです。
パッケージの依存関係を明らかにする
あなたはnslookup
が本当に好きです コマンドを実行し、すべてのシステムで使用できるようにします。試行が失敗した後、それを別のシステムに単純にコピーして機能することを期待することはできないことに気付きます。多くの調査の結果、nslookup
コマンドには、満たす必要のあるいくつかの依存関係があります。それらの依存関係は何ですか?
# dnf deplist nslookup
Last metadata expiration check: 3:00:24 ago on Tue 10 Nov 2020 03:27:27 PM CST.
これは、nslookup
に依存関係がないことを意味しますか? ?いいえ。これは、パッケージではなくコマンドの依存関係を見つけようとしたことを意味します。
# 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
パッケージを忘れないでください 依存関係があります。依存関係を手動で満たす場合、または新しい依存関係がシステムにすでにインストールされているパッケージや依存関係と干渉または互換性がない可能性があると思われる場合は、依存関係を一覧表示すると便利です。
リポジトリの識別
ハードウェア情報ツール(hwinfo
)を使用している仲間のシステム管理者を見ました )彼女のシステムのコマンド。システムでコマンドを試しましたが、「コマンドが見つかりません」というエラーが表示されます。次に、それをインストールしようとします。
# 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
同僚に、hwinfo
をどこで入手したかを教えてもらいます。 パッケージ。彼女は次のクエリを実行してそのソースを見つけます。
# 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
ソースはepel
として識別されるリポジトリのように見えることに注意してください 。さらに、epel
の設定方法を教えてくれるように彼女に依頼します リポジトリ。彼女はそのepelを覚えています は実際にはインストール可能なRPMパッケージですが、フルネームを覚えていません。彼女はそれを識別するために次のクエリを実行します。
# rpm -qa |grep epel
epel-release-8-8.el8.noarch
これで、epel-release
をインストールできます パッケージ化してから、hwinfo
をインストールします パッケージ。
注:epel-release
リポジトリは、Enterprise Linuxリポジトリ構成用の追加パッケージであり、リポジトリがない新しいシステムに最初にインストールするものです。
[無料ダウンロード:高度なLinuxコマンドのチートシート。 ]
まとめ
Linuxは、システムとそのコンポーネントに関する情報を見つけるための便利なユーティリティとコマンドを管理者に提供します。これらのコマンドとユーティリティをsysadminツールボックスに追加する必要があります。この記事からわかるように、必要なものを取得するために、コマンドのすべてのあいまいなオプションを知る必要はありません。 man
を使用する それらのページ。