소개
이 실습에서는 YUM 패키지 관리자를 사용하여 RHEL 기반 Linux 시스템에서 소프트웨어 패키지를 관리하는 필수 기술을 배웁니다. 먼저 yum list 및 yum deplist 명령어를 사용하여 현재 설치된 패키지의 세부 정보와 종속성을 검사하는 것으로 시작합니다. 또한 yum repolist를 통해 시스템에 구성된 소프트웨어 저장소를 탐색하여 소프트웨어의 출처와 사용 가능한 패키지를 파악합니다.
이러한 기초 기술을 바탕으로 시스템 유지 관리 및 업데이트에 중점을 둡니다. yum check-update를 사용하여 더 최신 버전이 있는 패키지를 식별하는 방법을 배웁니다. 마지막으로, 특정 단일 패키지를 업데이트하는 것과 전체 시스템 업데이트를 수행하는 것의 차이점을 이해하고, 환경을 안전하고 최신 상태로 유지하기 위한 업데이트 적용 실습을 진행합니다.
'yum list' 및 'yum deplist'를 사용하여 설치된 패키지 검사하기
이 단계에서는 CentOS 및 기타 RHEL 기반 Linux 배포판의 기본 패키지 관리자인 yum을 사용하여 설치된 패키지를 검사하는 방법을 배웁니다. 먼저 현재 사용 중일 가능성이 높은 셸 환경을 제공하는 bash 패키지를 살펴봅니다. 이러한 명령어는 시스템에 무엇이 설치되어 있고, 패키지가 작동하기 위해 어떤 다른 구성 요소에 의존하는지 이해하는 데 도움이 됩니다.
먼저 yum list 명령어를 사용하여 특정 패키지의 상태를 확인합니다. 이 명령어는 패키지 설치 여부와 시스템에 설치된 버전을 알려줍니다.
실습 검증을 위해 패키지를 검사하는 동안 명령어 출력을 /home/labex/project에 저장합니다. bash 패키지의 세부 정보를 확인하려면 터미널에서 다음 명령어를 실행하세요.
sudo yum list bash | tee /home/labex/project/bash-package.txt
bash가 설치되었음을 확인하는 다음과 유사한 출력이 표시됩니다. 저장소 열의 @ 기호(예: @anaconda 또는 @System)는 설치된 패키지를 나타냅니다.
Installed Packages
bash.x86_64 <version> @anaconda
다음으로 종속성 개념을 살펴봅니다. 대부분의 소프트웨어 패키지는 독립적이지 않으며, 올바르게 작동하기 위해 라이브러리나 도구와 같은 다른 패키지에 의존합니다. 이러한 필수 패키지를 종속성(dependencies)이라고 합니다. yum deplist 명령어를 사용하면 특정 패키지에 대한 전체 종속성 목록을 볼 수 있습니다.
bash 패키지가 의존하는 모든 패키지를 보려면 다음 명령어를 실행하세요.
sudo yum deplist bash | tee /home/labex/project/bash-deplist.txt
출력에는 각 종속성과 이를 제공하는 패키지가 나열됩니다. 이는 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 list와 yum deplist를 사용하면 시스템에 설치된 패키지와 패키지 간의 관계를 명확하게 파악할 수 있습니다.
'yum repolist'를 사용하여 저장소 및 사용 가능한 패키지 탐색하기
이 단계에서는 yum이 패키지를 찾고 설치하는 데 사용하는 소프트웨어 소스인 저장소(repositories)를 탐색하는 방법을 배웁니다. 또한 시스템에 설치할 수 있는 새로운 패키지를 검색하는 방법도 배웁니다.
패키지 저장소는 소프트웨어 패키지가 보관되는 중앙 집중식 저장 위치입니다. yum에 패키지 설치를 요청하면 구성된 저장소에 연결하여 필요한 파일을 다운로드하고 시스템에 설치합니다.
현재 시스템에서 활성화된 저장소 목록을 보려면 yum repolist 명령어를 사용할 수 있습니다. 이는 어떤 소프트웨어 소스가 활성화되어 있는지 확인하는 데 유용합니다.
터미널에서 다음 명령어를 실행하고 나중에 검토할 수 있도록 출력을 저장하세요.
sudo yum repolist | tee /home/labex/project/yum-repolist.txt
출력에는 저장소 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*' | tee /home/labex/project/yum-kernel-available.txt
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 명령어는 설치된 패키지 중 저장소에 더 최신 버전이 있는 패키지를 확인하는 안전한 방법을 제공합니다. 이 명령어는 사용 가능한 업데이트를 나열만 할 뿐, 다운로드하거나 설치하지 않는다는 점을 유의하세요. 이를 통해 변경 사항을 적용하기 전에 검토할 수 있습니다.
시스템에서 사용 가능한 모든 업데이트를 확인하려면 터미널에서 다음 명령어를 실행하세요. || true 부분은 yum check-update가 업데이트가 있음을 알리는 상태 코드 100을 반환할 때 셸이 중단되는 것을 방지합니다.
sudo yum check-update | tee /home/labex/project/yum-check-update.txt || true
이제 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 | tee /home/labex/project/curl-update.txt
이제 yum이 curl에 대한 종속성을 해결하고, 업데이트할 항목을 결정한 후 트랜잭션 요약을 제시합니다. 이 요약은 업데이트될 패키지와 총 다운로드 크기를 보여줍니다.
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 | tee /home/labex/project/full-system-update.txt
단일 패키지 업데이트와 마찬가지로 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을 입력하여 업데이트를 건너뛰세요.
이제 전체 시스템 업데이트 트랜잭션을 적용하지 않고 검토했습니다. 실제 유지 관리 작업 시에는 sudo yum update를 다시 실행하고 모든 업데이트를 설치할 준비가 되었을 때 y를 입력하면 됩니다.
요약
이 실습에서는 YUM 패키지 관리자를 사용하여 RHEL 기반 Linux 시스템에서 소프트웨어 패키지를 관리하는 기본 사항을 배웠습니다. yum list를 사용하여 설치된 패키지의 상태와 버전을 확인하고, yum deplist를 사용하여 종속성을 검사하는 것으로 시작했습니다. 또한 yum repolist 명령어를 사용하여 활성화된 모든 저장소를 나열함으로써 구성된 소프트웨어 소스를 탐색했습니다.
이후 패키지 업데이트 프로세스를 진행했습니다. yum check-update를 사용하여 설치하지 않고도 전체 시스템에서 사용 가능한 업데이트를 확인하는 방법을 배웠습니다. yum update <package>를 사용하여 특정 패키지에 대한 업데이트를 적용하는 실습을 했으며, 마지막으로 yum update 명령어를 통해 전체 시스템 업데이트 트랜잭션을 검토하여 승인하기 전에 전체 시스템 업그레이드가 어떤 작업을 수행하는지 파악하는 방법을 익혔습니다.



