2018년 5월 29일 화요일

RHEL 오프라인 환경에서 nvidia-docker rpm 패키지 설치하기 (ppc64le)

간혹 방화벽에 막혀 Public network 접근이 안되는 시스템들이 있습니다. 이럴때는 외부에서 설치에 필요한 rpm 패키지들을 다운로드 받아서, 시스템에 직접 usb를 mount하여 local repository를 만들어 사용하는 등의 방법이 있습니다.

아래에서는 외부망 접근이 안되는 RHEL 7.3 환경에서 nvidia-docker 를 rpm 패키지로 설치하기 위한 방법을 기록합니다. (ppc64le 환경 기준)

1. 우선 Local repository 를 생성합니다.
usb를 mount 하는 방법 등은 많이 나와있으므로, 아래에서는 별도로 필요한 rpm packages 들을 로컬의 특정 위치에 (/root/imsi/rpms) 모두 위치시켜두고, 이를 repository로 지정합니다.

우선 createrepo를 설치해야 합니다. 의존성이 있는 두개의 패키지를 먼저 설치합니다.
$ rpm -Uvh deltarpm-3.6-3.el7.ppc64le.rpm
$ rpm -Uvh python-deltarpm-3.6-3.el7.ppc64le.rpm
$ rpm -Uvh createrepo-0.9.9-26.el7.noarch.rpm

설치할 rpm 패키지들을 /root/imsi/rpms 에 위치시킵니다.

$ createrepo /root/imsi/rpms
그러면 /root/imsi/rpms/repodata/repomd.xml 이 생성됩니다.

임의의 Local Yum repository를 등록합니다.
$ vi /etc/yum.repos.d/rpms.repo
[rpms-repo]
name = user-rpms-repository
baseurl = file:///root/imsi/rpms
enabled = 1
gpgcheck = 0

:wq

$ yum repolist
새로 등록한 rpms-repo 가 에러없이 인식되는지 확인합니다.


2. Local repository가 준비되었으면, nvidia-docker 를 설치합니다.
저는 미리 nvidia-docker 의 rpm 및 관련 패키지를 local repository에 받아두었습니다. (ppc64le)

$ rpm -Uvh nvidia-docker-1.0.1-1.ppc64le.rpm
$ which nvidia-docker
/bin/nvidia-docker
$ which nvidia-docker-plugin
/bin/nvidia-docker-plugin

/etc/rc.local을 열어서 맨 마지막줄에 아래 내용을 넣어줍니다.
$ vi /etc/rc.local
/bin/nvidia-docker-plugin &
:wq


<참조1>-----------------------------------------------------------------------------------
이미 패키지가 설치된 시스템에서 rpm 패키지를 다운로드 받고자 하는 경우, yumdownloader를 이용할 수 있습니다. python-ketchen, python-chardet, yum-utils 를 설치하고 나면 아래의 명령어로 rpm을 다운받을 수 있습니다.
$ yumdownloader 다운받을패키지이름

<참조2>-----------------------------------------------------------------------------------
아래의 명령어를 사용하면 nvidia-docker 를 설치하는데 필요한 관련 라이브러리 정보가 나옵니다. 확인된 라이브러리는 rpm package 사이트(https://rpmfind.net/linux/rpm2html/)에서 검색해보면, 필요한 패키지 이름을 확인할 수 있습니다. 혹은 $ yum deplist 패키지이름 명령어로 쉽게 확인 가능합니다.

[root@sys-93454 rpms]# rpm -qRp nvidia-docker-1.0.1-1.ppc64le.rpm
[root@sys-93454 rpms]# yum deplist createrepo
------------------------------------------------------------------------------------------------