Linux 에서 YUM 을 이용한 패키지 조회 및 업데이트

Red Hat Enterprise LinuxBeginner
지금 연습하기

소개

이 실습에서는 YUM 패키지 관리자를 사용하여 RHEL 기반 Linux 시스템에서 소프트웨어 패키지를 관리하는 데 필요한 핵심 기술을 배웁니다. 먼저 yum listyum deplist 명령어를 사용하여 현재 설치된 패키지의 상세 정보와 의존성을 확인하는 것으로 시작합니다. 또한 yum repolist를 통해 시스템에 구성된 소프트웨어 저장소를 탐색하여 소프트웨어가 어디에서 제공되고 어떤 것들을 사용할 수 있는지 이해하게 됩니다.

이러한 기초 기술을 바탕으로 시스템 유지 관리 및 업데이트에 초점을 맞춥니다. yum check-update를 사용하여 최신 버전이 출시된 패키지를 식별하는 방법을 배웁니다. 마지막으로 이러한 업데이트를 실제로 적용해 보면서, 특정 단일 패키지만 업데이트하는 것과 전체 시스템 업데이트를 수행하는 것의 차이점을 배우고 환경을 안전하고 최신 상태로 유지하는 연습을 합니다.

이 실습은 학습과 연습을 돕기 위해 단계별 지침을 제공하는 가이드 실습입니다. 각 단계를 완료하고 실무 경험을 쌓으려면 지침을 주의 깊게 따르십시오. 과거 데이터에 따르면 이 실습은 초급 수준이며 98%의 완료율을 기록하고 있습니다. 학습자들로부터 99%의 긍정적인 평가를 받았습니다.

'yum list' 및 'yum deplist'로 설치된 패키지 조사하기

이 단계에서는 CentOS 및 기타 RHEL 기반 Linux 배포판의 기본 패키지 관리자인 yum을 사용하여 설치된 패키지를 조사하는 방법을 배웁니다. 현재 사용 중일 가능성이 높은 쉘 환경을 제공하는 bash 패키지를 살펴보는 것으로 시작합니다. 이러한 명령어는 시스템에 무엇이 설치되어 있는지, 그리고 패키지가 작동하기 위해 어떤 다른 구성 요소에 의존하는지 이해하는 데 도움이 됩니다.

먼저 yum list 명령어를 사용하여 특정 패키지의 상태를 확인해 보겠습니다. 이 명령어는 패키지의 설치 여부와 시스템에 설치된 버전을 알려줍니다.

bash 패키지의 상세 정보를 확인하려면 터미널에서 다음 명령어를 실행하세요.

sudo yum list bash

bash가 설치되었음을 확인하는 다음과 유사한 출력이 표시됩니다. 저장소 열에 있는 @ 기호 (예: @anaconda 또는 @System) 는 설치된 패키지임을 나타냅니다.

Installed Packages
bash.x86_64    <version>    @anaconda

다음으로 의존성 개념을 살펴보겠습니다. 대부분의 소프트웨어 패키지는 독립적으로 존재하지 않으며, 올바르게 작동하기 위해 라이브러리나 도구와 같은 다른 패키지에 의존합니다. 이러한 필수 패키지를 의존성이라고 합니다. yum deplist 명령어를 사용하면 특정 패키지의 전체 의존성 목록을 볼 수 있습니다.

bash 패키지가 의존하는 모든 패키지를 확인하려면 다음 명령어를 실행하세요.

sudo yum deplist bash

출력 결과에는 각 의존성 항목과 해당 항목을 제공하는 패키지가 나열됩니다. 이는 yum이 소프트웨어 설치를 어떻게 해결하고 관리하는지 이해하는 데 매우 중요합니다.

package: bash.x86_64 <version>
  dependency: /bin/sh
   provider: bash.x86_64 <version>
  dependency: chkconfig
   provider: chkconfig.x86_64 <version>
  dependency: coreutils
   provider: coreutils.x86_64 <version>
  dependency: libc.so.6(GLIBC_2.15)(64bit)
   provider: glibc.x86_64 <version>
... (output truncated) ...

yum listyum deplist를 사용하면 시스템에 설치된 패키지와 패키지 간의 관계를 명확하게 파악할 수 있습니다.

'yum repolist'로 저장소 및 사용 가능한 패키지 탐색하기

이 단계에서는 yum이 패키지를 찾고 설치하는 데 사용하는 소프트웨어 소스인 저장소 (Repository) 를 탐색하는 방법을 배웁니다. 또한 시스템에 설치할 수 있는 새로운 패키지를 검색하는 방법도 익힙니다.

패키지 저장소는 소프트웨어 패키지가 보관되는 중앙 집중식 저장 위치입니다. yum에 패키지 설치를 요청하면, 구성된 저장소에 접속하여 필요한 파일을 다운로드하고 시스템에 설치합니다.

현재 시스템에서 활성화된 저장소 목록을 보려면 yum repolist 명령어를 사용합니다. 이는 어떤 소프트웨어 소스가 활성 상태인지 확인하는 데 유용합니다.

터미널에서 다음 명령어를 실행하세요.

sudo yum repolist

출력 결과에는 저장소 ID, 이름 및 포함된 패키지 수가 표시됩니다. 다음과 같은 형식으로 나타납니다.

repo id                                                                                                                          repo name
rhui-rhel-9-for-x86_64-appstream-rhui-rpms                                                                                       Red Hat Enterprise Linux 9 for x86_64 - AppStream from RHUI (RPMs)
rhui-rhel-9-for-x86_64-baseos-rhui-rpms                                                                                          Red Hat Enterprise Linux 9 for x86_64 - BaseOS from RHUI (RPMs)

이제 yum이 패키지를 어디에서 찾는지 알았으니, 설치 가능한 패키지가 무엇인지 알아보겠습니다. yum list available 명령어는 활성화된 저장소에 있지만 아직 시스템에 설치되지 않은 모든 패키지를 보여줍니다.

yum list available을 단독으로 실행하면 목록이 너무 길어집니다. 따라서 특정 대상을 검색하는 것이 더 실용적입니다. Linux 커널과 관련된 사용 가능한 패키지를 검색해 보겠습니다. 와일드카드 (*) 를 사용하여 여러 패키지 이름을 매칭할 수 있습니다.

kernel로 시작하는 사용 가능한 모든 패키지를 나열하려면 다음 명령어를 실행하세요.

sudo yum list available 'kernel*'

kernel* 주위의 작은따옴표는 쉘이 와일드카드를 직접 확장하지 못하도록 하는 데 중요합니다. 출력 결과에는 사용 가능한 커널 관련 패키지 목록, 버전 및 제공 저장소가 표시됩니다.

Available Packages
kernel-devel.x86_64      <version>      updates
kernel-doc.noarch        <version>      updates
kernel-headers.x86_64    <version>      updates
... (output truncated) ...

이러한 명령어는 시스템 소프트웨어를 관리하고, 소프트웨어 소스를 확인하며, 설치할 새로운 도구를 찾는 데 필수적입니다.

'yum check-update'로 사용 가능한 업데이트 확인하기

이 단계에서는 시스템에 설치된 패키지에 대해 사용 가능한 소프트웨어 업데이트가 있는지 확인하는 방법을 배웁니다. 업데이트에는 보안 취약점 패치, 버그 수정 및 새로운 기능이 포함되는 경우가 많으므로 시스템을 최신 상태로 유지하는 것은 보안과 안정성을 위해 매우 중요한 작업입니다.

yum check-update 명령어는 설치된 패키지 중 저장소에 더 최신 버전이 있는 패키지가 무엇인지 안전하게 확인할 수 있는 방법을 제공합니다. 이 명령어는 사용 가능한 업데이트를 나열만 할 뿐, 다운로드하거나 설치하지 않는다는 점에 유의하십시오. 이를 통해 변경 사항을 적용하기 전에 미리 검토할 수 있습니다.

시스템의 모든 사용 가능한 업데이트를 확인하려면 터미널에서 다음 명령어를 실행하세요.

sudo yum check-update

yum은 활성화된 모든 저장소에 연결하여 패키지 정보의 로컬 캐시를 갱신하고, 설치된 패키지 버전과 사용 가능한 최신 버전을 비교합니다.

업데이트가 있는 경우, 다음 예시와 같이 목록이 표시됩니다. 각 줄에는 패키지 이름, 새 버전 및 업데이트가 제공될 저장소가 표시됩니다.

bind-libs.x86_64                 <version>      updates
bind-license.noarch              <version>      updates
curl.x86_64                      <version>      updates
glibc.x86_64                     <version>      updates
glibc-common.x86_64              <version>      updates
... (output truncated) ...

시스템이 이미 최신 상태라면 패키지 목록 없이 명령어가 종료됩니다. 이 명령어는 정기적인 시스템 유지 관리의 필수적인 부분으로, 다음 단계에서 실제 업데이트 프로세스를 진행하기 전에 시스템 상태를 명확하게 파악할 수 있게 해줍니다.

'yum update '로 단일 패키지 업데이트 적용하기

이 단계에서는 특정 패키지 업데이트를 적용해 봅니다. 이전 단계에서 yum check-update를 사용하여 업데이트가 가능한 모든 패키지 목록을 확인했습니다. 전체 시스템을 한 번에 업데이트하는 것이 일반적이지만, 특정 패키지만 업데이트해야 하는 상황도 있습니다. 이를 통해 시스템 변경 사항을 더 세밀하게 제어할 수 있습니다.

앞서 확인한 목록 중에서 업데이트할 패키지를 하나 선택해 보겠습니다. 여기서는 데이터 전송에 흔히 사용되는 도구인 curl을 예로 들겠습니다. 만약 curl이 업데이트 목록에 없다면 목록에 있는 다른 패키지를 선택해도 됩니다.

패키지를 업데이트하기 전에, 업데이트가 가능한 상태를 만들기 위해 curl 패키지를 이전 버전으로 다운그레이드해야 합니다.

sudo yum downgrade -y curl

curl 패키지만 업데이트하려면 다음 명령어를 실행하세요.

sudo yum update curl

yumcurl의 의존성을 해결하고, 업데이트가 필요한 항목을 결정한 후 트랜잭션 요약을 보여줍니다. 이 요약에는 업데이트될 패키지와 총 다운로드 크기가 표시됩니다.

Resolving Dependencies
--> Running transaction check
---> Package curl.x86_64 0:<old_version> will be updated
---> Package curl.x86_64 0:<new_version> will be an update
--> Processing Dependency: libcurl = <new_version> for package: curl-<new_version>.x86_64
--> Running transaction check
---> Package libcurl.x86_64 0:<old_version> will be updated
---> Package libcurl.x86_64 0:<new_version> will be an update
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package      Arch         Version              Repository                 Size
================================================================================
Updating:
 curl         x86_64       <new_version>        updates                    <size>
Updating for dependencies:
 libcurl      x86_64       <new_version>        updates                    <size>

Transaction Summary
================================================================================
Upgrade  1 Package (+1 Dependent package)

Total download size: <total_size>
Is this ok [y/d/N]:

변경 사항을 검토하십시오. 진행할 준비가 되었다면 y를 입력하고 Enter 를 누릅니다. 그러면 yum이 업데이트를 다운로드하고 설치합니다.

프로세스가 완료되면 업데이트가 성공했음을 알리는 "Complete!" 메시지가 표시됩니다.

...
Running transaction
  Updating   : libcurl-<new_version>.x86_64                                 1/4
  Updating   : curl-<new_version>.x86_64                                    2/4
  Cleanup    : curl-<old_version>.x86_64                                    3/4
  Cleanup    : libcurl-<old_version>.x86_64                                 4/4
  Verifying  : curl-<new_version>.x86_64                                    1/4
  ...

Updated:
  curl.x86_64 <new_version>

Dependency Updated:
  libcurl.x86_64 <new_version>

Complete!

이제 단일 패키지와 그 의존성을 성공적으로 업데이트했습니다. 이러한 타겟팅 방식은 전체 시스템 업그레이드를 수행하지 않고 특정 보안 패치나 기능 업데이트를 적용할 때 유용합니다.

'yum update'로 전체 시스템 업데이트 수행하기

이 단계에서는 가장 일반적이고 중요한 패키지 관리 작업인 전체 시스템 업데이트를 수행합니다. 개별 패키지를 업데이트하는 것도 유용하지만, 시스템의 모든 소프트웨어를 정기적으로 업데이트하는 것은 보안과 안정성을 유지하고 최신 기능과 버그 수정을 반영하는 데 매우 중요합니다.

패키지 이름을 지정하지 않고 yum update 명령어를 실행하면, 설치된 모든 패키지를 활성화된 저장소의 버전과 비교하여 더 최신 버전이 있는 모든 패키지를 업데이트합니다.

주의: 이 프로세스는 많은 양의 데이터를 다운로드할 수 있으며, 업데이트 양과 네트워크 속도에 따라 완료하는 데 상당한 시간이 걸릴 수 있습니다.

전체 시스템 업데이트를 시작하려면 터미널에서 다음 명령어를 실행하세요.

sudo yum update

단일 패키지 업데이트와 마찬가지로, yum은 먼저 모든 의존성을 해결한 다음 트랜잭션 요약을 보여줍니다. 업데이트가 필요한 모든 패키지가 포함되므로 목록이 이전보다 훨씬 길어질 것입니다.

Resolving Dependencies
--> Running transaction check
... (many packages listed) ...

Dependencies Resolved

================================================================================
 Package               Arch         Version              Repository        Size
================================================================================
Updating:
 bind-libs             x86_64       <version>            updates           <size>
 bind-license          noarch       <version>            updates           <size>
 glibc                 x86_64       <version>            updates           <size>
 glibc-common          x86_64       <version>            updates           <size>
 ... (many more packages) ...

Transaction Summary
================================================================================
Upgrade  <X> Packages

Total download size: <total_size>
Is this ok [y/d/N]:

업데이트될 패키지 목록을 주의 깊게 검토하십시오. 모든 패키지를 업데이트하는 데 시간이 너무 오래 걸릴 수 있으므로, 이번 실습에서는 진행할 준비가 되었을 때 n을 입력하여 업데이트를 건너뜁니다.

축하합니다! 전체 시스템을 업데이트하는 방법을 익혔습니다. 이는 모든 Linux 서버나 워크스테이션을 관리하여 보안과 신뢰성을 유지하는 데 필수적인 기술입니다.

요약

이 실습에서는 YUM 패키지 관리자를 사용하여 RHEL 기반 Linux 시스템에서 소프트웨어 패키지를 관리하는 기본 사항을 배웠습니다. 먼저 yum list로 설치된 패키지의 상태와 버전을 확인하고, yum deplist를 사용하여 의존성을 조사하는 것으로 시작했습니다. 또한 yum repolist 명령어로 활성화된 모든 저장소를 나열하여 구성된 소프트웨어 소스를 탐색했습니다.

이어서 패키지 업데이트 프로세스를 진행했습니다. yum check-update를 사용하여 설치 없이 시스템 전체의 사용 가능한 업데이트를 확인하는 방법을 배웠습니다. yum update <package>로 특정 단일 패키지에 업데이트를 적용하는 연습을 했으며, 마지막으로 yum update 명령어를 통해 전체 시스템 업데이트를 수행하여 모든 가용 패치와 소프트웨어 업그레이드를 적용함으로써 시스템을 최신 상태로 안전하게 유지하는 방법을 확인했습니다.