장성한군사 2012. 4. 19. 13:58

[패키지 관리]
01. RPM?
RPM(Redhat Package Manager)이란?
Redhat 사에서 패키지를 좀더 쉽게 설치하고 관리하기 위해 만든 패키지 관리 프로그램이다.
복잡한 컴파일 과정없이 간단하게 패키지를 설치할 수 있는 장점이 있지만, 반대로 사용자에게 맞는 다양한 옵션들을 설정할 수 없다는 것이 단점이다.
그래서 간단한 프로그램의 경우에는 RPM 으로 설치를 하고, 서버와 같은 중요한 프로그램은 소스를 컴파일하여 설치하는 것이 좋다.

02. RPM 파일의 기본 구성
RPM 패키지 파일은 아래와 같은 형식으로 작성되어 있다.
패키지이름-버전-릴리즈,아키텍쳐.rpm
패키지이름 : 어떤 패키지인가를 설명해주는 패키지의 이름을 나타낸다.
버전 : 패키지의 버전을 의미한다.
릴리즈 : 한 버전의 패키지를 몇 번 빌드 했는지 알 수 있다.
아키텍쳐 : 패키지가 사용 가능 한 시스템을 말한다.
(예) i386, i486, i586, i686 : 인텔 x86 호환 계열에 사용
ia64 : IA-64(Itanium)
alpha : Digital 알파 서버용
ppc : 매킨토시 PowerPC용
sparc : Sun Microsystem용
s390 : IMB s/390용
(파일 예)
mc-4.6.1a-34.el5.i386.rpm
mysql-5.0.22-2.1.i386.rpm

03. RPM 패키지 설치하기
(01) rpm
rpm 명령어는 rpm 패키지를 설치하고 삭제 또는 관리하는 명령어이다.
<사용방법>
rpm [옵션] 파일
<옵션>
-i : 설치옵션이며, 이전 버전이 설치되어 있을 경우 설치하지 않는다.
-U : 이전 버전이 설치되어 있다면 업그레이드를 하고, 설치되어 있지 않다면 새롭게 설치를 진행한다.
-F : 이전 버전이 설치되어 있을 경우에만 설치하고, 설치되어 있지 않다면 새롭게 설치를 진행한다.
-v : 설치중 메시지를 출력한다.
-h : 진행 과정을 # 으로 표시한다.
-e : 패키지를 제거한다.
-q : 패키지가 설치되어 있는지 검색한다. 설치되어 있다면 패키지 이름과 버전을 출력한다.
-qa : 현재 설치된 모든 패키지 목록을 찾는다.
-qi : 현재 설치된 패키지의 간략한 정보를 출력한다.
-ql(소문자 엘) : 현재 설치된 패키지의 간략한 정보와 설치된 파일을 출력한다.
-Vf : 현재 설치된 파일을 검증한다.
-Va : 전체 패키지를 검증한다.
-Vp : 한 패키지만 검증한다.
--force : 패키지가 설치되어 있거나, 충돌이 일어나는 것을 무시하고 설치한다.
--nodeps : 의존성 문제를 무시하고 설치하거나 삭제한다.

(02) mc 설치
콘솔상에서 파일과 디렉토리를 편리하게 관리할 수 있는 미드나잇 커맨더(mc)를 설치해 보자.
mc는 CentOS x86 5번째 CD의 CentOS 디렉토리에 있다.
또는 웹사이트 http://isoredirect.centos.org/centos/5/os/i386/CentOS/ 에서 다운로드 할 수 있다.
RPM 패키지를 다운로드하여 설치를 진행하자.
[root@localhost ~]# cd /
[root@localhost /]# mkdir mc
[root@localhost /]# cd mc
[root@localhost mc]# wget http://isoredirect.centos.org/centos/5/os/i386/CentOS/mc-4.6.1a-35.el5.i386.rpm
--08:44:41-- http://isoredirect.centos.org/centos/5/os/i386/CentOS/mc-4.6.1a-35.el5.i386.rpm
Resolving isoredirect.centos.org... 38.100.80.35
Connecting to isoredirect.centos.org|38.100.80.35|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2196311 (2.1M) [application/x-rpm]
Saving to: `mc-4.6.1a-35.el5.i386.rpm'
100%[==========================================>] 2,196,311 554K/s in 5.0s
08:44:47 (426 KB/s) - `mc-4.6.1a-35.el5.i386.rpm' saved [2196311/2196311]
[root@localhost mc]# ls
mc-4.6.1a-35.el5.i386.rpm
[root@localhost mc]# rpm -ivh mc-4.6.1a-35.el5.i386.rpm
준비 중... ########################################### [100%]
1:mc ########################################### [100%]
<TIP> 간단한 방법으로 다운로드 하지 않고, rpm 명에 주소를 입력하는 방법도 있다.
[root@localhost mc]# cd /
[root@localhost /]# rpm -ivh http://isoredirect.centos.org/centos/5/os/i386/CentOS/mc-4.6.1a-35.el5.i386.rpm
http://isoredirect.centos.org/centos/5/os/i386/CentOS/mc-4.6.1a-35.el5.i386.rpm(을)를 복구합니다
준비 중... ########################################### [100%]
mc-4.6.1a-35.el5 패키지는 이미 설치되어 있습니다
이제 mc 를 실행해 보자.
[root@localhost /]# mc
(03) RPM 패키지 정보 보기
-qa 옵션을 이용하여 패키지가 설치되어 있는지 확인해 보자.
[root@localhost /]# rpm -qa mc
mc-4.6.1a-35.el5
-qi 옵션을 사용하면 좀 더 자세한 정보를 확인할 수 있다.
[root@localhost /]# rpm -qi mc
Name : mc Relocations: (not relocatable)
Version : 4.6.1a Vendor: CentOS
Release : 35.el5 Build Date:
Install Date: Build Host: builder10.centos.org
Group : System Environment/Shells Source RPM: mc-4.6.1a-35.el5.src.rpm
Size : 5444127 License: GPL
Signature : DSA/SHA1, 2007년 11월 21일 (수) 오전 04시 14분 05초, Key ID a8a447dce8562897
URL : http://www.ibiblio.org/mc/
Summary : User-friendly text console file manager and visual shell
Description :
..이하 생략..
만약 패키지에 의해 설치된 파일의 목록을 보고 싶다면 –ql 옵션을 사용한다.
[root@localhost /]# rpm -ql mc
/etc/mc
/etc/mc/cedit.menu
/etc/mc/edit.indent.rc
..이하 생략..
내가 설치한 프로그램에 대해서는 자세하 알아야 하겠죠? 위 모든 옵션을 기억하세요!
(04) RPM 패키지 삭제하기
패키지의 삭제는 –e 옵션을 이용하여 간단하게 삭제할 수 있다.
[root@localhost /]# rpm -e mc

04. yum 다루기
(01) yum
yum(윰)은 인터넷을 통하여 RPM 패키지가 저장된 서버에 접속하고 설치하고자 하는 RPM을 다운로드하여 설치한다. 또한 의존성을 가지는 다른 RPM 패키지까지 알아서 다운로드하여 설치한다.
<사용법>
yum [옵션] [모드] 패키지
<옵션>
-y : 설치 여부를 묻지 않고 바로 설치한다.
<모드>
install : 패키지를 설치한다.
check-update : 설치된 패키지 중에서 업데이트가 가능한 패키지의 목록을 출력한다.
update : 패키지를 업데이트 한다.
remove : 패키지를 삭제한다.
info : 패키지의 정보를 출력한다.
localinstall : 다운로드한 RPM 패키지를 설치한다.
(02) mc 설치
앞에서 삭제하였던 mc를 yum을 이용하여 설치해 보자.
yum install mc 를 입력한다.
[root@localhost /]# yum install mc
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
* base: ftp.daum.net
* updates: www.ftp.ne.jp
* addons: ftp.daum.net
* extras: ftp.daum.net
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package mc.i386 1:4.6.1a-35.el5 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
mc i386 1:4.6.1a-35.el5 base 2.1 M
Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 2.1 M
Is this ok [y/N]: y
설치할 패키지를 검색하여 결과를 보여주고 설치 여부를 물어본다. y 를 입력하면 설치가 진행된다.
Downloading Packages:
(1/1): mc-4.6.1a-35.el5.i 100% |=========================| 2.1 MB 00:01
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: mc ######################### [1/1]
Installed: mc.i386 1:4.6.1a-35.el5
Complete!
처음 yum 을 이용하면 다운로드를 위해 key가 필요하다. 경고문이 나타나면 y 를 입력한다.
(03) 패키지 정보 보기
[root@localhost /]# yum info mc
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
* base: ftp.daum.net
* updates: www.ftp.ne.jp
* addons: ftp.daum.net
* extras: ftp.daum.net
Installed Packages
Name : mc
Arch : i386
Epoch : 1
Version: 4.6.1a
Release: 35.el5
Size : 5.2 M
Repo : installed
Summary: User-friendly text console file manager and visual shell
Description:
..이하 생략..
yum info mc 를 입력하면 mc 패키지가 설치된 정보를 출력한다.
(04) 패키지 제거하기
설치된 패키지를 제거하려면 remove 옵션을 사용한다.
[root@localhost /]# yum remove mc
Loading "fastestmirror" plugin
Setting up Remove Process
Loading mirror speeds from cached hostfile
* base: ftp.daum.net
..중간 생략..
삭제할 패키지를 보여주고 삭제할 것인지 물어본다. y 를 입력하면 삭제가 진행된다.
설치할 때와 마찬가지로 –y 옵션을 추가하면 삭제여부를 물어보지 않고 삭제를 진행한다. 만약 의존되어 있는 패키지가 있다면 모두 삭제가 되므로 주의해서 사용해야 한다.
(05) 업데이트 가능한 패키지 검색
대부분의 패키지들은 시간이 지나면 좀더 보완된 패키지가 업데이트 된다.
이런 것들을 일일이 찾아서 하나하나 설치하는 것은 상당히 번거로운 작업이다.
yum 을 이용하면 간단하게 업데이트를 할 수 있다.
먼저 시스템에 설치된 패키지들 중 업데이트가 가능한 목록을 알아보자.
[TIP] 위 그림을 보면 위가 A , 아래가 B로 가정해서 설명하겠다.
A가 yum remove mc 를 진행 중인데..
B가 다른 터미널 창으로 같은 명령어인 yum으로 다른 작업을 시도 하는데
아래 B 처럼 메시지를 나타내면서 B 작업을 이루어 지지 않는다.
이럴 때에는 2가지 해결 방법이 있다.
① A 화면의 작업을 종료한다. [CTRL]+c 키를 누르면 된다.
② B 화면의 작업을 종료한다. [CTRL]+c 키를 누르면 된다.
③ 다른 문제가 발생하면 B 화면 우측의 pid 9910 값을 kill 시키면 된다.
다시 시스템에 설치된 패키지들 중 업데이트가 가능한 목록을 알아보자.
[root@localhost /]# yum check-update
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
* base: ftp.daum.net
* updates: www.ftp.ne.jp
* addons: ftp.daum.net
* extras: ftp.daum.net
OpenIPMI.i386 2.0.6-6.el5_2.2 updates
OpenIPMI-libs.i386 2.0.6-6.el5_2.2 updates
dmraid.i386 1.0.0.rc13-14.el5_2.1 updates
..이하 생략..
yum check-update 를 실행하면 현재 시스템에 설치된 패키지들 중에서 업데이트가 가능한 패키지의 목록을 보여준다.
모든 패키지를 업데이트 하려면 yum update 를 입력한다. 만약 특정 패키지만 업데이트 하려면
# yum update 패키지명 하면 된다.
마지막으로 yum 을 사용한 기록은 /var/log/yum.log 파일에 기록이 된다.
[root@localhost /]# cd /var/log
[root@localhost log]# ls
Xorg.0.log boot.log cups maillog rpmpkgs spooler
Xorg.0.log.old boot.log.1 dmesg maillog.1 rpmpkgs.1 spooler.1
acpid btmp faillog messages samba tallylog
anaconda.log conman gdm messages.1 scrollkeeper.log vbox
anaconda.syslog conman.old httpd pm secure wtmp
anaconda.xlog cron lastlog ppp secure.1 yum.log
audit cron.1 mail prelink setroubleshoot
[root@localhost log]# cat yum.log
Nov 03 08:16:14 Updated: krb5-libs - 1.6.1-25.el5_2.1.i386
Nov 03 08:16:19 Updated: nspr - 4.7.1-1.el5.i386
..이하 생략
<실습> 우리는 위에서 패키지 관리에 대해서 공부를 해보았다.
리눅스 원격 접속 서비스인 sshd 를 삭제를 해보고, 다시 설치해 보자.