Computer >> 컴퓨터 >  >> 시스템 >> Linux

CentOS/RHEL에서 YUM 패키지 관리자 완벽 가이드: 설치부터 프록시 설정까지

이 글에서는 RPM 패키지의 설치, 삭제, 업데이트를 손쉽게 관리하고, 의존성을 자동으로 해결하며, 추가 저장소까지 관리할 수 있는 YUM 패키지 관리자에 대해 알아봅니다. 리눅스 관리를 이제 막 시작한 초급 관리자에게 유용한 YUM 치트 시트로 활용할 수 있도록 핵심 명령어와 실무 팁을 정리했습니다.

Yum(Yellowdog Updater Modified)은 RPM(RedHat Package Manager) 기반 배포판에서 사용되는 콘솔형 패키지 관리자입니다. RedHat, CentOS, Fedora, Oracle Linux, Scientific Linux 등 널리 쓰이는 운영체제가 모두 여기에 해당합니다.

YUM으로 패키지 설치, 업데이트, 삭제하기

무엇부터 시작해야 할까요? 다른 경우와 마찬가지로 도움말부터 확인해 보겠습니다.

yum help — yum 전체 도움말 표시

그중 가장 자주 사용하는 yum 명령어들을 소개합니다.

yum clean all — 모든 패키지 캐시를 정리합니다(주로 yum에 문제가 발생했을 때 사용).

yum makecache — 패키지 캐시를 다시 생성합니다.

yum repolist — 연결된 모든 저장소 목록을 출력합니다. 출력 예시는 다음과 같습니다:

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base:
* extras:
* updates:
repo id repo name status
base/7/x86_64 CentOS-7 - Base 10,019
extras/7/x86_64 CentOS-7 - Extras 435
updates/7/x86_64 CentOS-7 - Updates 2,500
repolist: 12,954

제 시스템에는 CentOS 7의 기본 저장소인 Base, Extras, Updates만 등록되어 있습니다.

yum list available — 설치 가능한 모든 패키지 목록을 표시합니다.

yum list installed — 시스템에 설치된 모든 패키지 목록을 보여줍니다.

yum list kernel — 리눅스 커널 관련 패키지 목록을 표시합니다.

특정 패키지가 CentOS 서버에 설치되어 있는지 확인할 수도 있습니다. 예를 들어 apache(httpd) 패키지 상태를 확인하려면 다음과 같이 입력합니다:

yum list installed httpd

Installed Packages
httpd.x86_64 2.4.6-89.el7.centos.1 @updates

특정 패키지에 대한 상세 정보도 확인할 수 있습니다. MariaDB 패키지 정보를 조회해 보겠습니다:

yum info mariadb

패키지 설치하기

패키지를 설치할 때는 yum install을 사용합니다. Apache 웹 서버를 설치하려면 다음 명령어를 실행하세요:

yum install httpd

yum 명령 실행 중 "Traceback (most recent call last): thread.error: can't start new thread" 오류가 발생한다면 서버의 RAM이 부족한 것일 가능성이 높습니다. 메모리를 추가하거나, /etc/yum.conf 파일에 plugins=0을 지정하여 yum 플러그인을 비활성화해 보세요.

패키지를 설치하기 전에 의존성을 미리 확인하고 싶다면 다음 명령어를 사용합니다:

yum deplist httpd

패키지 이름이 정확히 기억나지 않는다면 * 와일드카드를 활용할 수 있습니다. 예를 들어:

yum install epel-*

Resolving Dependencies
--> Running transaction check
---> Package epel-release.noarch 0:7-11 will be installed
--> Finished Dependency Resolution
Install 1 Package
Total download size: 15 k
Installed size: 24 k
Is this ok [y/d/N]:

반면 단순히 다음처럼 입력하면:

yum install epel

No package epel available.
Error: Nothing to do

설치 가능한 패키지를 찾지 못한다는 메시지만 출력됩니다.

YUM은 여러 패키지를 한 번에 설치할 수도 있습니다:

yum install httpd php wget rsyslog

패키지를 재설치하려면:

yum reinstall proftpd

패키지 삭제하기

설치된 패키지를 제거할 때는 remove 옵션을 사용합니다:

yum remove httpd

패키지를 삭제하기 전에는 반드시 의존성을 먼저 확인하는 것이 좋습니다. 어떤 패키지는 삭제 과정에서 다른 패키지들까지 함께 제거될 수 있기 때문입니다.

yum deplist proftpd

패키지 검색하기

이름이나 설명으로 패키지를 찾으려면:

yum search nginx

provides 옵션을 사용하면 특정 파일을 포함하고 있는 패키지를 검색할 수 있습니다. 예를 들어:

yum provides */squid.conf

패키지 업데이트 및 롤백

설치된 모든 패키지를 업데이트하려면 다음 명령어를 실행합니다:

yum update

패키지 이름을 지정해 개별적으로 업데이트할 수도 있습니다:

yum update php

시스템에 적용 가능한 업데이트가 있는지 확인하려면:

yum check-update

보안 업데이트 관련 정보를 확인하려면:

yum updateinfo list security

경우에 따라 패키지나 서비스를 업데이트한 후 문제가 발생할 수 있습니다. 예를 들어 PHP 버전을 업데이트한 뒤 웹사이트가 작동하지 않는다면, yum으로 이전 버전으로 되돌릴 수 있습니다:

yum downgrade php

패키지 그룹 설치

grouplist를 사용하면 패키지 그룹 단위 설치도 가능합니다. 저장소에는 다양한 프로그램 세트로 구성된 사전 정의 그룹들이 마련되어 있으며, 그룹 목록은 다음 명령어로 확인할 수 있습니다:

yum grouplist

"Basic Web Server" 그룹을 예로 살펴보겠습니다. 그룹과 포함된 패키지에 대한 자세한 내용을 확인하려면:

yum groupinfo "Basic Web Server"

확인 결과 웹 서버에 필요한 패키지와 서비스 세트가 설치될 것임을 알 수 있습니다.

또 하나 유용한 그룹은 "System Administration Tools"입니다:

yum groupinfo "System Administration Tools"

이 목록에는 모니터링 및 디버깅 도구들이 포함되어 있습니다.

그룹을 설치하려면 다음 명령어를 사용합니다:

yum groupinstall "System Administration Tools"

설치된 그룹은 별도 블록("Installed Groups")으로 표시됩니다.

YUM 히스토리(history) 명령어 활용

yum의 설치 이력(트랜잭션 목록)은 다음 명령어로 확인할 수 있습니다:

yum history list

출력은 5개 열로 구성되며, 첫 번째 열의 트랜잭션 ID를 이용해 해당 트랜잭션의 세부 정보(설치된 패키지, 의존성 등)를 조회할 수 있습니다.

예를 들어:

yum history info 10

더 나아가 트랜잭션을 취소(되돌리기)할 수도 있습니다:

yum history undo 10

필자의 경우 4개의 패키지가 제거 대상으로 표시되었습니다.

yum을 통한 패키지 설치/삭제 기록은 /var/log/yum.log 파일에서도 확인할 수 있습니다:

cat /var/log/yum.log

유용한 YUM 명령어 옵션

Yum에는 패키지 관리 시 자주 유용하게 쓰이는 옵션들이 있습니다. -y 옵션을 사용하면 오류를 제외한 모든 확인 질문 없이 자동으로 진행됩니다. 예를 들어:

yum update -y
yum install httpd -y

반대로 요청에 대해 아니오(no)로 응답하려면 다음 옵션을 사용합니다:

--assumeno

플러그인 없이 yum을 실행하거나 특정 플러그인만 비활성화하려면 다음 파라미터를 사용합니다:

--noplugins
--disableplugin=fastestmirror

비활성화된 플러그인을 활성화하려면:

--enableplugin=fastestmirror

비활성화된 저장소를 일시적으로 사용하려면:

yum update --enablerepo=atomic

특정 저장소를 비활성화하려면:

yum update --disablerepo=atomic

YUM 설정 파일 /etc/yum.conf

YUM의 설정 파일은 /etc/yum.conf입니다.

주요 설정 항목은 다음과 같습니다:

  • cachedir — 로컬 패키지 캐시 디렉터리(기본값: /var/cache/yum)
  • logfile — yum 로그 파일 경로
  • obsoletes — 폐기(obsolete)된 패키지 업데이트 여부(1: 예, 0: 아니오)
  • gpgcheck — 설치 전 패키지 GPG 서명 검증 여부(1: 예, 0: 아니오)
  • keepcache — 캐시 보관 여부(1: 예, 0: 아니오)
  • debuglevel — 디버그 레벨(1~10)
  • plugins — yum 플러그인 사용 여부(1: 예, 0: 아니오)
  • bugtracker_url — yum 오류가 보고되는 링크
  • installonly_limit — 하나의 패키지에 대해 설치 가능한 최대 버전 수

유용한 YUM 플러그인

yum에 플러그인이 필요한 이유는 무엇일까요? 다른 도구와 마찬가지로 작업을 더 편리하게 만들어 주기 때문입니다.

대표적인 플러그인과 설명은 다음과 같습니다:

yum-plugin-fastestmirror — 미러 속도를 측정하여 가장 빠른 미러를 통해 패키지를 설치하도록 지원합니다.

yum-plugin-security — 보안 업데이트 목록만 별도로 제공합니다.

yum-plugin-keys — keys, keys-info, keys-data, keys-remove 파라미터를 사용할 수 있게 해줍니다.

모든 플러그인이 저장되는 디렉터리는 /etc/yum/입니다.

yum-plugin-versionlock — 선택한 패키지가 업데이트되지 않도록 잠급니다.

사용 가능한 yum 플러그인 목록을 확인하려면 다음 명령어를 실행하세요:

yum search yum-plugin

======================================================================= N/S matched: yum-plugin =======================================================================
PackageKit-yum-plugin.x86_64 : Tell PackageKit to check for updates when yum exits
fusioninventory-agent-yum-plugin.noarch : Ask FusionInventory agent to send an inventory when yum exits
kabi-yum-plugins.noarch : The CentOS Linux kernel ABI yum plugin
yum-plugin-aliases.noarch : Yum plugin to enable aliases filters
yum-plugin-auto-update-debug-info.noarch : Yum plugin to enable automatic updates to installed debuginfo packages
yum-plugin-changelog.noarch : Yum plugin for viewing package changelogs before/after updating
yum-plugin-copr.noarch : Yum plugin to add copr command
yum-plugin-fastestmirror.noarch : Yum plugin which chooses fastest repository from a mirrorlist
yum-plugin-filter-data.noarch : Yum plugin to list filter based on package data
yum-plugin-fs-snapshot.noarch : Yum plugin to automatically snapshot your filesystems during updates
yum-plugin-keys.noarch : Yum plugin to deal with signing keys
yum-plugin-list-data.noarch : Yum plugin to list aggregate package data
yum-plugin-local.noarch : Yum plugin to automatically manage a local repo. of downloaded packages
yum-plugin-merge-conf.noarch : Yum plugin to merge configuration changes when installing packages
yum-plugin-ovl.noarch : Yum plugin to work around overlayfs issues
yum-plugin-post-transaction-actions.noarch : Yum plugin to run arbitrary commands when certain pkgs are acted on
yum-plugin-pre-transaction-actions.noarch : Yum plugin to run arbitrary commands when certain pkgs are acted on
yum-plugin-priorities.noarch : plugin to give priorities to packages from different repos
yum-plugin-protectbase.noarch : Yum plugin to protect packages from certain repositories.
yum-plugin-ps.noarch : Yum plugin to look at processes, with respect to packages
yum-plugin-remove-with-leaves.noarch : Yum plugin to remove dependencies which are no longer used because of a removal
yum-plugin-rpm-warm-cache.noarch : Yum plugin to access the rpmdb files early to warm up access to the db
yum-plugin-show-leaves.noarch : Yum plugin which shows newly installed leaf packages
yum-plugin-tmprepo.noarch : Yum plugin to add temporary repositories
yum-plugin-tsflags.noarch : Yum plugin to add tsflags by a commandline option
yum-plugin-upgrade-helper.noarch : Yum plugin to help upgrades to the next distribution version
yum-plugin-verify.noarch : Yum plugin to add verify command, and options
yum-plugin-versionlock.noarch : Yum plugin to lock specified packages from being updated

플러그인도 다른 패키지와 마찬가지로 yum install로 설치할 수 있습니다:

yum install yum-plugin-changelog
yum -y install yum-versionlock

플러그인으로 특정 패키지의 업데이트를 차단하려면 다음 명령어를 실행합니다:

yum versionlock nginx

차단된 패키지 목록을 확인하려면:

yum versionlock list

차단 목록에서 패키지를 제거하려면:

yum versionlock delete nginx

플러그인을 사용하고 싶지 않다면 yum 명령어에 다음 옵션을 추가하여 비활성화할 수 있습니다:

--disableplugin=fastestmirror

또는 yum의 모든 플러그인을 비활성화할 수도 있습니다:

--noplugins

YUM 프록시 설정 방법

Yum은 HTTP/1.1 프로토콜로 패키지 저장소와 통신합니다. 리눅스 서버가 HTTP 프록시 서버를 통해서만 인터넷에 접속할 수 있는 환경이라면, /etc/yum.conf 파일의 [main] 섹션에 프록시 서버 주소를 지정하면 됩니다:

proxy=https://proxy_server_name:3128

프록시 서버에 인증이 필요하다면 아래 줄도 함께 추가합니다:

proxy_username=proxy_user
proxy_password=proxy_user_passw0rd

yum이 프록시 서버를 통해 정상 작동하는지 확인하려면 다음 명령어를 사용합니다:

yum clean all && yum search nginx

실제로 독일의 공개 프록시 서버 주소를 지정해 테스트해 본 결과, fastestmirror 플러그인이 작동하여 가장 빠른 속도의 미러들을 자동으로 찾아냈습니다.

특정 저장소에만 프록시를 적용하고 싶다면 /etc/yum.conf 파일을 수정할 필요가 없습니다. 대신 저장소 설정 파일인 /etc/yum.repos.d/your_config.repo에 프록시 서버 설정을 지정하면 됩니다.

지금까지 CentOS/RHEL 리눅스에서 RPM 패키지 관리자인 yum의 기본적인 기능들을 살펴보았습니다. 다음 글에서는 YUM/DNF 저장소를 더욱 자세히 관리하는 방법을 소개하겠습니다.