728x90

RPM으로 패키지 관리하기

레드헷 리눅스의 사용자가 크게 증가하게 된 한가지 이유는 아마도 RPM이 아닌가 싶습니다. 

RPM(RedHat Package Manager)은 기존의 리눅스 배포판들보다 훨씬 편리해진 설치환경을 가지고 있었습니다. 기존의 리눅스 배포판들은 단순히 tar 포맷으로 묶여 있는 실행 파일을 복사하거나 소스 코드를 컴파일하는 방법을 사용해서 필요한 프로그램을 설치하거나 삭제하는 방법을 사용했습니다. 

그래서 시스템에는 설치된 프로그램의 수가 많아지고, 특정한 버전의 라이브러리에 프로그램이 의존할 경우, 사용자 자신이 프로그램들을 유지하고 관리하는데 많은 문제가 있었습니다. 그리고 이미 설치되어 있던 프로그램이더라도 실수로 다시 설치하면 기존의 프로그램이 생성한 파일들이 모두 삭제되는 일이 발생할 수도 있었습니다. 
또한 하나의 프로그램을 삭제하기 위해서는 그 프로그램에 관계된 프로그램과 관련 파일들을 사용자가 모두 알고 있어야만 완전히 삭제할 수 있다는 맹점을 가지고 있었습니다. 

이처럼 설치하고자 하는 프로그램을 찾는 것부터 설치하는 것 까지 어려움 투성이었습니다. 하지만 레드햇리눅스에서는 RPM패키지와 X윈도의 제어판을 이용해 쉽게 프로그램을 설치할 수 있습니다. RPM은 레드햇 사에서 만든 패키지 관리 도구로 리눅스 시스템을 패키지 형식으로 관리할 수 있게 해주는 관리 도구입니다. 

RPM은 누구나 사용할 수 있는 개방된 패키징시스템으로 만들어져 있으며, 디스트리뷰션을 인스톨할 때는 물론, 소프트웨어를 인스톨할 때나 버전업, uninstall 할때에도 많은 도움이 됩니다.
RPM의 특징은 특정한 기능을 가진 일련의 파일과 프로그램들을 묶어 쉽게 설치할 수 있게 해 줍니다. 

뿐만 아니라, RPM에서는 각 패키지가 어떤 이름의 파일을 어느 디렉토리에 인스톨하였는지, 그 패키지를 이용하기 위해서는 어떤 파일이 필요한지에 대한 정보를 관리하고 있습니다. 예를 들면 다른 패키지가 이용하는 라이브러리를 가진 패키지를 언인스톨할 수 없습니다. 

1. RPM 파일명 분석하기 

RPM 패키지 파일에는 파일이름이 '.src.rpm '으로 끝나는 소스패키지와 '.i386.rpm'이나 '.noarch.rpm' 등으로 끝나는 바이너리 패키지로 구별할 수 있습니다. 소스 패키지는 프로그램 소스파일 등이 포함된 패키지로, 바이너리 패키지를 작성하기 위해 사용합니다. 한편, 바이너리 패키지에는 컴파일, 링크 완료 실행파일이 포함되어 있어, 이것을 인스톨하면 일일이 소스파일을 컴파일하지 않고, 소프트웨어를 실행할 수 있습니다. 

RPM 파일은 크게 4개의 부분으로 이루어져 있습니다. 먼저 (패키지이름), (패키지버전), (배포판에서 가지는 자체 버전), (설치될 시스템)이 RPM 앞에 붙여지게 되어 있습니다. 
다음의 RPM파일명을 분석해 보도록 하겠습니다. 

myth-1.2.3-4.i386.rpm 

RPM 패키지 이름에서 - 는 각 필드를 구분하는 것입니다. 
우선, 맨 앞부분의 myth 는 패키지의 명칭으로 가장 기본적인 것입니다. 
패키지이름은 인스톨 후 조회나 언인스톨할 때 사용되는 이름입니다. 패키지 명칭에서 - 는 각 필드를 구분하려는 것으로, 이를 없애면 안됩니다. 
두번째 1.2.3 은 패키지의 버전입니다. 이것은 프로그램 버전과 일치하는 것입니다. 
세번째 의 4 는 패키지의 릴리즈 번호입니다. 
즉 배포판에서 가지는 자체 버전으로, 이 패키지가 몇번째로 만들어진 것인지를 나타냅니다. 똑같은 프로그램으로 버전이 같다고 해도 이전에 만든 패키지를 다시 재 패키징을 하였다면, 뭔가 변화가 있고 릴리즈 번호를 올리게 됩니다. 
네번째의 i386 은 어떤 시스템에서 쓰이는것인지를 나타내는 것입니다. 
i386 이라면 당연히 PC 계열을 나타내는 것이고 sparc 이라면 스팍 리눅스용, alpha 라면 알파 리눅스용일것입니다. (현재 레드햇은 이 세개의 시스템용으로 나옵니다.) 이 네번째 필드가 src 라고 적힌것이 있는데 그것은 소스 RPM 입니다. 바이너리 패키지를 만들기 위해 필요한것입니다. 
마지막의 rpm은 소위 말하는 확장자입니다. RPM 패키지라는것을 나타내 줍니다. 
버전번호와 릴리즈번호가 독립되어 있으므로, 새로운 패키지가 나왔을 때도 소프트웨어 자체가 버전업된 것인지 아니면 패키지 구성만 변한 것인지 파일명으로 알 수 있습니다. 
또 버전번호나 릴리즈번호에는 숫자 이외에 문자를 포함해도 됩니다. 

2. RPM 명령으로 설치하기 

1. 파일 설치하기 
RPM 패키지의 설치와 제거는 아주 간단합니다. 보통 다음과 같은 식을 입력하면 설치가 됩니다. 

rpm -i (rpm패키지파일이름) 

위와 같은 방식을 응용하여, 설치되는 모습을 확인하고자 할 때는 다음과 같은 명령어를 이용하면 됩니다. 

rpm -ivh (rpm패키지파일이름) 

이와 같이 입력하면, 설치 되는 모습이 화면상에 # 마크로 표시 될것입니다. 
하지만, RPM 으로 패키지를 설치할 때는 사실 위의 명령보다는 -Uvh 옵션을 사용하는 습관을 익히는것이 좋습니다. 

rpm -Uvh (rpm패키지파일이름)

이 명령을 사용한다면, rpm은 이 패키지의 이전 버전이 설치 되었는지를 보고, 이미 설치가 되어 있다면 업그레이드를 할 것입니다.
그냥 -i 또는 -ivh로 설치한다면 이전 버전의 같은 패키지에 대한 정보는 사라지지 않을 것이고, 또한 이전의 설정파일도 백업되지 않습니다. 따라서, 되도록 rpm - Uvh를 사용할 것을 권장합니다. 

2. 설치 위치 알아보기 
설치를 한 후, 파일들이 어느 디렉토리에 있는지 알아야 한다거나, 혹은 자신의 컴퓨터에 현재 어떠한 프로그램이 설치되어 있는지 알고 싶다면 다음과 같은 명령을 사용하면 됩니다. 

rpm -qa | more 

'-q' 옵션은 그 파일에 대한 정보를 알아내기위한 옵션이고, 'a' 옵션은 모든 파일에 대해 적용하라는 의미입니다. 이 명령을 수행하면 자신의 컴퓨터에 설치되어 있는 모든 프로그램의 목록이 페이지 단위로 나열되어 나옵니다.

3. 간략한 정보 보기 

하나의 패키지에 대한 간략한 정보를 알아보려면 다음과 같이 입력하면 됩니다. 이렇게 하면, 패키지에 대한 설명이 나타납니다. 

rpm -qi (rpm패키지파일이름) 

4. RPM 검색 하기

rpm -qa | grep [패키지명

5. 파일 정보 보기 

텍스트가 길게 표시되는데 파일명과 버전번호, 패키징한 사람, 프로그램에 대한 설명 등이 나옵니다. 이번에는 이 프로그램의 파일에 대한 상세한 정보를 알아보기 위해 다음과 같이 입력해 봅시다. 

rpm -ql (rpm패키지파일이름) 

그러면 이 패키지에 포함된 파일들이 어떠한 것이 있는지 내용을 자세하게 보여줄 것입니다. 


5. 프로그램 제거하기 

파일에 대한 권한과 어느 디렉토리에 있는지에 대한 정보가 포함됩니다. 마지막으로 설치한 프로그램을 제거해 보겠습니다. 

rpm -e (rpm패키지 이름) 

위와 같이 입력하면 쉽게 제거됩니다. 물론 프로그램을 제거할 때는 패키지의 의존성에 주의해서 신중히 생각한 후 행동에 옮겨야 할 것입니다. 
위에서 사용된 명령어 외의 명령어를 설명하자면 다음과 같습니다. 

rpm -qf (rpm파일이름) 특정한 파일이 포함되어 있는 패키지를 확인해 볼 때 
rpm -V (rpm패키지 이름) 시스템에 설치된 패키지를 검증할 때 
rpm -Va 시스템에 설치된 패키지들을 모두 검증할 때 
(실수로 몇 가지 파일들을 지웠는데, 어느 것을 지웠는지 확신할 수 없다. 전체 시스템을 점검해 보고 어떠한 파일이 빠져 있는지 살필수가 있다.) 
rpm -Vp (rpm패키지파일이름) 시스템에 설치할 때 사용한 RPM 파일을 이용해서 해당 패키지를 검증할 때 

* * 위의 과정 외에 rpm 실행모드에 관한 명령어는 다음과 같습니다 

rpm --help 도움말을 출력하고자 할 때 
rpm--showrc 설정사항을 출력하고자 할 때 
rpm--version 버전을 출력하고자 할 때 

* * 그외 몇가지 부수적인 옵션이 있는데 여기서 설명하도록 하겠습니다. 
이 부수적인 옵션들은 설치 또는 업그레이드 또는 제거 옵션뒤에 붙이게 됩니다. 
(제거 옵션에서는 --nodeps , --no***s , --test 만을 사용합니다.) 

예) rpm -e --nodeps (삭제할패키지이름) 

--nodeps : 의존성을 무시하고 설치한다.
가장 많이 겪게 되는 문제로 RPM 에서는 어떠한 패키지가 깔려 있지 않으면, 그것에 영향을 받는 패키지는 설치하지 못하는 경우가 있다. 
이 때 사용하는것이 --nodeps 이다. 

--force : 강제로 설치 하는 것이다. 
패키지 설치시 현재 패키지에 포함된 파일이 이미 다른 패키지에 의해 설치 되어 있을때, 이들이 충돌을 할 경우 에러가 발생한다. 하지만, 이 옵션으로 설치가 가능하다. 이 옵션은 이미 있는 파일은 덮어 쓰지 않는다. 이미 있는 파일마저 덮어 쓰려면 --replcaefiles를 사용하면 된다. 

--oldpackage : 만약 업그레이 할 패키지가 이미 설치되어 있는 패키지보다 오래된 버전일 경우에는 업그레이드를 진행시킬 수 없다. 그래도 불가피하게 설치를 진행시켜야 할 경우, 이옵션을 이용하여 강제로 설치할 수 있다.

--percent : 패키지 파일을 설치하는것을 퍼센트로 표시해준다. 

--replacepkgs : 이미 같은 패키지가 설치되 있더라도 다시 설치한다. 

--replacefiles : 이미 설치된 다른 패키지의 파일을 덮어 쓰면서라도 설치한다. 

--root : 디렉토리 와 디렉토리를 마치 / 처럼 생각하고 설치를 한다. 
즉 "--root /tmp" 라고 한다면 /tmp 가 / 인 것으로 생각하고 그 이하로 설치하게 될것이다. 한가지 문제가 있다면 이 명령을 사용하면 RPM 정보를 기록하는 파일을 지정한 디렉토리 및 에서 찾게 된다. 

--test : 패키지를 실제로 설치하지는 않고 충돌이나 의존성 문제가 있는지만을 검사한다. 

--no***s : 스크립트를 실행하지 않는다. 
(레드햇 패키지에는 4개의 스크립트가 들어간다. 설치 전후, 제거 전후 이렇게 4개이다.) 

--excludedocs : 문서 파일은 설치 하지 않는다

출처 : http://blog.naver.com/jecu7/150025707843

728x90

'Programming > linux왕초보' 카테고리의 다른 글

CRON  (0) 2008.09.10
리눅스에서 압축파일 다루기  (0) 2008.09.10
iptables  (0) 2008.09.10
vsftp 설정 옵션  (0) 2008.09.10
vsftpd 설치하기  (0) 2008.09.10
NFS 마운트 (NAS장비)  (0) 2008.09.10
리눅스 CD 부팅법  (0) 2008.09.10
[펌]유닉스 및 리눅스 명령어 팁  (1) 2008.09.10
리눅스 tail 사용법  (0) 2008.09.10
YUM 사용법  (0) 2008.09.10

+ Recent posts