Python이나 터미널을 사용하여 이름과 버전별로 RPM을 다운로드하는 방법은 무엇입니까?

Python이나 터미널을 사용하여 이름과 버전별로 RPM을 다운로드하는 방법은 무엇입니까?

패키지 이름과 버전을 지정하여 특정 패키지의 .rpm 파일을 다운로드해야 합니다. 예를 들면 "libX11-1.5.99.902"입니다. 일치하는 .rpm을 쿼리하고 다운로드하는 방법을 온라인에서 찾고 있었지만 지금까지 아무 것도 찾지 못했습니다. 이상적으로는 여러 파일이 일치하는 경우(예: 여러 스키마) 각 변형을 다운로드합니다. 그러나 이는 필수 사항은 아닙니다.

나는 사용해 보았습니다.Yum 다운로더하지만 여기에는 이름만 필요하고 버전 정보는 필요하지 않습니다.이 문서에서는 rpm Python 모듈을 사용하는 방법을 보여줍니다.다운로드 가능한 패키지 목록이 아닌 현재 설치된 패키지만 반환한다는 사실을 깨닫기 전까지는 유망해 보였습니다. 그래서 마침내 나는 사용해 보았습니다.dnf 파이썬 API. 심지어 스크립트 예제도 있습니다(!). 그러나 결과는 내가 원하는 것 같지 않습니다. 예를 들어, libX11-1.5.99.902의 .rpm이 필요하고 해당 스크립트 예제는 내가 설치한 libX11-1.6.7의 다른 아키텍처 변형을 반환하므로 이것이 100% 확실하지 않습니다. 웹 문의 여부입니다.

터미널 기반 접근 방식을 시도했지만 이와 유사한 것은 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버전을 얻을 수 없는 이유 는 해당 버전이 어떤 저장소에도 존재하지 않기 때문입니다.

관련 정보