IT Knowledge/기타

Yum 없이 패키지 설치(feat. CentOS gcc 설치)

Seok. 2022. 4. 18. 20:56
반응형

인터넷이 가능한 서버 or PC에서 gcc / gcc-c++ 설치할때는,

아주 간단하게 "yum install gcc" 하면 해결이 된다.

그러면, 의존성 패키지까지 함께 설치가 완료된다. 

 

그러나, Yum 사용하지 못하는 환경에서는...?

의존성 패키지를 모두 신경써서 하나하나 설치해줘야 한다.

 

 

이를 쉽게 있는 방법은 없을까?

다른곳에서 패키지를 하나하나 찾아서 받아와야 할까??

 

가장 쉬운방법은. "인터넷이 되는 다른 서버 or PC 이용하는 방법이 있다."

인터넷이 되는 다른 서버에서 패키지를 다운로드하여, 파일을 복사하여 설치한다!

 

yum이 가능한 서버에서는 아래처럼 입력하면, package파일을 다운로드 받을 있다.

# yum install --downloadonly --downloaddir=<다운받을 폴더> <package-name>

 

만약, 다운로드 받으려는 서버에 이미 패키지가 설치되어 있다면,

패키지 already installed and lastest version 메시지를 받을 있다.

 

그렇다면, 이미 설치되어 있는 패키지를 다운로드 받으려면,

Reinstall 명령어로 변경하면 가능하다.

# yum reinstall --downloadonly --downloaddir=<다운받을 폴더> <package-name>

 


 

그러나, 이 방법은 설치해야 하는 패키지 다운로드 된다.

나는 dependencies 찾아서 모든 패키지를 다운로드 해야 한다.

 

모든 의존성패키지까지 다운로드 받으려면 아래의 방법이 있다.

 

[yumdownloader]

# yumdownloader --resolve --destdir <downloadpath> <package-name>

의존성 패키지까지 모두 다운로드 받는다.

그러나!! yumdownloader는 이미 서버에 의존성패키지가 모두 설치되어 있는 서버라면,

설치되어 있는 의존성패키지는 제외하고 다운로드 한다.

모든 패키지를 다운로드 받기에는 문제가 있다. 

의존성패키지는 제외하고 gcc 만 다운로드 받는 걸 확인할 수 있다 .

위의 yumdownloader 종속성을 정확히 인식하지 못하다보니,

repoquery 사용하여 종속성을 찾은다음 yumdownloader 통해서 다운로드 받는것이 좋다.

혹은, repotrack을 이용해서 한번에 의존성 패키지까지 모두 받는것이 좋다. 

 

 

[repoquery]

repoquery : 종속성파일을 포함하여 검색명령(query) 있습니다.

# repoquery -R --resolve <package-name>
# repoquery -R --resolve --recursive <package-name>

다운로드 받을때는 recursive 포함하는것이 좋다.

그래야 하위 의존성패키지들이 가지고 있는 의존성패키지까지 모두 찾아서 다운로드 받을 수 있다. 

 

 

[repotrack]

repotrack : 모든 종속성 패키지와 함께 rpm 다운로드 있습니다.

# repotrack
(repoquery -R --resolve --recurvice <package-name>를 다운로드 받는것과 같은 효과)

-p 옵션은 다운로드 받을 폴더 경로 이다. 

 

 

다운받고나서 rpm -ivh OR rpm -Uvh 등으로 패키지를 설치해주면 된다.

(-Uvh 경우, 업그레이드 명령어지만, 기존에 설치된 것이 없을경우 설치를 진행하므로,

모두 -Uvh 진행한다. )

Rpm -Uvh 설치중

의존성파일이 없는경우 오류가 나온다.

이렇게 gcc 설치 완료.

Yum 안되면 이렇게 불편하다….

반응형