Friday, April 13, 2018

CentOS 6.6 리눅스 관리] 7. YUM (Yellowdog Updater Modified) 패키지 관리


안녕하세요. 썬구루입니다. 이번 이 게시물에서는 YUM (Yellow Dog Update)에  알아볼 것입니다. 레드햇(Red Hat) 계열의 리눅스는 소프트웨어 패키지를 배포, 관리, 삭제하기 위해 RPM을 사용한다는 것은 이전 게시물에서 언급을 하였습니다.

이것은 패키지 관리의 편의성을 제공해주지만 리눅스에 익숙하지 않는 관리자들을 난감하게 만들기도 합니다. 그것은 패키지들에 대한 의존성 관계가 존재하기 때문입니다. 이러한 문제점을 해결하고 패키지 관리를 간소화하고 RPM 설치를 개선하기 위해 듀크 대학(Duke University)에서 YUM이라는 것을 개발한 것입니다.

YUM은 로컬 또는 인터넷에 존재하는 패키지 저장소(Repository)에서 필요한 패키지를 검색, 다운로드하여 설치까지 처리해줍니다. 패키지 의존성에 대한 설치 오류를 줄일 수 있는 것이죠. 그럼 패키지를 간편하게 관리하기 위해 사용되는 yum이라는 명령에 대해 알아보도록 하겠습니다.

■ yum 명령

이 명령은 설치를 원하는 패키지에 대해 로컬 또는 인터넷에 존재하는 패키지 저장소에 관련된 패키지를 검색, 다운로드, 설치 또는 삭제하기 위해 사용되는 명령이다. 또한 의존성 관계를 가지는 패키지도 같이 설치한다.

1). 명령 형식

yum [-y] [모드] 패키지

2). 모드 (Mode)

모 드
내 용
install
 패키지를 설치하기 위해 사용된다.
check-update
 설치된 패키지 중 업데이트 가능한 패키지 목록을 출력
update
 패키지를 업데이트하기 위해 사용된다.
remove
 패키지를 제거하기 위해 사용된다.
info
 패키지 정보를 출력하기 위해 사용된다.

3). 예제

▶ 설치된 패키지 정보 확인

아래는 yum 명령을 통해 설치되어 있는 vsftpd 패키지 정보를 확인한다.

[root@sunguru ~]# yum info vsftpd
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: centos.mirror.cdnetworks.com
 * extras: centos.mirror.cdnetworks.com
 * updates: centos.mirror.cdnetworks.com
Installed Packages
Name        : vsftpd
Arch        : x86_64
Version     : 2.2.2
Release     : 14.el6
Size        : 332 k
Repo        : installed
Summary     : Very Secure Ftp Daemon
URL         : http://vsftpd.beasts.org/
License     : GPLv2 with exceptions
Description : vsftpd is a Very Secure FTP daemon. It was written completely from             : scratch.
Available Packages
Name        : vsftpd
Arch        : x86_64
Version     : 2.2.2
Release     : 21.el6
Size        : 155 k
Repo        : base
Summary     : Very Secure Ftp Daemon
URL         : http://vsftpd.beasts.org/
License     : GPLv2 with exceptions
Description : vsftpd is a Very Secure FTP daemon. It was written completely from            : scratch.
[root@sunguru ~]# 

▶ 패키지 업데이트 가능 여부 확인

[root@sunguru ~]# yum check-update vsftpd
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: centos.mirror.cdnetworks.com
 * extras: centos.mirror.cdnetworks.com
 * updates: centos.mirror.cdnetworks.com
vsftpd.x86_64                              2.2.2-21.el6                               base
[root@sunguru ~]# 

▶ 패키지 업데이트

아래는 yum 명령을 통해 vsftpd 패키지를 2.2.2-14 버전에서 2.2.2-21로 업데이트하는 것을 보여준다.

[root@sunguru ~]# rpm -qa | grep vsftpd
vsftpd-2.2.2-14.el6.x86_64
[root@sunguru ~]#
[root@sunguru ~]# yum update vsftpd
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Update Process
Loading mirror speeds from cached hostfile
 * base: centos.mirror.cdnetworks.com
 * extras: centos.mirror.cdnetworks.com
 * updates: centos.mirror.cdnetworks.com
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.x86_64 0:2.2.2-14.el6 will be updated
---> Package vsftpd.x86_64 0:2.2.2-21.el6 will be an update
--> Finished Dependency Resolution
Dependencies Resolved
=======================================================================================================
 Package                Arch                   Version                      Repository            Size
=======================================================================================================
Updating:
 vsftpd                 x86_64                 2.2.2-21.el6                 base                 155 k
Transaction Summary
=======================================================================================================
Upgrade       1 Package(s)
Total download size: 155 k
Is this ok [y/N]: y
Downloading Packages:
vsftpd-2.2.2-21.el6.x86_64.rpm                                                  | 155 kB     00:00
경고: rpmts_HdrFromFdno: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Importing GPG key 0xC105B9DE:
 Userid : CentOS-6 Key (CentOS 6 Official Signing Key) <centos-6-key@centos.org>
 Package: centos-release-6-6.el6.centos.12.2.x86_64 (@anaconda-CentOS-201410241409.x86_64/6.6)
 From   : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
  Updating   : vsftpd-2.2.2-21.el6.x86_64                                                          1/2
  Cleanup    : vsftpd-2.2.2-14.el6.x86_64                                                          2/2
  Verifying  : vsftpd-2.2.2-21.el6.x86_64                                                          1/2
  Verifying  : vsftpd-2.2.2-14.el6.x86_64                                                          2/2
Updated:
  vsftpd.x86_64 0:2.2.2-21.el6                                                                 
Complete!
[root@sunguru ~]#
[root@sunguru ~]# rpm -qa | grep vsftpd
vsftpd-2.2.2-21.el6.x86_64
[root@sunguru ~]# 

▶ 패키지 설치

아래는 아파치 웹서버 프로그램인 httpd를 설치하는 것과 httpd에 의존성 관계를 가지는 4개의 패키지도 같이 설치되는 것을 보여준다.

[root@sunguru ~]# rpm -qa | grep httpd
[root@sunguru ~]#
[root@sunguru ~]# yum install httpd
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Install Process
Loading mirror speeds from cached hostfile
 * base: centos.mirror.cdnetworks.com
 * extras: centos.mirror.cdnetworks.com
 * updates: centos.mirror.cdnetworks.com
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.2.15-53.el6.centos will be installed
--> Processing Dependency: httpd-tools = 2.2.15-53.el6.centos for package: httpd-2.2.15-53.el6.centos.x86_64
--> Processing Dependency: apr-util-ldap for package: httpd-2.2.15-53.el6.centos.x86_64
--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.2.15-53.el6.centos.x86_64
--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.2.15-53.el6.centos.x86_64
--> Running transaction check
---> Package apr.x86_64 0:1.3.9-5.el6_2 will be installed
---> Package apr-util.x86_64 0:1.3.9-3.el6_0.1 will be installed
---> Package apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 will be installed
---> Package httpd-tools.x86_64 0:2.2.15-53.el6.centos will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=======================================================================================================
 Package                   Arch               Version                           Repository        Size
=======================================================================================================
Installing:
 httpd                     x86_64             2.2.15-53.el6.centos              base             833 k
Installing for dependencies:
 apr                       x86_64             1.3.9-5.el6_2                     base             123 k
 apr-util                  x86_64             1.3.9-3.el6_0.1                   base              87 k
 apr-util-ldap             x86_64             1.3.9-3.el6_0.1                   base              15 k
 httpd-tools               x86_64             2.2.15-53.el6.centos              base              78 k
Transaction Summary
=======================================================================================================
Install       5 Package(s)
Total download size: 1.1 M
Installed size: 3.6 M
Is this ok [y/N]: y
Downloading Packages:
(1/5): apr-1.3.9-5.el6_2.x86_64.rpm                                             | 123 kB     00:00     
(2/5): apr-util-1.3.9-3.el6_0.1.x86_64.rpm                                      |  87 kB     00:00     
(3/5): apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm                                 |  15 kB     00:00     
(4/5): httpd-2.2.15-53.el6.centos.x86_64.rpm                                    | 833 kB     00:00     
(5/5): httpd-tools-2.2.15-53.el6.centos.x86_64.rpm                              |  78 kB     00:00     
-------------------------------------------------------------------------------------------------------
Total                                                                  6.9 MB/s | 1.1 MB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : apr-1.3.9-5.el6_2.x86_64                                                            1/5
  Installing : apr-util-1.3.9-3.el6_0.1.x86_64                                                     2/5
  Installing : httpd-tools-2.2.15-53.el6.centos.x86_64                                             3/5
  Installing : apr-util-ldap-1.3.9-3.el6_0.1.x86_64                                                4/5
  Installing : httpd-2.2.15-53.el6.centos.x86_64                                                   5/5
  Verifying  : httpd-tools-2.2.15-53.el6.centos.x86_64                                             1/5
  Verifying  : httpd-2.2.15-53.el6.centos.x86_64                                                   2/5
  Verifying  : apr-util-ldap-1.3.9-3.el6_0.1.x86_64                                                3/5
  Verifying  : apr-util-1.3.9-3.el6_0.1.x86_64                                                     4/5
  Verifying  : apr-1.3.9-5.el6_2.x86_64                                                            5/5
Installed:
  httpd.x86_64 0:2.2.15-53.el6.centos                                                           
Dependency Installed:
  apr.x86_64 0:1.3.9-5.el6_2                       apr-util.x86_64 0:1.3.9-3.el6_0.1           
  apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1           httpd-tools.x86_64 0:2.2.15-53.el6.centos   
Complete!
[root@sunguru ~]#
[root@sunguru ~]# rpm -qa | grep httpd
httpd-tools-2.2.15-53.el6.centos.x86_64
httpd-2.2.15-53.el6.centos.x86_64
[root@sunguru ~]# 

▶ 패키지 삭제

아래는 설치되어 있는 vsftpd 패키지를 삭제하는 것을 보여준다.

[root@sunguru ~]# rpm -qa | grep vsftpd
vsftpd-2.2.2-21.el6.x86_64
[root@sunguru ~]#
[root@sunguru ~]# yum remove vsftpd-2.2.2-21.el6.x86_64
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.x86_64 0:2.2.2-21.el6 will be erased
--> Finished Dependency Resolution
Dependencies Resolved
=======================================================================================================
 Package               Arch                  Version                        Repository            Size
=======================================================================================================
Removing:
 vsftpd                x86_64                2.2.2-21.el6                   @base                340 k
Transaction Summary
=======================================================================================================
Remove        1 Package(s)
Installed size: 340 k
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Erasing    : vsftpd-2.2.2-21.el6.x86_64                                                          1/1
  Verifying  : vsftpd-2.2.2-21.el6.x86_64                                                          1/1
Removed:
  vsftpd.x86_64 0:2.2.2-21.el6                                                                 
Complete!
[root@sunguru ~]# rpm -qa | grep vsftpd
[root@sunguru ~]#




■ 로컬(Local) 디렉터리를 yum 저장소(Repository)로 설정

인터넷에 있는 yum 저장소(Repository)를 활용할 수 있지만 로컬에 위치한 디렉터리를 yum 저장소(repository)로 설정하여 사용할 수 있다. 아래는 그것에 대한 설정 방법을 보여준다.

1). 관련 패키지 설치

[root@sunguru /]# yum install createrepo
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Install Process
Loading mirror speeds from cached hostfile
 * base: centos.mirror.cdnetworks.com
 * extras: centos.mirror.cdnetworks.com
 * updates: centos.mirror.cdnetworks.com
Resolving Dependencies
--> Running transaction check
---> Package createrepo.noarch 0:0.9.9-24.el6 will be installed
--> Processing Dependency: python-deltarpm for package: createrepo-0.9.9-24.el6.noarch
--> Running transaction check
---> Package python-deltarpm.x86_64 0:3.5-0.5.20090913git.el6 will be installed
--> Processing Dependency: deltarpm = 3.5-0.5.20090913git.el6 for package: python-deltarpm-3.5-0.5.20090913git.el6.x86_64
--> Running transaction check
---> Package deltarpm.x86_64 0:3.5-0.5.20090913git.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=======================================================================================================
 Package                    Arch              Version                            Repository       Size
=======================================================================================================
Installing:
 createrepo                 noarch            0.9.9-24.el6                       base             96 k
Installing for dependencies:
 deltarpm                   x86_64            3.5-0.5.20090913git.el6            base             71 k
 python-deltarpm            x86_64            3.5-0.5.20090913git.el6            base             27 k
Transaction Summary
=======================================================================================================
Install       3 Package(s)
Total download size: 194 k
Installed size: 520 k
Is this ok [y/N]: y
Downloading Packages:
(1/3): createrepo-0.9.9-24.el6.noarch.rpm                                       |  96 kB     00:00     
(2/3): deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm                              |  71 kB     00:00     
(3/3): python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm                       |  27 kB     00:00     
-------------------------------------------------------------------------------------------------------
Total                                                                  1.3 MB/s | 194 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : deltarpm-3.5-0.5.20090913git.el6.x86_64                                             1/3
  Installing : python-deltarpm-3.5-0.5.20090913git.el6.x86_64                                      2/3
  Installing : createrepo-0.9.9-24.el6.noarch                                                      3/3
  Verifying  : python-deltarpm-3.5-0.5.20090913git.el6.x86_64                                      1/3
  Verifying  : deltarpm-3.5-0.5.20090913git.el6.x86_64                                             2/3
  Verifying  : createrepo-0.9.9-24.el6.noarch                                                      3/3
Installed:
  createrepo.noarch 0:0.9.9-24.el6                                                             
Dependency Installed:
  deltarpm.x86_64 0:3.5-0.5.20090913git.el6      python-deltarpm.x86_64 0:3.5-0.5.20090913git.el6
Complete!
[root@sunguru /]#

2). yum 저장소(Repository) 디렉터리 생성 및 패키지 복사

[root@sunguru /]# mkdir /RPMs
[root@sunguru /]#
[root@sunguru /]# cp /media/CentOS_6.6_Final/Packages/* /RPMs
[root@sunguru /]# 

3). yum 저장소(Repository) 설정

[root@sunguru /]# createrepo /RPMs
Spawning worker 0 with 4184 pkgs
Workers Finished
Gathering worker results
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

[root@sunguru /]#
[root@sunguru /]# vi /etc/yum.repos.d/local.repo

[Cent_OS_Local_Repository]
baseurl=file:///RPMs
name=Local Repository
enabled=1

[root@sunguru /]# yum repolist
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: centos.mirror.cdnetworks.com
 * extras: centos.mirror.cdnetworks.com
 * updates: centos.mirror.cdnetworks.com
repo id                                            repo name                                     status
Cent_OS_Local_Repository                           Local Repository                              4,184
base                                               CentOS-6 - Base                               6,696
extras                                             CentOS-6 - Extras                                61
updates                                            CentOS-6 - Updates                              137
repolist: 11,078
[root@sunguru /]# 

4). 로컬 저장소(Repository)를 통한 vsftpd 패키지 설치

로컬로 저장소에 있는 패키지들을 가지고 설치하는지 확인하기 위해 아래 그림과 같이 네트워크의 연결을 먼저 끊는다.


그리고 아래와 같이 /etc/yum.repos.d 디렉터리로 이동한 후 base repo id에 관련된 CentOS-Base.repo 파일을 잠깐 BAK 디렉터리 생성 후 이동시킨다. 그다음 yum 명령을 사용하여 vsftpd에 관련된 패키지를 설치한다. 이전에는 인터넷을 통해 관련된 패키지를 설치하였다면 지금은 /RPMs 디렉터리에 존재하는 패키지를 yum 명령을 통해 설치하는 것이다.

만약 인터넷을 통해 vsftpd 관련 패키지가 설치되었다면 가 vsftpd-2.2.2-21.el6.x86_64가 설치되었을 것이다.

[root@sunguru yum.repos.d]# pwd
/etc/yum.repos.d
[root@sunguru yum.repos.d]# ls
CentOS-Base.repo       CentOS-Media.repo  CentOS-fasttrack.repo
CentOS-Debuginfo.repo  CentOS-Vault.repo  local.repo
[root@sunguru yum.repos.d]#
[root@sunguru yum.repos.d]# mkdir BAK
[root@sunguru yum.repos.d]#
[root@sunguru yum.repos.d]# mv CentOS-Base.repo BAK
[root@sunguru yum.repos.d]#
[root@sunguru yum.repos.d]# ls
BAK  CentOS-Debuginfo.repo  CentOS-Media.repo  CentOS-Vault.repo  CentOS-fasttrack.repo  local.repo
[root@sunguru yum.repos.d]#
[root@sunguru yum.repos.d]# rpm -qa | grep vsftpd
[root@sunguru yum.repos.d]#
[root@sunguru yum.repos.d]# yum install vsftpd
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Install Process
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.x86_64 0:2.2.2-12.el6_5.1 will be installed
--> Finished Dependency Resolution
Dependencies Resolved

=======================================================================================================
 Package          Arch             Version                    Repository                          Size
=======================================================================================================
Installing:
 vsftpd           x86_64           2.2.2-12.el6_5.1           Cent_OS_Local_Repository           151 k
Transaction Summary
=======================================================================================================
Install       1 Package(s)

Total download size: 151 k
Installed size: 331 k
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : vsftpd-2.2.2-12.el6_5.1.x86_64                                                      1/1
  Verifying  : vsftpd-2.2.2-12.el6_5.1.x86_64                                                      1/1

Installed:
  vsftpd.x86_64 0:2.2.2-12.el6_5.1   
                                                   
Complete!
[root@sunguru yum.repos.d]#
[root@sunguru yum.repos.d]# rpm -qa | grep vsftpd
vsftpd-2.2.2-12.el6_5.1.x86_64
[root@sunguru yum.repos.d]# 

여기까지 yum 명령을 통해 패키지를 관리하는 방법에 대해 알아보았습니다. 다음 게시물에서는 시스템 부팅 및 셧다운 명령에 대해 알아보도록 하겠습니다.






No comments:

Post a Comment