インストールされているパッケージを一覧表示するには、通常、2つのうちの1つを実行します。
昔ながらの方法はrpm -qa | grep <whatever I look for>
それを使うことです。
しかし、最近はパッケージをもっと完璧に見せたいので今からdnf list --installed <whatever I look for>
。
ところで、結果を見ると、いくつか理解できない部分があります。
次の例を考えてみましょう。
# dnf list --installed zsh
Last metadata expiration check: 0:13:25 ago on Mon Jul 11 05:48:04 2016.
Installed Packages
zsh.x86_64 5.2-5.fc24 @@commandline
(実際の印刷物のスペースは広いです。)
したがって、結果項目は「パッケージ」「バージョン」「repo」です。
私の場合は、次のようになります。
- パッケージ:zsh.x86_64
- バージョン: 5.2-5.fc24
- 倉庫:@@コマンドライン
結果表はここまで理解していますが、リポジトリ名の前にある「@@」2つがどういう意味か混乱します。
また、「commandline」は、パッケージがコマンドラインからインストールされたことを示します(RPMをダウンロードして実行)。dnf install whatever.rpm
コマンドラインから、等。 )。しかし、zsh
インストールが完了したと確信していますdnf install zsh
。
しかし、それはすべてではありません。
システムのリポジトリに複数のパッケージがインストールされていますが@System
(インストールされていない場合もあります@fedora
)、同様のエントリがあります。fedora
@
@@commandline
それでは、リポジトリ名の前またはこの単語は@
正確に何を意味しますか?@@
@@commandline
リポジトリからインストールしたと確信していますが、なぜそれほど多くの重要なパッケージをインストールしましたか?
答え1
ここに少し光を投げてみましょう。
dnf list all | less
すべてのパッケージ(インストール済みパッケージと利用可能なパッケージの両方)を表示します。出力には、「インストール済みパッケージ」と「使用可能パッケージ」の2つの部分があります。すべての「インストール済みパッケージ」の前には@記号が付いていますが、「利用可能なパッケージ」はそうではありません。そのため、@
パッケージがインストールされているという印があると思います。パッケージがインストールされたが元のリポジトリが削除された場合は、@@
フラグが提供されると思います。
dnf ソースコードは以下でホストされています。https://github.com/rpm-software-management/dnf。 srcコードをダウンロードした後にディレクトリからgrep commandline -ri .
aを実行すると、何も返されません。しかし、githubページにはこれに関する言及があります。
パッケージ管理には、RPM、libsolv、および Hawkey ライブラリを使用します。
だからHawkeyを見てみると、次の場所にある同じプロジェクトでホストされます。https://github.com/rpm-software-management/hawkey。コードを見ると、grep -ri commandline .
いくつかの結果が表示されます。
./src/types.h:#define HY_CMDLINE_REPO_NAME "@commandline"
./hawkey.spec:- fix: commandline RPMs do not provide their files (RhBug:1112810) (Ales Kozumplik)
だからパッケージcommandline
から。コマンドに表示されるhawkey
理由は、コードが正しく機能していないようです。@comandline
dnf list
dnf
hawkey
答え2
(免責事項:実際にこれらの事項を議論する文書を見たことがないため、このコンテンツのソースを提供することはできません。 、そして単に推測です。わあああ長すぎます。 )
DNFはリポジトリを表すために@を追加します。インストール済みパッケージがインストールされました~から、dnf list
コンテキスト。あなたが指摘したように:
私のシステムには、@System、@fedora(ただし@を持たないfedoraもあります)、@@commandlineなどのいくつかのパッケージがインストールされています。
しかし、実際には何も見えないでしょうfedora
。インストール済みリスト内のすべてのパッケージには@-repoがソースとしてマークされているためです。 (実行し、チェックして使用してストレージ。sudo dnf list installed
これを確認するインストール済みリストの値と同じです。dnf info
From repo:
@
From repo: fedora
@fedora
しかし、一部の買戻契約は名前付き@
前にサインがあります。 JohnKochがHawkeyソースで見つけたように、「@commandline」は「コマンドラインストア」の「ストア名」として定義されます。したがって、インストールされているパッケージは1つだけリストに表示されます@@commandline
。名前が独自の@記号で始まる混乱したリポジトリです。dnf list
From repo: @commandline
dnf info
インストールされたパッケージに表示されるRepository: @System
これは@
という別の仮想ストレージです。これは、@System
現在インストールされているパッケージセットと@commandline
仮想ストレージを保持する仮想ストレージのようです。ソースコードリポジトリパッケージはどこかから来ましたが、どの倉庫でも来ません。
@commandline
この回答を最初に書いて以来、andの意味@System
とそれらの間の関係が変わったようです。いくつかの点ではより一貫性があり、@commandline
使用方法に関する以前の反対意見をいくつか解決します。もう見られないどの一覧表示されたインストール済みパッケージは で提供され、帯域@@System
外インストールが表示されますFrom repo: @commandline
(@@commandline
リストのコンテキストで)。dnf info
帯域外にインストールされたパッケージは通常、次のように表示されます。
$ dnf info remi-release
Installed Packages
Name : remi-release
---✀---
Repository : @System
From repo : @commandline
私はdnf reinstall remi-release
(なぜならパッケージを作るならはいremi
リポジトリから)次のように変更しました。
$ dnf info remi-release
Installed Packages
Name : remi-release
---✀---
Repository : @System
From repo : remi
2020年以降の変更の更新
パッケージソースコードストアに慣れる現在、パッケージデータベースの既存のリポジトリに依存していますが、幸いなことにこれが変更されました。今DNF履歴データベースの問合せ、現在のパッケージストアセットの代わりにインストールされているパッケージに関する情報を取得します。したがって、システムのアップグレード中にソースリポジトリの名前が保持されます。
以前、現在は役に立たない情報
ソース・リポジトリーに関するその他の点:From repo:
このフィールドにリストされているリポジトリーは、常に存在するリポジトリーです。現在のストレージコンテキストで。つまり、パッケージのインストールソースには、リポジトリ名を含む文字列ではなく、リポジトリ名を含む文字列も含まれます。インストールされたパッケージは次にリンクされます。アイデンティティシステムに存在する(またはすでに存在する)プロビジョニングストアに関する情報。
ほとんどのリポジトリはディストリビューションによって異なるため、新しいFedoraバージョンごとに上書きされます。 (たとえば、fedora
リポジトリは新しいバージョンを構成するパッケージのセットになり、fedora
以前のバージョンに存在していたリポジトリとはまったく異なります。したがって、システムのアップグレードが完了するたびに以前のバージョンの多くはリポジトリIDが無効なくなります。
DNF (または hawkey) は、存在しなくなったリポジトリからソースリポジトリとしてインストールされた@commandline
パッケージをダウングレードするために使用されます。 (ありがたいことに) もうそんなことが起こらないので「おなじみだ」と言います。存在しなくなったリポジトリにインストールされたパッケージは、もはやソースを@@commandline
/としてマークしませんFrom repo: @commandline
。実際、dnf info
これは彼らがもはや持っていないことを意味します。どのソースコードストア。たとえば、sitecopy
Fedora パッケージは廃止されました。 7または8より前のfedora
リポジトリからupdates
インストールされていますが、まだインストールされています。
$ dnf info sitecopy
Installed Packages
Name : sitecopy
Version : 0.16.6
Release : 14.fc22
Architecture : x86_64
Size : 373 k
Source : sitecopy-0.16.6-14.fc22.src.rpm
Repository : @System
From repo:
" "はリストにありません。
これは混乱しても、次のものが表示されるdnf list installed
ことを意味します。それパッケージ(および他の同様のパッケージ)@System
の横に(1つ)がリストされています。@
したがって、ある意味では、ある不一致を別の不一致と交換することです。なぜなら、列はもはや常に@
ソースストアの前に付いていないからです。それでも私は今の状況が良いです。
脚注
- 「...表示されています...」
(時々表示されます。「利用可能なパッケージ」が実行されるたびに必ず表示されるわけではありませんdnf list
。 「利用可能なパッケージ」(以下は重複しています)を使用すると、--showduplicates
バージョン、インストールの有無、ダウンロード可能に関係なく、「利用可能なパッケージ」セクションに既知のすべてのインスタンスが含まれます。)