Pythonや端末を使用して名前とバージョン別にRPMをダウンロードする方法は?

Pythonや端末を使用して名前とバージョン別にRPMをダウンロードする方法は?

パッケージ名とバージョンを指定して、特定のパッケージの.rpmファイルをダウンロードする必要があります。たとえば、「libX11-1.5.99.902」です。一致する.rpmを検索してダウンロードする方法をオンラインで探していましたが、これまで何も見つかりませんでした。理想的には、複数のファイルが一致する場合(たとえば、複数のスキーマ)、各バリアントをダウンロードします。しかし、これは必須ではありません。

使ってみました。Yumダウンローダしかし、ここには名前だけが必要で、バージョン情報は必要ありません。この記事では、rpm Pythonモジュールを使用する方法について説明します。ダウンロード可能なパッケージのリストではなく、現在インストールされているパッケージのみを返すことに気付くまで、私は有望だった。だからようやく使ってみました。dnf Python API.スクリプト例もあります(!)。しかし、結果は私が望むようではありません。たとえば、libX11-1.5.99.902の.rpmが必要であり、そのスクリプト例は私がインストールしたlibX11-1.6.7の他のアーキテクチャバリアントを返すので、これは100%不明です。 Web お問い合わせかどうか。

端末ベースのアプローチを試しましたが、同様のものはyum --showduplicates search all libX11以前のバージョンを表示しません。私の場合は、libX11の以前のマイナーバージョンをダウンロードしたいと思います。

言い換えれば、「libX11-1.5.99」、「libX11-1.5.99.902」などの文字列を取得して、その文字列をディスク上のRPMリストに照会してダウンロードする必要があります(すべてのアーキテクチャ/バリアントのRPM)。そのバージョンが最適です。 )。

どうすればいいですか?

答え1

実際にyumdownloader希望の方法で正確に作業を行います。

[root@299571442fbc /]# yumdownloader libX11-1.6.7 
Loaded plugins: fastestmirror, ovl, versionlock
Loading mirror speeds from cached hostfile
 * base: mirror.reconn.ru
 * centos-sclo-rh: mirror.reconn.ru
 * centos-sclo-sclo: mirror.reconn.ru
 * extras: mirror.sale-dedic.com
 * updates: mirror.sale-dedic.com
(1/2): libX11-1.6.7-4.el7_9.i686.rpm                                                                                                   | 611 kB  00:00:00     
(2/2): libX11-1.6.7-4.el7_9.x86_64.rpm                                                                                                 | 607 kB  00:00:00     

実際には、利用可能な最新バージョンがダウンロードされます。libX11-1.5.99バージョンを取得できない理由は、そのバージョンがどのリポジトリにも存在しないためです。

関連情報