이 글에서는 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 저장소를 더욱 자세히 관리하는 방법을 소개하겠습니다.