킥스타트로 설치한 RHEL 6.5 x86_64 시스템에 써드파티 어플리케이션 설치를 위해 32bit 패키지들을 설치를 해야 될 일이 발생하였다.

그런데 킥스타트로 OS 설치 시 openssl을 업데이트한 것과 해당 시스템의 네트워크 환경의 조합이 문제가 되어 libcurl yum 설치가 진행 되지 않았다. 이 문서는 그것을 해결하는 방안에 대한 문서이다.

 

1. 요구사항

해당 서버는 배치서버 역활을 하고 배치 어플리케이션 설치를 위해 아래와 같은 요구 사항이 발생했다.

1.3. 32bit 패키지

1) glibc
2) libcurl
3) libstdc++
4) libgcc
5) pam

1.2. 32bit JAVA

1) JAVA-JDK 1.7.x

 

2. 패키지 설치 진행

2.1. 32bit openssl 설치

libcurl 을 yum 으로 설치하게 되면 아래 rpm이 없어서 설치 진행이 안된다.

openssl-1.0.1e-30.el6_6.2.i686
openssl-devel-1.0.1e-30.el6_6.2.i686

kickstart 설치 때 RHEL 6.5의 기본인 openssl-1.0.1e-15.el6에서 openssl-1.0.1e-30.el6_6.2 로 yum local install을 하였고,

이 시스템이 외부망 네트워크가 안되는 관계로 RHEL 6.5 DVD 파일들로 시스템안에 yum repository를 구성을 하였는데, 그 구성에는 openssl-1.0.1e-30.el6_6.2 버전이 없기 때문이다.

따라서 레드햇 사이트에서 다운받은 아래 openssl을 먼저 설치 한다.

# yum -y localinstall openssl-1.0.1e-30.el6_6.2.i686.rpm openssl-devel-1.0.1e-30.el6_6.2.i686.rpm

2.2. 요구 패키지 설치

# cd /root/rhel/Packages

# yum install -y glibc-2.12-1.132.el6.i686.rpm glibc-devel-2.12-1.132.el6.i686.rpm

# yum install -y libcurl-7.19.7-37.el6_4.i686.rpm libcurl-devel-7.19.7-37.el6_4.i686.rpm

# yum install -y libstdc++-4.4.7-4.el6.i686.rpm libstdc++-devel-4.4.7-4.el6.i686.rpm

# yum install -y pam-1.1.1-17.el6.i686.rpm pam-devel-1.1.1-17.el6.i686.rpm

* libgcc 는 시스템에 i686 rpm이 이미 설치되어 있다.

설치를 진행하면 의존성이 요구되는 다른 32bit 패키지들도 함께 설치가 된다.

 

3. 32bit Java 설치

3.1. java 다운로드

Oracle 사이트에서 jdk-7u71-linux-i586.tar.gz 파일을 다운 받아 해당 서버의 /usr/local 에 넣는다.

3.2. java 설치

1) 기존에 설치된 64bit java를 이동

# mv /usr/local/jdk1.7.0_71/ /usr/local/jdk1.7.0_71-64bit/

2) 32bit java 설치

32bit java 압축을 풀고 싱볼릭링크 재 구성

# cd /usr/local

# tar zxvf jdk-7u71-linux-i586.tar.gz

# mv jdk1.7.0_71/ jdk1.7.0_71-32bit/

# rm -f java

# ln -sf jdk1.7.0_71-32bit java

3) 환경변수 설정

/etc/profile은 기존 설정과 변동된게 없으므로 그냥 둔다. 참고로 기존 설정은 아래와 같다.

# tail /etc/profile

.
.
# For Java PATH
CLASSPATH=.:/usr/local/java/lib/tools.jar
PATH=$PATH:/usr/local/java/bin
export JAVA_HOME CLASSPATH PATH

4) java 버전 확인

# java -version

java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) Server VM (build 24.71-b01, mixed mode)

참고로 64 비트 버전의 경우 아래와 같이 출력된다.

# /usr/local/jdk1.7.0_71-64bit/bin/java -version

java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)

 

4. 다른 방법

이 시스템은 RHEL6.5 DVD를 Kickstart 형식으로 Custom 하게 수정 후 DVD로 만들어서 설치하였다.

설치 시 Base 패키지 카테고리 + 최소한의 X-Window + Korean Package + Java + Kernel, Openssl, Bash RPM을 yum localinstall 로 업데이트 하였다. 그리고 외부망 네트워크가 안되는 관계로 시스템 내에 yum을 구성 하였다.

어플리케이션 요구사항에 맞춰 몇가지 32bit 시스템을 설치하다 보니 OS 설치 때 패치한 openssl 버전이 자체 yum repository에 있는 버전보다 높아서 설치 진행이 안되는 현상이 발생 한 것이다.

만약 외부 yum 서버와 통신이 되는 구조 였다면 문제가 되지 않았을 것이다.

이 문제를 해결하기 위한 방안으로는 위의 방법 말고도 yum history를 추적 하여 yum rollback 으로 openssl을 openssl-1.0.1e-15.el6.x86_64.rpm 버전으로 맞춰서 진행 하는 방법도 있다.

yum rollback을 하는 이유는 의존성 관계로 openssl을 단순히 rpm -e 로 지울 수 가 없기 때문이다. 레드햇의 권장사항도 rpm 파일 하나를 설치하더라도 rpm 명령보다는 yum localinstall을 권장한다.

하지만 openssl에 보안 버그가 이슈가 있는 관계로 위와 같은 방법으로 openssl을 최신 버전으로 유지시키는 것을 권장한다.

 

이상으로 문서를 마친다.

yum 의존성 문제 해결과 32bit 패키지 설치

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다