2010년 11월 1일 월요일

패키지 관리 - YUM(Yellowdog Updater Modified)

RPM은 로컬 호스트 내에서 파일이 존재해야 한다. 만일 시스템에 설치된 패키지(Package)가 업데이트 되었다면 관리자는 이 업데이트 패키지 리스트를 받아 전부 다운로드 받은후에 rpm 명령어로 의존성을 해결하면서 설치를 해줘야 할 것이다. 이 얼마나 짜증나는 일인지....

이렇게 짜증나는 일을 쉽게 해결할 수는 없을까? 미 노스캐롤라이나의 듀크 대학교 물리학과에서 레드햇 리눅스를 사용하고 있었던 모양이다. 그리고 얼마후에 패키지관리에 너무 많은 시간이 든다는 것을 알게된 학과에서 이를 네트워크로 자동으로 감지하고 의존성을 해결하면서 업데이트 뿐만 아니라 설치, 삭제까지 할수 있는 프로그램을 제작했는데 그것이 바로 YUM(Yellowdog Updater Modified)이다.

YUM은 네트워크를 통해서 RPM을 관리해준다. 설치, 삭제, 업데이트를 의존성을 해결하면서 모두 자동으로 해준다.

패키지 검색

어떤 프로그램을 알고 싶다면 검색을 하면된다. 예를들면, ftp 프로그램을 알고 싶다면 다음과 같이 하면 된다.
[code bash]
]# yum search ftp
bug-buddy.x86_64 : A bug reporting utility for GNOME
esound.i386 : Allows several audio streams to play on a single audio device.
esound.x86_64 : Allows several audio streams to play on a single audio device.
esound-devel.i386 : Development files for EsounD applications.
esound-devel.x86_64 : Development files for EsounD applications.
gdm.x86_64 : The GNOME Display Manager.
gdm-docs.x86_64 : GDM Documentation
gftp.x86_64 : A multi-threaded FTP client for the X Window System.
mc.x86_64 : User-friendly text console file manager and visual shell
kdebase.i386 : K Desktop Environment - core files
kdebase.x86_64 : K Desktop Environment - core files
squid.x86_64 : The Squid proxy caching server.
aria2.x86_64 : Download utility with BitTorrent and Metalink support
atftp.x86_64 : Advanced Trivial File Transfer Protocol (TFTP) client
atftp-server.x86_64 : Advanced Trivial File Transfer Protocol (TFTP) server
atop.x86_64 : AT Computing System and Process Monitor
[/code]

패키지의 설명과 패키지 이름에서 ftp 가 들어가있으면 목록을 보여준다.

패키지 이름으로 검색을 하고 싶다면 다음과 같이 한다.
[code bash]
]# yum list *ftp*
atftp.x86_64                                              0.7-6.el5.rf                                    rpmforge
atftp-server.x86_64                                       0.7-6.el5.rf                                    rpmforge
ftp.x86_64                                                0.17-35.el5                                     base   
ftpproxy.x86_64                                           1.2.3-2.2.el5.rf                                rpmforge
fuse-curlftpfs.x86_64                                     0.9.1-1.el5.rf                                  rpmforge
gftp.x86_64                                               1:2.0.18-3.2.2                                  base   
lftp.x86_64                                               4.0.10-1.el5.rf                                 rpmforge
libobexftp.x86_64                                         0.22-1.el5.rf                                   rpmforge
libobexftp-devel.x86_64                                   0.22-1.el5.rf                                   rpmforge
obexftp.x86_64
[/code]

사용할 수 있는 모든 패키지 리스트.
[code bash]
]# yum list
[/coe]

패키지 저장소에서 활용할수 있는 모든 패키지를 보여준다.

패키지 설치.
[code bash]
]# yum install gftp
[/code]

위와같이 패키지를 설치할수 있다. 패키지 파일의 전체파일 이름을 알 필요도 없다. 그리고 의존성이 있다면 그것도 자동으로 설치해준다.

패키지 삭제.
[code bash]
]# yum remove gftp
[/code]

삭제도 패키지 파일 이름을 입력할 필요도 없다. 의존성도 걸리면 자동으로 다 해결해 준다.

패키지 정보.
[code bash]
]# yum info gftp
Available Packages
Name       : gftp
Arch       : x86_64
Epoch      : 1
Version    : 2.0.18
Release    : 3.2.2
Size       : 939 k
Repo       : base
Summary    : A multi-threaded FTP client for the X Window System.
URL        : http://gftp.seul.org/
License    : GPL
Description: gFTP is a multi-threaded FTP client for the X Window System. gFTP
           : supports simultaneous downloads, resumption of interrupted file
           : transfers, file transfer queues to allow downloading of multiple
           : files, support for downloading entire directories/subdirectories, a
           : bookmarks menu to allow quick connection to FTP sites, caching of
           : remote directory listings, local and remote chmod, drag and drop, a
           : connection manager and much more.
           :
           : Install gftp if you need a graphical FTP client.
[/code]

패키지의 정보를 알려준다.

업데이트 패키지 확인
[code bash]
]# yum check-update
[/code]

업데이트할 패키지가 존재한다면 리스트를 보여준다.

패키지 업데이트
[code bash]
]# yum update
[/code]

패키지들을 자동으로 확인해서 업데이트를 해준다.

패키지 그룹 보기.
이거는 약간 설명이 필요하다. RPM 패키지들은 일종의 그룹을 가지고 있다. 이 패키지는 네트워크 관련 패키지, 저 패키지는 시스템 관련 패키지등 식이다. 이를 확인할 수 있는 방법이 바로 아래 명령이다.
[code bash]
]# yum grouplist
Installed Groups:
   Editors
   Yum Utilities
Available Groups:
   Administration Tools
   Authoring and Publishing
   Base
   Beagle
   Cluster Storage
   Clustering
[/code]

위 내용을 보면 설치된 그룹과 앞으로 설치할수 있는 그룹을 알 수 있다.

그룹 패키지 설치.
[code bash]
]# yum groupinstall XFCE-4.4
[/code]
XFCE4 를 설치할때 패키지들을 하나하나 설치할 필요없다. 위의 예제처럼 XFCE-4.4 그룹을 설치해주면 자동으로 모두 XFCE4 가 자동으로 설치해준다.

더 놀라운 기능은 다운로드한 rpm 파일을 설치할 수 있다는 것이다. 이렇게 되면 rpm 파일에 의존성이 필요할 경우 네트워크를 통해서 자등올 설치를 해준다.
[code bash]
]# yum localinstall kernel-2.6.32-100.0.19.x86_64.rpm
[/code]

배포판을 통째로 업그레이드를 해야할 때가 있다. 예를들어 CentOS 5.5 가 6.0으로 업그레이드가 되었다면 업그레이드를 해줘야 해줘야 하는데 다음과 같이 한다.
[code bash]
]# yum upgrade
[/code]

이렇게하면 배포판을 업그레이드 해준다.

yum 은 네트워크를 연결해서 자동으로 패키지를 로컬호스트에 다운로드한다. 그리고 패키지 리스트를 캐쉬해서 들고 있는데 어떤 이유에서 yum 이 꼬일때가 있다. 이럴때는 이러한 모든 정보를 삭제하고 다시 해주면 해결되는데, 다음과 같은 명령어로 초기화를 해줄 수 있다.
[code bash]
]# yum clean all
[/code]

YUM이 나온후에 RPM명령어를 잘 사용하지 않게 되었다. 너무나 편리하기 때문이다.

다음에는 프로그램 설치의 마지막으로 소스 컴파일 설치에 대해서 알아보도록 하겠다.

0 개의 댓글:

댓글 쓰기