目標は、Fedora、CentOS、RedHatなどのRPMベースのディストリビューションでパッケージのバージョンを識別することです。アップストリームバージョンがすべてのディストリビューションで同じであると信じることはできますか?それでは、コマンドラインからアップストリームバージョン番号をどのように検索(RPMまたはDEB)しますか?
質問で投稿できません -->
.specファイルに自動依存関係が指定されている場合、rpm -qp -requires .rpmにリストされているこれらの依存関係は仮想パッケージです。これらの仮想パッケージはライブラリsonameではなく、仮想パッケージ名だけです(sonameのように見えますが)。
たとえば、Fedora 27ではこれが機能します。
$ rpm -q --whatprovides "libQt5Core.so.5()(64bit)"
qt5-qtbase-5.9.2-5.fc27.x86_64
しかし、これはそうではありません
$ rpm -q --whatprovides libQt5Core.so.5
no package provides libQt5Core.so.5
$ rpm -q --whatprovides libQt5Core
no package provides libQt5Core
$ rpm -q --whatprovides Qt5Core
no package provides Qt5Core
自分の.rpm自体がこれらのライブラリをバンドルしている場合(つまり、これらの仮想パッケージを提供する場合)、これらの仮想パッケージがパッケージに付属しているため、システムにインストールされていない場合、RPMは文句を言いません。
答え1
各ディストリビューションには独自の開発サイクルがあるため、常に特定のパッケージの同じアップストリームバージョンを使用する(すべての)Linuxディストリビューションに頼ることはできません。
ディストリビューション全体でパッケージ名に多くの共通点がありますが、これは保証されません。経験的に、パッケージ名は、ディストリビューションと派生したすべてのダウンストリームディストリビューションでデフォルトで同じです。たとえば、DebianとUbuntu、RedhatとCentOSを考えてみましょう。