이미 설치된 경우에도 모든 종속성을 다운로드하려면 yumdownloader를 사용해야 합니까?

이미 설치된 경우에도 모든 종속성을 다운로드하려면 yumdownloader를 사용해야 합니까?

이미 설치된 경우에도 yumdownloader를 사용하여 모든 종속성을 다운로드할 수 있는 방법이 있습니까?

로컬 저장소를 생성하려고 하는데 필요한 패키지만 포함하고 싶습니다.

답변1

다음과 같이 사용할 수 있습니다 repotrack.

repotrack -a x86_64 -p /repos/Packages [packages]

-a아쉽게도 깃발(아치)에 버그가 있습니다. i686 및 x86_64를 다운로드합니다.

문제를 해결하는 방법은 다음과 같습니다.

if opts.arch:
    #archlist = []
    #archlist.extend(rpmUtils.arch.getArchList(opts.arch))
    archlist = opts.arch.split(',') # Change to this
else:
    archlist = rpmUtils.arch.getArchList()

repoquery다음을 사용하여 그룹 패키지 목록을 가져올 수 있습니다 .

repoquery --qf=%{name} -g --list --grouppkgs=all [groups]

이것을 repotrack에 입력할 수 있습니다:

repoquery --qf=%{name} -g --list --grouppkgs=all [groups] | xargs repotrack -a x86_64 -p /repos/Packages

답변2

참고로 yumdownloader이 일을 하지 마세요. 패키지 관리를 위해 yum을 사용하는 사람이라면 다음 명령줄이 패키지 RPM과 모든 종속 항목을 반복적으로 다운로드할 것으로 예상하는 것이 당연합니다.

yumdownloader --resolve <package>

그러나 그것은 진실이 아니다. 첫 번째 수준 종속성 또는 아직 설치되지 않은 종속성을 인쇄할 수 있습니다. 나는 모른다.

이는 CentOS 6.5에서 작동하는 방법입니다. yum다운로드 전용 플러그인을 설치하려면 아래 단계를 따르세요 .빨간 모자. 기본적으로 CentOS 6.x에서는 다음을 수행합니다.

$ sudo yum install yum-plugin-downloadonly.noarch

그런 다음 스위치를 결합하여 --installroot플러그인을 사용하십시오 yum. 이렇게 하면 해결이 방지 yum되고 시스템에 이미 설치된 종속성을 건너뜁니다.

sudo yum install \
  --installroot=</path/to/tmp_dir> \
  --downloadonly --downloaddir <rpm_dir> <package>

패키지의 RPM <package>과 모든 종속 항목을 다운로드하여 Git을 사용하여 디렉터리에 배치합니다 <rpm_dir>.

$ mkdir root rpms
$ sudo yum install --installroot=/home/roy/root \
  --downloadonly --downloaddir rpms/ git

답변3

또한 시도해 보세요

repoquery -R --resolve --recursive <name> | xargs -r yumdownloader

예를 들어:

repoquery -R --resolve --recursive firefox | xargs -r yumdownloader

원천:https://www.thegeekdiary.com/downloading-rpm-packages-with-dependent-yumdownloader-vs-yum-downloadonly-vs-repoquery/

답변4

실제로 그러한 저장소를 구축하는 것은 유지 관리하기 어렵다는 것을 알았습니다. 우리는 다음과 같은 이유로 이 저장소를 구축했습니다.

  • 여러 서버의 로컬 소스에서 패키지를 가져오고 싶습니다.
  • 신뢰할 수 있는 패키지만 설치할 수 있습니다.

우리가 직면할 수 있는 문제는 다음과 같습니다.

  • 패키지를 최신 상태로 유지하세요. 종속성이 변경됩니다. 일부는 추가되고 일부는 제거됩니다.
  • 설치하려는 새 패키지를 추가합니다.
  • 위의 과제로 인해 중요 업데이트를 추진하는 프로세스가 길어집니다.

궁극적으로 더 나은 해결책은우리의문제는 공식 저장소를 프록시하고 우리가 사용하는 패키지를 캐싱하는 것입니다. 이는 다음과 같은 이유로 잘 작동합니다.

  • 실제로 사용하는 패키지만 로컬에 저장됩니다.
  • 이전 패키지는 자동으로 만료됩니다.
  • 패키지가 처음 사용되면 공식 저장소에서 가져오지만 후속 요청은 캐시에서 옵니다.
  • 공식 저장소를 신뢰하는 것만으로도 신뢰를 구축하기에 충분합니다. 우리의 프록시 이미지는 신뢰할 수 있는 소스에서만 패키지를 가져옵니다.

우리는 프록시 지원이 내장된 Nginx를 사용합니다.

관련 정보