본문 바로가기

리눅스-기초명령어/패키지 관리

yum, dnf

1. yum

rpm 기반의 시스템에서 패키지를 손쉽게 설치해주고 자동으로 업데이트를 수행하는 명령행 기반의 유틸리티이다. 하지만 최근 RHEL 8 버전부터는 새로운 패키지 관리 도구인 dnf(Dandified Yum)가 등장하면서 대체되었지만, dnf 명령의 심볼릭 링크 파일로 제공되면서 명령어 사용을 지원한다.

 

사용법

yum [option] [command] [패키지_파일명]

 

옵션

옵션 설명
-y 모든 질의에 yes로 자동 대답
-v 자세한 정보 출력



2. dnf (Dandified Yum)

rpm기반의 패키지 관리 도구로 yum을 대체하기 위해 등장했다.

명령어 사용법은 yum과 유사하다.

 

사용법

dnf [옵션] [명령어] [패키지_파일명]

 

옵션

옵션 설명
-y 모든 질의에 ‘yes’라고 답한다.
-v 자세한 정보를 출력한다.



명령어

옵션 설명
list 전체 패키지에 대한 정보를 출력한다. (=ls)
info  특정 패키지에 대한 정보를 출력한다.
update 설치된 패키지를 업데이트 할때 사용한다. = upgrade
install 패키지를 설치할 때 사용한다.
search 문자열이 포함된 패키지를 찾아준다.
remove  패키지를 삭제할 때 사용한다.
provides 특정 파일/하위 패키지를 제공하는 패키지의 이름을 찾는다. 
history yum 또는 dnf 명령을 사용한 작업 이력 정보를 출력한다.
group list 패키지 그룹에 대한 정보를 출력한다.
group info 해당 패키지 그룹명과 관련된 패키지의 정보를 보여준다.
clean all  repository의 캐시를 지운다

 

예시

install

[root@rocky1 log]# dnf install httpd
Last metadata expiration check: 2:20:48 ago on Tue May  9 10:04:51 2023.
Dependencies resolved.
============================================
Package               Arch        Version                 Repository      Size
============================================
Installing:
httpd                 x86_64      2.4.53-7.el9_1.5        appstream       47 k
Installing dependencies:
apr                   x86_64      1.7.0-11.el9            appstream      123 k
apr-util              x86_64      1.6.1-20.el9            appstream       94 k
apr-util-bdb          x86_64      1.6.1-20.el9            appstream       13 k
httpd-core            x86_64      2.4.53-7.el9_1.5        appstream    1.4 M
httpd-filesystem      noarch      2.4.53-7.el9_1.5        appstream    14 k
httpd-tools           x86_64      2.4.53-7.el9_1.5        appstream     81 k
Installing weak dependencies:
apr-util-openssl      x86_64      1.6.1-20.el9            appstream      15 k
mod_http2             x86_64      1.15.19-3.el9_1.5    appstream    148 k
mod_lua               x86_64      2.4.53-7.el9_1.5        appstream     61 k

Transaction Summary
================================================================================
Install  10 Packages

Total download size: 1.9 M
Installed size: 5.9 M
Is this ok [y/N]: 

# 의존성(dependencies)패키지들도 같이 다운이 가능하다.




list search [패키지] : 전체 패키지에 대한 정보 중 [패키지]를 찾아 출력

[root@rocky1 log]# dnf list search httpd # dnf 리스트 중에 httpd만 출력
Last metadata expiration check: 2:01:11 ago on Tue May  9 10:04:51 2023.
Available Packages
httpd.x86_64                     2.4.53-7.el9_1.5 

 

info [패키지] : [패키지]에 대한 정보 출력

[root@rocky1 log]# dnf info httpd
Last metadata expiration check: 2:02:37 ago on Tue May  9 10:04:51 2023.
Available Packages
Name         : httpd
Version      : 2.4.53
Release      : 7.el9_1.5
Architecture : x86_64
Size         : 47 k
Source       : httpd-2.4.53-7.el9_1.5.src.rpm
Repository   : appstream
Summary      : Apache HTTP Server
URL          : https://httpd.apache.org/
License      : ASL 2.0
Description  : The Apache HTTP Server is a powerful, efficient, and extensible
            : web server.

 

update [패키지] : [패키지] 업데이트

[root@rocky1 log]# dnf update kernel
Last metadata expiration check: 2:09:14 ago on Tue May  9 10:04:51 2023.
Dependencies resolved.
============================================
Package             Arch        Version                      Repository   Size
============================================
Installing:
kernel              x86_64      5.14.0-162.23.1.el9_1        baseos      1.9 M
Installing dependencies:
kernel-core         x86_64      5.14.0-162.23.1.el9_1        baseos       45 M
kernel-modules      x86_64      5.14.0-162.23.1.el9_1        baseos       33 M

Transaction Summary
============================================
Install  3 Packages

Total download size: 81 M
Installed size: 114 M
Is this ok [y/N]: 

# 업데이트가 없다면 nothing to do 란 메시지가 나온다.

 

group info [패키지] : [패키지]그룹에 관련된 패키지들의 정보를 출력

group install [패키지] : [패키지]그룹에 관련된 패키지들을 설치

[root@rocky1 tmp]# dnf group info "System Tools"
[root@rocky1 log]# dnf group info "System Tools"
Last metadata expiration check: 2:29:37 ago on Tue May  9 10:04:51 2023.
Group: System Tools
 Description: This group is a collection of various tools for the system, such as the client for connecting to SMB shares and tools to monitor network traffic.
 Default Packages:
   NetworkManager-libreswan
              .
              .
              .

 Optional Packages:
   PackageKit-command-not-found
   initscripts-service
              .
              .
              .
[root@rocky1 tmp]# dnf install "@System Tools"

명령어 group을 사용해도 되지만, group을 생략하고 파일명 앞에 @를 붙여서 그룹으로 인식하게 만들 수 있다.



provides [파일] : [파일]을 제공하는 패키지들을 출력

[root@rocky1 log]# dnf provides /bin/bash
#/bin/bash를 제공하는 패키지들
Last metadata expiration check: 1:47:38 ago on Tue May  9 10:16:35 2023.
bash-5.1.8-6.el9_1.x86_64 : The GNU Bourne Again shell
Repo        : @System
Matched from:
Provide    : /bin/bash

bash-5.1.8-6.el9_1.x86_64 : The GNU Bourne Again shell
Repo        : baseos
Matched from:
Provide    : /bin/bash

 

history undo [작업 번호] : history에서 확인가능한 [작업 번호]작업을 취소

[root@rocky1 log]# dnf history
ID     | Command line                                | Date and time    | Action(s)      | Altered
------------------------------------------------------------------------------------------------
    8 | group install System Tools|2023-05-09 11:39 |Install |   17 EE
    7 | update                    |2023-05-09 11:28 | I, U   |  144  
    6 | install -y nginx          |2023-05-09 11:25 | Install|    4  
    5 | install neovim            |2023-04-25 10:58 | Install|   10  <
    4 | install epel-release      |2023-04-25 10:52 | Install|    1 >E
    3 | install git               |2023-04-24 15:25 | Install|    7  
    2 | install zsh               | 2023-04-24 15:25| Install|    1  <
    1 |                           | 2023-04-24 12:16| Install| 1189 >E

[root@rocky1 log]# dnf history undo 8 
잘못 삭제하거나 설치한 패키지들을 다시 설치하거나 삭제할 수 있다.
Last metadata expiration check: 0:57:22 ago on 2023년 05월 09일 (화) 오전 10시 48분 55초.
Dependencies resolved.
=====================================================
Package                           Architecture    Version                    Repository           Size
=====================================================
Removing:
NetworkManager-libreswan          x86_64          1.2.14-1.el9.3             @appstream          408 k
cifs-utils                        x86_64          6.14-1.el9                 @baseos             220 k
libreswan                         x86_64          4.6-3.el9                  @appstream          4.8 M
nmap                              x86_64          3:7.91-10.el9               @appstream           24 M
Transaction Summary
=====================================================
Remove  16 Packages
Freed space: 39 M
Is this ok [y/N]:
다시 되돌릴지 물어본다.



dnf.log 패키지 다운로드 로그

[root@rocky1 log]# dv /var/log
[root@rocky1 log]# vi dnf.log안에서도 히스토리를 확인할 수 있지만  보기 어렵고 별다른 기능이없어
[root@rocky1 log]# dnf history를 쓴다.




2.1. dnf module 종류

DNF 패키지 관리자의 기능으로, 이를 통해 사용자는 다양한 버전의 패키지와 종속성을 보다 모듈적이고 유연한 방식으로 관리할 수 있다. dnf는 지정된 기본 버전 패키지만을 설치하지만 모듈을 이용해 패키지의 다른 버전을 쉽게 설치하고 관리할 수 있다.



옵션

옵션 설명
list 모듈의 목록을 보여준다.
info 모듈의 정보를 출력해준다
enable 특정 버전의 모듈을 활성화한다.
reset 모듈을 기본상태로 되돌린다.
install 모듈을 설치한다
remove 모듈을 삭제한다

 

예시

 

dnf module list

[root@rocky2 ~]# dnf module list
#설치 가능한 모듈의 버전 리스트
(...)
rhel-AppStream
Name        Stream  Profiles    Summary

maven       3.8     common [d]  Java project management and project comprehension tool
nodejs      18      common [d], Javascript runtime
                    development,
                    minimal,
                    s2i
php         8.1     common [d],  PHP scripting language
                    devel,
                    minimal
ruby        3.1     common [d]   An interpreter of object-oriented scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

 

dnf module 버전으로 install

[root@rocky2 ~]# dnf module install nodejs:18/common
#nodejs 18번 버전으로 다운을 받는다.
(...)
Dependencies resolved.
================================================================================
Package          Architecture  Version
  Repository       Size
================================================================================
Installing group/module packages:
nodejs           x86_64        1:18.7.0-1.module+el9.1.0+16284+4fdefb2f
  rhel-AppStream   12 M
npm              x86_64        1:8.15.0-1.18.7.0.1.module+el9.1.0+16284+4fdefb2f
  rhel-AppStream   2.2 M
Installing weak dependencies:
nodejs-docs      noarch        1:18.7.0-1.module+el9.1.0+16284+4fdefb2f
  rhel-AppStream   7.2 M
nodejs-full-i18n x86_64        1:18.7.0-1.module+el9.1.0+16284+4fdefb2f
  rhel-AppStream   8.2 M
Installing module profiles:
nodejs/common
Enabling module streams:
nodejs                         18

Transaction Summary
================================================================================
Install  4 Packages

Total download size: 30 M
Installed size: 155 M
Is this ok [y/N]: y
(...)

 

nodejs 18 리스트

[root@rocky2 ~]# dnf module list nodejs 18
마지막 메타자료 만료확인 2:00:28 이전인: 2023년 05월 09일 (화) 오후 02시 01분 00초.
Rocky Linux 9 - AppStream
Name      Stream    Profiles                                Summary            
nodejs    18        common [d], development, minimal, s2i   Javascript runtime 

힌트 : [d] efault, [e] nabled, [x] disabled, [i] stalled

 

nodejs 18 enable

[root@rocky2 ~]# dnf module enable nodejs:18
마지막 메타자료 만료확인 2:00:41 이전인: 2023년 05월 09일 (화) 오후 02시 01분 00초.
종속성이 해결되었습니다.
================================================================================
꾸러미            구조             버전                레포지터리         크기
================================================================================
모듈 스트림 활성화:
nodejs                             18                                        

연결 요약
================================================================================

진행할까요? [y/N]: y
완료되었습니다!

nodejs 18 활성화 확인

[root@rocky2 ~]# dnf module list nodejs:18
마지막 메타자료 만료확인 2:00:56 이전인: 2023년 05월 09일 (화) 오후 02시 01분 00초.
Rocky Linux 9 - AppStream
Name      Stream    Profiles                                Summary            
nodejs    18 [e]    common [d], development, minimal, s2i   Javascript runtime 

#nodejs 18 버전 enable

힌트 : [d] efault, [e] nabled, [x] disabled, [i] stalled



모듈의 정보 출력 

[root@rocky2 ~]# dnf module info nodejs 18
Last metadata expiration check: 2:34:34 ago on Tue May  9 13:29:20 2023.
Unable to resolve argument 18
Name             : nodejs
Stream           : 18 [e] [a]
Version          : 9010020221206172252
Context          : 90e40c60
Architecture     : x86_64
Profiles         : common [d], development, minimal, s2i
Default profiles : common
Repo             : appstream
Summary          : Javascript runtime
Description      : Node.js is a platform built on Chrome'
                :
# 너무 길어 생략
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled, [a]ctive

 

'리눅스-기초명령어 > 패키지 관리' 카테고리의 다른 글

iso mount  (1) 2023.09.01
VM으로 repository 서버 구축  (1) 2023.09.01
repository  (0) 2023.09.01
rpm(Red Hat Package Manager)  (0) 2023.09.01