오프라인에서 사용하기 위해 yum을 사용하여 필요한 모든 RPM을 얻는 방법은 무엇입니까?


30

"yum install $ PACKAGE"를 사용할 수있는 인터넷 연결이 가능한 서버가 하나 있습니다. 필요한 모든 RPM 파일을 $ DIRECTORY로 다운로드하는 등의
일부 yum 명령이 yum cache-rpms $PACKAGE $DIRECTORY필요합니다.이 파일에는 Install.shnet 연결없이 많은 다른 서버에서 이러한 RPM을 설치하는 순서를 나타내는 파일 ( ) 도 있습니다 .
Install.sh쉘 스크립트 일 수도 있습니다. 쉘 스크립트 yum install $PACKAGE는 네트워크를 사용하지 않고을 사용한다는 점을 제외하고는와 동일한 동작을 합니다 $DIRECTORY.

가능한?

yum과 RPM을 사용할 수있는 일반적인 솔루션을 찾고 있지만 구체적으로는 CENTOS 6.7 서버 세트에 있습니다.


몇 가지 솔루션을 생각할 수 있습니다. (1) 단일 패키지 접근법. 다운로드 횟수는 줄어들지 만 더 많은 수동 작업이 필요합니다. 아니면 ... (2) 전체 레포 접근. 이것은 많이 다운로드 하지만 더 많은 자동화로 수행 할 수 있습니다.
Steve Bonds

@SteveBonds, (1) "단일 패키지"를 원합니다. (2) "전체 저장소"는 다운로드하여 너무 많은 공간을 소비하기 때문에 시간이 걸립니다.
Prem

우주 유영을 보았습니까?
fpmurphy

답변:


40

다음은 다운로드 및 설치 패키지로 "httpd"를 사용하는 특정 예입니다. 이 프로세스는 CentOS6 및 CentOS7 모두에서 테스트되었습니다.

필요한 것을 설치하고 다운로드 한 RPM을 넣을 장소를 만드십시오.

# yum install yum-plugin-downloadonly yum-utils createrepo
# mkdir /var/tmp/httpd
# mkdir /var/tmp/httpd-installroot

RPM을 다운로드하십시오. 여기에는 빈 루트에 아무것도 설치되어 있지 않으므로 여기제안 된 installroot 트릭을 사용하여 모든 종속성을 완전히 다운로드 하십시오 . Yum은 거기에 일부 메타 데이터를 만들지 만 모든 것을 버릴 것입니다. CentOS7의 releasever경우 "7"입니다.

# yum install --downloadonly --installroot=/var/tmp/httpd-installroot --releasever=6 --downloaddir=/var/tmp/httpd httpd

네, 했습니다 작은 버전. 전체 리포지토리 다운로드 크기를 보았을 것입니다!

새로운 RPM 더미를 YUM 저장소로 바꾸고 더 이상 필요없는 것을 정리하는 데 필요한 메타 데이터를 생성하십시오.

# createrepo --database /var/tmp/httpd
# rm -rf /var/tmp/httpd-installroot

다운로드 디렉토리를 저장소로 구성하십시오. CentOS7의 경우 gpgkey는 "6"대신 "7"로 이름이 지정됩니다.

# vi /etc/yum.repos.d/offline-httpd.repo
[offline-httpd]
name=CentOS-$releasever - httpd
baseurl=file:///var/tmp/httpd
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

누락 된 종속성을 확인하려면 다음을 수행하십시오.

# repoclosure --repoid=offline-httpd

나는 파악하지 않은 이유와 같은 CentOS7이 보고서 물건에 libssl.so.10(libssl.so.10)(64bit)누락 된 httpd-tools경우 openssl-libs-1.0.1e-51.el7_2.2.x86_64.rpm(즉, 라이브러리의 공급자) 디렉토리에 분명히 존재한다. 그래도 무언가 빠진 것이 있으면 yum install --downloadonly위와 동일한 방법 으로 돌아가서 추가 할 수 있습니다 .

오프라인이거나 /var/tmp/httpdrepo 디렉토리를 다른 서버로 복사 한 후 repo를 설정하십시오.

# vi /etc/yum.repos.d/offline-httpd.repo
[offline-httpd]
name=CentOS-$releasever - httpd
baseurl=file:///var/tmp/httpd
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
# yum --disablerepo=\* --enablerepo=offline-httpd install httpd

희망적으로 누락 된 종속성이 없습니다!


3
가이드를 따라 CentOS 7에서 폴더를 빌드하고 Red Hat 7에 설치하려고 시도했는데 모두 오류없이 작동했습니다.
Piyin

1
두 OS 사이의 호환성은 그와 같은 기능을 수행하기에 충분하지만 RedHat 지원을 보장하려면 비슷한 프로세스를 사용하여 RedHat 서버에서 RedHat 소프트웨어를 다운로드해야합니다.
Steve Bonds

1
네 말이 맞아. 그러나이 경우 변경 할 수없는 네트워크 규칙이있는 가까운 환경이었습니다. "고객은 항상 옳다"
Piyin

1
Centos 7에서 매우 잘 작동합니다. 감사합니다!
Carlos Vega

4

yumdownloader어느 패키지에 포함되어 있는지 묻습니다 yum-utils. 이에 대한 몇 가지 질문과 답변이 이미 있습니다 (예 : yumdownloader를 사용하여 모든 종속성 다운로드 (이미 설치 한 경우에도) 참조) ? 또는 Yum에서 패키지 URL을 어떻게 찾습니까?

yumdownloaderInstall.sh순서는 yum 자체에 의해 결정될 수 있으므로 파일 을 생성하지는 않지만 패키지를 다운로드하므로, 다운로드 한 패키지
yum install ./*rpm가있는 폴더를 통해 대상 상자에 패키지를 설치할 수 있습니다 . 기본 설치-관련 첫 번째 링크 참조 repotrack)


+1, 내가 원하는 것 같아! 내가 원하는 것과 일치하면 실험하고 업데이트 할 것입니다!
Prem

4

여러 번 필요했기 때문에 @Steve Bonds 답변을 자동화했습니다. PKG두 머신 모두에 설치할 패키지로 정의하십시오 (면책 조항 : CentOS 7의 경우 CentOS 6의 경우 --releaseverCentOS-7지점을 변경하십시오) .

온라인 머신

PKG=... # NAME OF THE PACKAGE TO INSTALL ON OFFLINE MACHINE
yum install --downloadonly --installroot=/tmp/$PKG-installroot --releasever=7 --downloaddir=/tmp/$PKG $PKG
createrepo --database /tmp/$PKG
rm -rf /tmp/$PKG-installroot
rsync -arv /tmp/$PKG/ [IP of the machine]:/tmp/$PKG

오프라인 컴퓨터에서 :

PKG=... # NAME OF THE PACKAGE
echo "[offline-$PKG]
name=CentOS-\$releasever - $PKG
baseurl=file:///tmp/$PKG/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7" >  /etc/yum.repos.d/offline-$PKG.repo

# install package offline:
yum --disablerepo=\* --enablerepo=offline-$PKG install --nogpgcheck $PKG

1
-y백그라운드에서 실행될 때 패키지 설치를 확인하기 위해 마지막 명령 에 추가 할 수 있습니다 .
ToniTornado

설명에서 자동화 된 프로세스로 가져간 것이 좋습니다. 잘 하셨어요!
Steve Bonds
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.