이전글



인터넷 연결 없이 로컬 패키지 저장소를 통해 패키지 관리하기
yum은 패키지를 설치시 의존성 문제를 모두 자동으로 해결해 줍니다. 패키지를 설치할때 의존하는 다른 패키지가 있으면 해당 패키지 또한 패키지 저장소에서 다운로드 받아 자동으로 설치해줍니다. 그러나 패키지 설치시에는 인터넷이 연결되어 있어야만 합니다.

만약에 실무 환경에서 보안 정책등으로 인해 인터넷에 연결될 수 없는 상황이라면 RPM을 통해 수동으로 의존 패키지까지 설치해 주거나 로컬 패키지 저장소를 만들어 설치할 수 있습니다.

여기서 로컬 패키지 저장소란 내가 임의로 여러가지 RPM 패키지들을 한꺼번에 모아놓은 저장소를 의미합니다. 패키지 저장소를 해당 로컬 저장소로 설정해 두면 yum 명령어 사용시 인터넷이 아닌 해당 로컬 패키지 저장소를 참조하여 의존성 문제를 해결함과 동시에 패키지를 자동적으로 설치해 줄 것입니다.



로컬 패키지 저장소 설정하기
여기서는 간단한 예를 들기위해 CentOS 배포판 이미지(DVD 버전 iso 파일)을 이용하도록 하겠습니다. 기본적으로 CentOS 설치시 사용하는 배포판 이미지에는 원본 패키지(rpm 파일들)이 포함되어 있는데, 이미지를 마운트하고 yum 패키지 저장소 경로 설정을 해당 마운트 경로로 변경하여, 인터넷을 경유하지 않고 해당 마운트 경로를 패키지 저장소로 이용하도록 바꿀것입니다.


먼저 인터넷이 되지 않는다는 가정을 하기위해 NIC를 내리도록 합니다. 장치명을 확인합니다.
ifconfig



장치를 중지합니다. 네트워크가 안되므로 인터넷 연결이 끊겼습니다.
ifdown ens33



다음으로 로컬 패키지 저장소를 설정할텐데 그 전에 패키지 파일들을 구해야 합니다. 여기서는 CentOS 배포판 이미지를 사용하기로 했습니다. CentOS 이미지 파일은 다음의 경로를 참조하여 구합니다.


이미지를 다운로드 받았으면 cdrom에 삽입하고 마운트합니다.
mkdir /media/cdrom
umount /dev/cdrom
mount /dev/cdrom /media/cdrom/




다음은 yum 패키지 저장소 경로를 변경합니다. yum 설정파일이 모여있는 /etc/yum.repos.d/ 로 이동합니다.
cd /etc/yum.repos.d/



설정을 변경하기에 앞서 현재 설정 파일들을 백업해 둡니다.
mkdir backup
mv *.repo backup/



로컬 저장소용 설정 파일을 하나 생성합니다. yum 명령어는 /etc/yum.repos.d 하위의 .repo 설정 파일을 확인하므로 내가 만든 로컬 저장소 설정 파일을 참조할 것입니다.
touch localRepo.repo



만든 설정파일에 설정 내용을 입력합니다. 여기서는 아까 마운트 시켜놓았던 패키지 파일들이 모여있는 CentOS 이미지 경로로 설정해둘 것입니다.
vi localRepo.repo



저장소 URL을 http://가 아닌 file://로 dvd 마운트 경로를 설정해 두었습니다.
주의점은 file:// 다음의 경로에 /medea/cdrom으로 설정해야 한다는 사실입니다. (즉 /// 세 개 필요)
[localRepo]
name=localRepo
baseurl=file:///media/cdrom/
gpgcheck=0



테스트를 위해 postgresql 데이터베이스의 jdbc를 설치해 봅니다.
테스트 결과는 성공입니다. 다운로드한 저장소(Repository)가 아까 설정해 두었던 localRepo인 것을 볼 수 있습니다.
yum install postgresql-jdbc








로컬 패키지 저장소와 인터넷 패키지 저장소 서버 둘 다 사용하기
yum 사용시 네트워크가 되지 않는 환경에서 로컬 저장소를 이용하는 경우 다운로드 시간 없이 설치되므로 속도가 빠르다는 장점이 있습니다.

이러한 장점을 이용하여 로컬 저장소에 존재하는 패키지들은 로컬 저장소를 이용하여 설치하고 로컬 저장소에 없는 패키지들은 네트워크를 경유하여 패키지 서버를 통해서 다운로드 받도록 설정해 보겠습니다.


먼저 이글의 위에서부터 쭉 따라하면서 로컬 저장소 설정까지 완료합니다. 그러면 패키지 파일들이 들어있는 dvd가 마운트 되었을 것이고 yum 설정으로 dvd가 마운트 된 경로에서 패키지를 받도록 된 상태일 것입니다. 만약 네트워크까지 내린 상태라면 ifup 명령어를 통해 네트워크를 살려줍니다.
ifup ens33


그리고 이전에 설정해 두었던 localRepo.repo 설정 파일을 에디터로 실행합니다.
vi /etc/yum.repos.d/localRepo.repo

[remotRepo] 부분을 추가합니다. 이는 패키지 저장소로 사용할 수 있는 미러 서버 주소를 추가한 것입니다. 미러서버 주소는 변경될 수 있는데 구글에 검색하거나 다음 링크를 참조합니다. https://www.centos.org/download/mirrors/
[localRepo]
name=localRepo
baseurl=file:///media/cdrom/
gpgcheck=0


[remoteRepo]
name=remoteRepo
baseurl=
    http://mirror.centos.org/centos/7/os/x86_64/
    http://mirrors.edge.kernel.org/centos/7/os/x86_64/
gpgcheck=0



설정을 저장했다면 yum 명령을 테스트합니다. 테스트를 위해 html2ps 패키지를 설치했는데, 로컬 패키지 저장소에 있는 패키지는 로컬에서 설치하고 없는 패키지는 원격 저장소 서버를 통해 설치 된 것을 알 수 있습니다.
yum install -y html2ps


블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

댓글을 달아 주세요! 질문 환영합니다!