4장. 서버를 구축하는 데 알아야 할 필수 개념과 명령 (10) - 편리하게 패키지를 설치하는 DNF 명령

728x90
반응형

출처 : https://www.youtube.com/watch?v=HupTWytlkng&list=PLVsNizTWUw7FqN2gq79Cb3R6qkS7mqOJk&index=22

 

 

이번 시간에는 RPM의 의존성 문제를 해결하기 위해 등장한 DNF에 대해서 알아본다.

 

DNF(Dandified Yum)

  • DNF는 RPM 패키지를 편리하게 설치할 수 있게 도와주는 도구이다.
  • 인터넷을 통해 Rocky Linux가 제공하는 rpm 파일 저장소(Repository)에서 설치할 rpm 파일과 함께 의존성이 있는 다른 rpm 파일까지 모두 다운로드한 후 설치하는 방식으로 동작한다.
  • 인터넷에 연결된 상태에서만 사용할 수 있다.
  • 저장소의 URL은 /etc/yum.repos.d/ 디렉토리의 파일에 저장되어있다.
  • RHEL 7은 YUM, RHEL 8 부터는 YUM이 개선된 DNF 명령을 사용한다.

 

DNF의 기본 사용법

 

  • 기본 설치 방법
    • dnf install 패키지이름
    • dnf -y install 패키지 이름 : dnf install 패키지이름으로 설치하면 설치 여부를 묻는 메시지가 출력된다. -y 옵션을 붙이면 무조건 yes를 입력한 것으로 간주하고 자동으로 설치된다.

 

  • rpm 파일 설치 방법
    • dnf install rpm파일이름.rpm
    • 의존성 문제가 있을 때, 문제를 해결할 수 있는 파일을 인터넷에서 자동으로 다운로드해서 설치한다.

 

  • 업데이트 가능한 목록 보기
    • dnf check-update
    • 시스템에 설치된 패키지 중 업데이트 가능한 패키지 목록을 출력
    • dnf clean all 명령을 실행해 기존 dnf 관련 임시 파일을 지우는 것이 좋음

 

  • 업데이트
    • dnf update 패키지이름
    • dnf update 명령만 실행하면 업데이트 가능한 모든 패키지를 업데이트한다.

 

  • 삭제
    • dnf remove 패키지이름

 

  • 정보 확인
    • dnf info 패키지이름

 

DNF 기본 실습 목표

  • 의존성 문제가 있는 패키지를 dnf 명령으로 설치해 본다.

 

DNF 기본 실습

DNF는 인터넷을 통해 패키지를 다운로드 받기 때문에 네트워크가 반드시 정상 작동해야 한다.

 

 

dnf info mysql-errmsg 명령을 입력해 설치할 패키지의 정보를 확인할 수 있다. 현재 mysql-errmsg 패키지가 없기 때문에 인터넷을 통해 해당 패키지의 정보를 가져온다.

 

 

dnf install mysql-errmsg 명령을 실행하면 내가 설치할 파일과 필요한 파일들(종속 꾸러미)의 목록을 보여주고 설치할 것인지를 묻는 메시지가 출력된다. y를 누르면 설치가 되고, N을 누르면 취소가 된다.

 

 

dnf -y install mysql-errmsg 명령을 실행하면 설치 여부를 묻는 메시지가 출력되지 않고 바로 설치가 진행된다.

 

 

우리가 이전 장에서 실습했던 mc 패키지도 dnf -y install mc 명령을 통해 설치할 수 있다.

 

 

dnf -y remove mc 명령을 입력하면 mc 패키지가 삭제가 된다.

 

이렇게 dnf의 기능이 강력하기 때문에 rpm 명령으로 설치할 일은 거의 없다.

 

 

DNF 고급 사용법

 

  • 패키지 그룹 설치
    • dnf groupinstall "패키지그룹이름"
    • 패키지 그룹에 포함되는 패키지들을 통째로 설치할 때 사용한다.
    • dnf grouplist 명령으로 패키지 그룹의 종류를 확인할 수 있다.
    • 패키지 그룹의 이름에는 띄어쓰기가 많으므로 설치할 때 " " 안에 써야 한다.

 

  • 패키지 리스트 확인
    • dnf list 패키지이름
    • Rocky Linux에서 제공하는 패키지 리스트를 표시한다.
    • dnf list all : 모든 패키지 목록 표시
    • dnf list httpd* : httpd 이름이 들어간 패키지 목록 표시
    • dnf list available : 현재 설치 가능한 목록 표시

 

  • 특정 파일이 속한 패키지 이름 확인
    • dnf provides 파일이름
    • 특정 파일이 어느 패키지에 있는지 확인
    • dnf provides ifconfig : ifconfig 명령이 있는 패키지 확인

 

  • GPG 키 검사 생략
    • dnf install --nogpgcheck rpm패키지이름.rpm
    • Rocky Linux에서 인증되지 않은 rpm 패키지는 dnf install로 설치되지 않는 경우가 존재
    • --nogpgcheck 옵션을 사용하면 GPG 키 인증을 생략해서 해당 rpm 패키지를 설치할 수 있음

 

  • 기존 저장소 목록 지우기
    • dnf clean all
    • 기존에 다운로드한 패키지 목록을 지움

 

DNF 자동 방식과 설정 파일

 

'dnf install 패키지이름' 명령이 작동하는 방식

  1.  dnf install 패키지 설치 명령을 내리면 Repository 폴더를 확인한다.
  2. Repository 폴더(= /etc/yum.repos.d/ 디렉토리)의 repo 파일을 모두 열어서 URL 주소(Rocky Linux 9 패키지 저장소의 인터넷 주소)를 확인한다.
  3. Rocky Linux 9 패키지 저장소에 전체 패키지 목록 파일을 요청한다.
  4. 전체 패키지 목록만 다운로드한다. (실제 패키지 파일 X, 패키지 이름 목록만 가져옴)
  5. 설치할 패키지와 의존성 있는 패키지 목록을 화면에 출력한다.
  6. y(설치하겠음)을 입력하면 설치에 필요한 패키지 파일을 Rocky Linux 9 패키지 저장소에 요청한다.
  7. 설치할 패키지 파일을 다운로드해서 자동으로 설치한다.

 

 

DNF 작동 방식 설정 파일

  • /etc/yum.conf 파일 : 특별히 변경할 필요 없음
  • /etc/yum.repos.d/ 디렉토리 : dnf 명령을 입력했을 때 검색하게 되는 네트워크의 주소가 들어있는 여러 개의 파일이 있음
  • /etc/yum.repos.d/ 디렉토리의 *.repo 파일 : Rocky Linux 9.0만 설치되도록 하기 위해 /etc/yum.repos.d/ 디렉토리의 내용을 모두 삭제하고 This.repo 파일을 새로 생성하여 남겨둠

 

DNF 고급 실습 목표

  • Rocky Linux DVD에서 직접 설치하기 위한 방법을 알아본다. (DVD를 사용하면 인터넷에서 다운로드받는 과정을 생략하기 때문에 빠르게 설치할 수 있다)
  • *.repo 파일을 직접 편집해 본다.
  • 네트워크와 DVD를 동시에 사용하는 효율적인 방법을 알아본다.
  • '패키지 그룹'을 설치하는 방법을 익힌다.

 

DNF 고급 실습

server 가상 머신을 초기화하고 터미널을 실행한다.

 

DVD로 설치하는 방법

 

 

Rocky Linux 9.0 DVD ISO 파일을 마운트한다. 

 

 

디렉토리 경로가 조금 복잡하므로 /media/cdrom 디렉토리를 만들어서 해당 디렉토리에 DVD가 마운트 되도록 설정한다.

 

 

/etc/yum.repos.d/ 디렉토리의 This.repo 파일을 살펴보면 현재 작동하는 주소 목록들이 나타난다.

 

 

This.repo 파일을 backup 디렉토리로 이동시킨다. dvd.repo라는 이름의 빈 파일을 생성하고 gedit 에디터를 통해 dvd.repo 파일을 연다.

 

 

[dvd-baseos]
name=Rocky Linux DVD BaseOS
baseurl=file:///media/cdrom/BaseOS/
gpgcheck=0

[dvd-appstream]
name=Rocky Linux DVD AppStream
baseurl=file:///media/cdrom/AppStream/
gpgcheck=0

 

를 입력한다. 저장하고 gedit 에디터를 닫는다.

 

 

네트워크가 안 되는 상황을 만들기 위해 ifconfig ens160 down 명령을 입력한다.

ping -c 5 www.google.com  명령을 실행하면 위 그림과 같은 메시지를 통해 네트워크 연결이 끊어졌음을 확인할 수 있다.

 

 

dnf install mariadb 명령을 통해 mariadb 데이터베이스 패키지를 설치해보자. 위 그림을 보면 DVD에서 받아서 설치한다는 것을 확인할 수 있다.

 

 

이번에는 help2man 패키지를 설치해보자. dnf install help2man 명령을 입력하면 다음과 같은 에러메시지가 출력된다.

help2man 패키지는 Rocky Linux 9의 CRB 저장소에서 제공되는 패키지지만 현재 DVD 안에는 존재하지 않기 때문에 설치를 할 수 없다.

 

DVD와 네트워크를 동시에 사용하는 방법

DVD를 우선 사용해서 설치하고 DVD에 없는 패키지는 네트워크에서 다운로드 받아서 설치한다.

 

 

ifconfig ens160 up 명령을 통해 다시 네트워크를 연결한다.

ping -c 5 www.google.com  명령을 통해 네트워크가 연결된 것을 확인할 수 있다.

 

 

다시 gedit 에디터로 dvd.repo 파일을 실행한다.

 

 

[network-crb]
name=Rocky Linux Network CRB
baseurl=https://dl.rockylinux.org/vault/rocky/9.0/CRB/x86_64/os/
gpgcheck=0

 

를 추가로 입력해서 DVD에 없는 패키지는 인터넷으로 다운로드해서 설치하도록 만든다.

 

 

dnf clean all 명령을 입력해서 앞서 다운로드했던 저장소 정보를 모두 지운다.

 

 

dnf install mc help2man 명령을 통해 mc와 help2man 패키지를 동시에 설치해보자.

 

위 그림을 보면 help2man 은 DVD에 없으므로 네트워크를 통해 다운로드 받아서 설치하고, mc는 DVD에 있으므로 DVD에서 mc 패키지를 다운로드받아서 설치한다.

 

 

패키지 그룹 설치

 

 

dnf grouplist 명령을 통해 패키지 그룹을 확인할 수 있다. 

 

X window 상에서는 패키지 그룹의 이름이 한글로 나와서 패키지 이름을 인식하지 못하는 경우가 발생한다.

chvt 3 명령을 통해 텍스트 모드로 이동해서 root 사용자로 접속하자.

 

 

 

dnf clean all 명령을 통해 기존 dnf 저장소 정보를 초기화한다. 그 다음 dnf grouplist hidden > glist.txt 명령을 통해 숨겨져있는 그룹 리스트들까지 모두 출력을 해서 이것을 glist.txt 파일에 저장을 한다.

 

chvt 2 명령을 통해 다시 X window 환경으로 돌아가자.

 

 

gedit glist.txt & (&는 백그라운드로 실행하는 옵션) 명령을 입력하면 우리가 설치할 수 있는 그룹 리스트들을 확인할 수 있다.

 

 

목록에 있는 Java Platform 패키지 그룹을 설치해보자.

 

dnf -y groupinstall "Java Platform" 명령을 입력하면 Java 개발 관련 패키지 그룹을 설치할 수 있다. 패키지 그룹 이름은 " "로 묶어야 한다는 것을 잊지말자.

 

 

다음 실습을 위해서 서버 가상머신을 초기화하고 수업을 마친다.

728x90
반응형