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

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

"yum install $PACKAGE"를 사용할 수 있는 네트워크 연결이 있는 서버가 있습니다. 필요한 모든 RPM 파일을 $DIRECTORY에 다운로드할
수 있도록 일부 yum 명령이 필요합니다 . $DIRECTORY 에는 네트워크 연결 없이 다른 많은 서버에 이러한 RPM을 설치하는 순서를 설명하는 yum cache-rpms $PACKAGE $DIRECTORY파일( )도 포함됩니다 . 네트워크를 사용 하는 대신 .Install.sh
Install.shyum install $PACKAGE$DIRECTORY

가능한?

저는 yum과 RPM을 사용할 수 있는 일반적인 솔루션을 찾고 있습니다. 특히 CENTOS 6.7 서버 세트에 있습니다.

답변1

아래는 다운로드 및 설치 패키지로 "httpd"를 사용한 구체적인 예입니다. 이 절차는 CentOS6 및 CentOS7에서 테스트되었습니다.

필요한 것을 설치하고 다운로드한 RPM을 위한 공간을 만드세요.

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

RPM을 다운로드하세요. 이는 다음을 사용합니다.여기에 루트 스킬을 설치하는 것이 좋습니다빈 루트 디렉터리에는 아무것도 설치되어 있지 않으므로 모든 종속성을 강제로 전체 다운로드합니다. 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

libssl.so.10(libssl.so.10)(64bit)CentOS7에서 이 보고서에 (라이브러리 제공자) 디렉토리에 명시적으로 존재하는 정보가 누락된 이유를 파악하지 못했습니다 httpd-tools. openssl-libs-1.0.1e-51.el7_2.2.x86_64.rpm그러나 뭔가 빠진 것이 분명하다면 yum install --downloadonly다시 돌아가 위와 동일한 방법을 사용하여 추가할 수 있는 좋은 기회가 될 수 있습니다.

오프라인이거나 /var/tmp/httpd저장소 디렉터리를 다른 서버에 복사한 후 해당 서버에 저장소를 설정합니다.

# 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

의존성이 사라지지 않기를 바랍니다!

답변2

너무 많이 필요해서 자동으로 @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

답변3

yumdownloader패키지에 무엇이 포함되어 있는지 문의하신 것 같습니다 yum-utils. 이에 대한 몇 가지 질문과 답변이 이미 있습니다.이미 설치된 경우에도 모든 종속성을 다운로드하려면 yumdownloader를 사용해야 합니까?또는Yum을 사용하여 패키지 URL을 찾는 방법은 무엇입니까?

yumdownloader패키지는 다운로드되지만 파일을 생성하지는 않습니다. Install.sh순서는 yum 자체에 의해 결정될 수 있으므로
yum install ./*rpm다운로드한 패키지가 포함된 폴더를 통해 대상 컴퓨터에 패키지를 설치할 수 있습니다(기본 설치와 마찬가지로 위 섹션 참조). 링크 repotrack)

관련 정보