Red Hat Enterprise Linux 에서 소프트웨어 설치

Red Hat Enterprise LinuxBeginner
지금 연습하기

소개

이 실습에서는 DNF 를 사용하여 Red Hat Enterprise Linux (RHEL) 시스템에서 소프트웨어 패키지를 관리하는 실무 경험을 얻게 됩니다. Red Hat 지원 등록을 위한 subscription-manager 명령어를 시뮬레이션 환경에서도 이해하는 것으로 시작합니다. 이어서 RPM 패키지 정보를 검색하고 해석하는 방법을 탐색하고, DNF 를 사용하여 소프트웨어 패키지를 설치하고 제거하는 방법을 숙달하게 됩니다.

또한, 이 실습에서는 DNF 소프트웨어 저장소를 관리하는 방법, 즉 저장소를 추가하고, 활성화하고, 비활성화하는 방법을 안내합니다. 마지막으로, DNF 트랜잭션 이력을 보고 이해하는 방법을 배우면서 패키지 관리 작업에 대한 종합적인 개요를 얻게 됩니다.

참고: 이 실습에서는 패키지 다운로드 및 저장소 접근을 위해 네트워크 연결이 필요합니다. LabEx Pro 사용자에게만 제공됩니다.

Red Hat 지원을 위한 시스템 등록

이 단계에서는 subscription-manager 명령어를 사용하여 시스템을 Red Hat 지원에 등록하는 방법을 배웁니다. 이 시뮬레이션 환경에서는 Red Hat 구독이 완전히 제공되지 않지만, subscription-manager 명령어를 이해하는 것은 Red Hat Enterprise Linux 시스템에서 소프트웨어를 관리하는 데 필수적입니다. 이 명령어를 통해 시스템을 Red Hat 에 등록하고 구독을 연결하며 Red Hat 의 콘텐츠 전송 네트워크를 통해 소프트웨어 패키지와 업데이트에 접근할 수 있습니다.

먼저, 플레이스홀더 사용자 이름을 사용하여 시스템 등록을 시도해 보겠습니다. 이는 실제 등록에는 유효한 Red Hat 자격 증명이 필요하지만, 명령어의 사용법을 보여줍니다.

sudo subscription-manager register --username labex

비밀번호를 입력하라는 메시지가 표시됩니다. 이 시뮬레이션 환경에서는 임의의 비밀번호를 입력하거나 시스템이 허용하는 경우 Enter 키를 누르면 됩니다. 명령어는 Red Hat 의 구독 서비스에 연결하는 데 실패할 가능성이 높습니다. 이는 이 실습 환경에서 예상되는 결과입니다. 중요한 부분은 명령어의 구문과 의도된 사용법을 이해하는 것입니다.

Registering to: subscription.rhsm.redhat.com:443/subscription
Password:
Invalid username or password. To create a login, please visit https://www.redhat.com/wapps/ugc/register.html (HTTP error code 401: Unauthorized)

마지막으로, 사용된 구독을 보는 방법을 살펴보겠습니다. 이 명령어는 현재 시스템에 연결된 구독을 보여줍니다.

sudo subscription-manager list --consumed

시스템이 등록되지 않았기 때문에 사용된 구독이 없다는 메시지가 표시됩니다.

No consumed subscription pools were found.

다음으로, Red Hat 계정에 대한 사용 가능한 구독을 일반적으로 나열하는 방법을 살펴보겠습니다. 이 명령어는 Red Hat 계정과 연결된 다양한 구독 풀을 보여줍니다.

sudo subscription-manager list --available

시스템이 아직 등록되지 않았기 때문에 먼저 등록이 필요하다는 오류 메시지가 표시됩니다.

This system is not yet registered. Try 'subscription-manager register --help' for more information.

이 연습은 등록 및 구독 정보 확인을 위한 subscription-manager의 기본적인 사용법을 보여줍니다. 이 시뮬레이션 환경에서는 전체 기능이 제한적이지만, 이러한 명령어는 RHEL 시스템에서 소프트웨어 액세스를 관리하는 데 기본적입니다.

RPM 패키지 정보 탐색

이 단계에서는 rpm 명령어를 사용하여 소프트웨어 패키지를 조사하는 방법을 배웁니다. RPM(Red Hat Package Manager) 은 Red Hat Enterprise Linux 에서 사용하는 핵심 패키지 관리 시스템입니다. 나중에 탐색할 dnf는 저장소에서 패키지를 관리하는 고급 도구이지만, rpm은 개별 .rpm 파일을 쿼리, 검증, 설치 및 제거할 수 있습니다.

먼저, 시스템에 설치된 모든 RPM 패키지를 나열해 보겠습니다. 이 명령은 매우 긴 목록을 생성할 수 있으므로 출력을 head에 파이프하여 처음 부분만 확인합니다.

rpm -qa | head

패키지 이름, 버전 및 아키텍처 목록이 표시됩니다. 예를 들어:

libgcc-11.4.1-3.el9.x86_64
crypto-policies-20240202-1.git283706d.el9.noarch
tzdata-2024a-1.el9.noarch
subscription-manager-rhsm-certificates-20220623-1.el9.noarch
redhat-release-9.4-0.4.el9.x86_64
setup-2.13.7-10.el9.noarch
filesystem-3.16-2.el9.x86_64
basesystem-11-13.el9.noarch
pcre2-syntax-10.40-5.el9.noarch
ncurses-base-6.2-10.20210508.el9.noarch

다음으로, 특정 파일을 제공하는 패키지를 찾아보겠습니다. 예제로 /etc/yum.repos.d 디렉터리를 사용합니다. 이 디렉터리는 DNF 저장소 구성 파일을 포함합니다.

rpm -qf /etc/yum.repos.d

출력은 이 디렉터리를 소유한 패키지를 보여줍니다.

redhat-release-9.4-0.4.el9.x86_64

이제 설치된 패키지에 대한 자세한 정보를 얻어보겠습니다. 예제로 dnf 패키지를 사용합니다.

rpm -qi dnf

이 명령어는 패키지 이름, 버전, 릴리스, 아키텍처, 크기, 요약, URL, 라이센스 및 자세한 설명을 포함한 다양한 정보를 제공합니다.

(여기에는 rpm -qi dnf 명령어의 출력이 포함됩니다.)

패키지에서 설치된 모든 파일을 나열할 수도 있습니다. 이는 패키지가 시스템에 어떤 파일을 배치하는지 이해하는 데 유용합니다.

rpm -ql dnf | head -n 10

이렇게 하면 dnf 패키지에서 설치된 첫 10 개 파일이 표시됩니다.

(여기에는 rpm -ql dnf 명령어의 출력이 포함됩니다.)

패키지에서 설치된 구성 파일만 보려면 -qc 옵션을 사용합니다. openssh-clients 패키지를 확인해 보겠습니다.

rpm -qc openssh-clients

이렇게 하면 SSH 클라이언트 관련 구성 파일이 나열됩니다.

(여기에는 rpm -qc openssh-clients 명령어의 출력이 포함됩니다.)

마지막으로, 패키지의 변경 로그 정보를 보려면 --changelog를 사용합니다. 이를 통해 패키지의 업데이트 및 수정 이력을 이해할 수 있습니다. audit 패키지를 살펴보겠습니다.

rpm -q --changelog audit | head -n 5

패키지가 설치되지 않은 경우 오류 메시지가 표시됩니다.

package audit is not installed

대신 설치된 패키지로 시도할 수 있습니다. 예를 들어 setup 패키지로:

rpm -q --changelog setup | head -n 5

이러한 rpm 명령어는 시스템에 설치된 패키지와 해당 패키지가 포함하는 파일을 이해하는 데 강력한 도구입니다.

DNF 를 이용한 소프트웨어 패키지 설치 및 제거

이 단계에서는 dnf(Dandified YUM) 를 사용하여 소프트웨어 패키지를 관리하는 방법을 배웁니다. dnf는 Red Hat Enterprise Linux 9 의 기본 패키지 관리자이며, 소프트웨어 패키지 설치, 업데이트 및 제거뿐만 아니라 소프트웨어 저장소 관리에도 사용됩니다. rpm만으로는 어려운 종속성을 자동으로 처리하여 소프트웨어 관리를 훨씬 쉽게 만듭니다.

먼저, 이름에 "http"가 포함된 모든 사용 가능하고 설치된 패키지를 나열해 보겠습니다. 이를 통해 HTTP 서비스와 관련된 패키지가 무엇인지 파악할 수 있습니다.

sudo dnf list 'http*'

설치되었는지 또는 설치 가능한지 여부를 나타내는 패키지 목록이 표시됩니다.

(dnf list 'http*' 명령어의 출력)

이제 이름, 요약 또는 설명에 "web server"가 포함된 패키지를 검색해 보겠습니다. search all 옵션은 더 광범위한 검색에 유용합니다.

sudo dnf search all 'web server'

이 명령은 검색어에 일치하는 패키지 목록을 반환합니다.

(dnf search all 'web server' 명령어의 출력)

Apache HTTP Server 인 httpd 패키지에 대한 자세한 정보를 얻어보겠습니다.

sudo dnf info httpd

이 명령은 패키지의 크기, 라이센스 및 설명을 포함한 포괄적인 세부 정보를 표시합니다.

(dnf info httpd 명령어의 출력)

이제 httpd 패키지를 설치해 보겠습니다. 이 작업에는 sudo 권한이 필요합니다.

sudo dnf install httpd -y

-y 플래그는 모든 프롬프트에 자동으로 "예"를 입력합니다. 스크립팅에 유용하지만, 실제 환경에서는 주의해서 사용해야 합니다.

(dnf install httpd -y 명령어의 출력)

rpm을 사용하여 httpd가 설치되었는지 확인할 수 있습니다.

rpm -q httpd
(rpm -q httpd 명령어의 출력)

이제 httpd 패키지를 제거해 보겠습니다.

sudo dnf remove httpd -y

이렇게 하면 httpd 패키지와 다른 설치된 패키지에서 더 이상 필요하지 않은 모든 종속성이 제거됩니다.

(dnf remove httpd -y 명령어의 출력)

제거되었는지 확인합니다.

rpm -q httpd
(rpm -q httpd 명령어의 출력)

이 예제는 소프트웨어 패키지를 설치하고 제거하기 위한 기본적인 dnf 명령어를 보여줍니다.

DNF 소프트웨어 저장소 관리

이 단계에서는 DNF 소프트웨어 저장소를 관리하는 방법을 배웁니다. 저장소는 소프트웨어 패키지가 저장되고 dnf가 패키지를 가져오는 위치입니다. 저장소를 나열하고, 활성화하고, 비활성화하고, 추가하는 방법을 이해하는 것은 시스템에서 사용 가능한 소프트웨어를 제어하는 데 필수적입니다.

먼저, 구성된 모든 DNF 저장소와 상태 (활성화 또는 비활성화) 를 나열해 보겠습니다.

sudo dnf repolist all

저장소 ID, 이름 및 현재 상태 목록이 표시됩니다.

(dnf repolist all 명령어의 출력)

dnf config-manager 명령은 저장소 구성을 관리하는 강력한 도구입니다. 이를 사용하여 저장소를 활성화하거나 비활성화할 수 있습니다. 예를 들어, 가상의 디버그 저장소를 활성화해 보겠습니다. 이 특정 저장소는 이 실험 환경에서 존재하거나 액세스할 수 없을 수 있지만, 명령은 구문을 보여줍니다.

sudo dnf config-manager --enable rhel-9-server-debug-rpms

구독 관리에 대한 메시지와 저장소가 발견되지 않았다는 오류 메시지가 표시됩니다. 이는 이 환경에서 예상되는 결과입니다.

(dnf config-manager --enable rhel-9-server-debug-rpms 명령어의 출력)

이제 저장소를 비활성화해 보겠습니다. 예제로 rhel-9-for-x86_64-appstream-rpms를 사용합니다. 참고: 이 특정 저장소 이름은 이 UBI 환경에 존재하지 않지만, 명령은 구문을 보여줍니다.

sudo dnf config-manager --disable rhel-9-for-x86_64-appstream-rpms

구독 관리 메시지와 이 환경에서 저장소가 존재하지 않는다는 오류 메시지가 표시됩니다.

(dnf config-manager --disable rhel-9-for-x86_64-appstream-rpms 명령어의 출력)

이 저장소 이름이 현재 시스템에 존재하지 않는지 확인해 보겠습니다.

sudo dnf repolist all | grep rhel-9-for-x86_64-appstream-rpms

예상대로 이 저장소는 UBI 환경에 존재하지 않으므로 출력이 없습니다.

(출력 없음)

저장소가 존재하지 않는지 확인하기 위해 동일한 활성화 명령을 다시 시도해 보겠습니다.

sudo dnf config-manager --enable rhel-9-for-x86_64-appstream-rpms

역시 동일한 오류 메시지가 표시됩니다.

(dnf config-manager --enable rhel-9-for-x86_64-appstream-rpms 명령어의 출력)

dnf config-manager --add-repo 명령을 사용하여 URL 을 지정하여 새 저장소를 추가할 수도 있습니다. 시연을 위해 일반적인 EPEL(Extra Packages for Enterprise Linux) 저장소 URL 을 추가해 보겠습니다. 이 명령은 GPG 키와 특정 .repo 파일이 필요하므로 저장소를 완전히 구성하지는 않지만, 명령의 기능을 보여줍니다.

sudo dnf config-manager --add-repo="https://dl.fedoraproject.org/pub/epel/9/Everything/x86_64/"

.repo 파일이 생성되었음을 나타내는 출력이 표시됩니다.

(dnf config-manager --add-repo 명령어의 출력)

새로 생성된 .repo 파일을 /etc/yum.repos.d/에서 확인할 수 있습니다. 파일 이름은 URL 에서 파생됩니다.

ls /etc/yum.repos.d/

기존 저장소 파일과 함께 dl.fedoraproject.org_pub_epel_9_Everything_x86_64_.repo와 같은 파일이 표시되어야 합니다.

(ls /etc/yum.repos.d/ 명령어의 출력)

마지막으로, 방금 추가한 저장소 구성 파일을 정리하기 위해 제거해 보겠습니다.

sudo rm /etc/yum.repos.d/dl.fedoraproject.org_pub_epel_9_Everything_x86_64_.repo

이 단계에서는 RHEL 에서 소프트웨어 소스를 관리하는 데 필수적인 DNF 저장소를 나열하고, 활성화하고, 비활성화하고, 추가하는 방법을 보여줍니다.

DNF 트랜잭션 이력 보기

이 단계에서는 DNF 작업의 트랜잭션 이력을 보는 방법을 배웁니다. dnf는 모든 패키지 설치, 제거 및 업데이트에 대한 자세한 로그를 유지합니다. 이 이력은 문제 해결, 감사 및 필요한 경우 변경 사항을 되돌리는 데 매우 귀중합니다.

먼저, 시스템에서 발생한 모든 DNF 트랜잭션의 요약을 보겠습니다.

sudo dnf history

각 트랜잭션의 ID, 사용된 명령줄, 날짜 및 시간, 수행된 작업 및 변경된 패키지 수를 나열하는 표가 표시됩니다.

ID     | Command line              | Date and time    | Action(s)      | Altered
--------------------------------------------------------------------------------
     3 | install httpd             | 2024-04-22 08:00 | Install        |   10
     2 | remove httpd              | 2024-04-22 08:01 | Remove         |    6
     1 |                           | 2024-04-22 07:50 | Install        |  767 EE

ID 열은 특정 트랜잭션을 참조할 수 있기 때문에 특히 중요합니다. 예를 들어, 특정 트랜잭션에 대한 자세한 정보를 보고 싶다면 dnf history info <ID>를 사용할 수 있습니다. 마지막 트랜잭션 (이전 단계에서 httpd 제거) 의 세부 정보를 살펴보겠습니다. dnf history 출력에서 ID 를 찾을 수 있습니다. 위의 예제에서는 2입니다.

sudo dnf history info 2

이 명령은 선택한 트랜잭션의 포괄적인 세부 정보를 제공합니다. 제거된 패키지, 버전 및 작업 이유를 포함합니다.

(dnf history info 2 명령어의 출력)

DNF 이력의 가장 강력한 기능 중 하나는 트랜잭션을 취소하거나 다시 수행할 수 있다는 것입니다. 예를 들어, httpd 제거를 취소하려면 dnf history undo <ID>를 사용합니다. httpd 제거 트랜잭션을 취소해 보겠습니다 ( dnf history 출력에서 ID 를 사용, 예: 2).

sudo dnf history undo 2 -y

이 명령은 해당 트랜잭션에서 제거된 httpd 패키지와 종속성을 다시 설치합니다.

(dnf history undo 2 -y 명령어의 출력)

이제 httpd가 다시 설치되었는지 확인합니다.

rpm -q httpd
(rpm -q httpd 명령어의 출력)

마지막으로, 향후 실험을 위해 시스템을 깨끗한 상태로 유지하기 위해 httpd를 다시 제거합니다.

sudo dnf remove httpd -y
(sudo dnf remove httpd -y 명령어의 출력)

이 단계에서는 dnf history를 사용하여 DNF 트랜잭션을 보고, 검사하고, 되돌리는 방법을 보여주었습니다. 시스템 관리에 강력한 기능을 제공합니다.

요약

이 실험에서는 DNF 를 사용하여 Red Hat Enterprise Linux 에서 소프트웨어 패키지를 관리하는 필수 기술을 배웠습니다. Red Hat 과 연결하여 콘텐츠 전송 네트워크에 액세스하는 데 필수적인 subscription-manager 명령어를 이해하는 것으로 시작했지만, 시뮬레이션 환경에서 완전한 등록은 불가능했습니다.

이어서 RPM 패키지 정보를 쿼리하고, DNF 를 사용하여 소프트웨어를 설치 및 제거하고, DNF 소프트웨어 저장소를 관리하고, DNF 트랜잭션 이력을 보는 방법을 살펴보았습니다. 이러한 단계는 효율적인 소프트웨어 관리를 위한 DNF 의 기능에 대한 포괄적인 개요를 제공했습니다.