GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでファイル、パッケージ、およびリポジトリをクエリする方法

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/nslookupnslookupはありません 現在の(ルートのホーム)ディレクトリにあるコマンド。 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 を使用する それらのページ。


Linux
  1. Linuxでコマンドラインからファイルとディレクトリを削除する方法

  2. Linuxでtarコマンドを使用してファイルを圧縮および抽出する方法は?

  3. Linux および Unix でファイルをコピーする方法10 cp コマンドの例

  1. Linuxでトップディレクトリとファイル(ディスク容量)を見つける方法

  2. LinuxでのChownコマンドとは何ですか?その使用方法

  3. Linuxでファイルの名前を変更する方法

  1. Linuxでコマンドラインからファイルを分割して結合する方法

  2. Linuxでファイルをアーカイブおよび圧縮する方法

  3. Linuxコマンドラインでファイルとディレクトリを削除する方法[初心者向けチュートリアル]