리눅스/CentOS

DNF 명령줄 분류별 옵션 - [01] 패키지 관리

씨실과 날실 2020. 2. 11. 09:00

[관련 게시물]

2020/01/13 - [리눅스/CentOS] - DNF 명령 - DNF 명령 연재 목록

2020/01/18 - [리눅스/CentOS] - DNF 패키지 기본 관리 명령 1 - 패키지 설치(install), 제거(remove), 재설치(reinstall), 자동 제거(autoremove), 패키지 제거와 설치 동시 수행(swap)

2020/01/19 - [리눅스/CentOS] - DNF 패키지 기본 관리 명령 2 - 패키지 정보(Info), 목록(List), 종속성 목록(Deplist), 문제점 검사(Check), 그룹 관련 명령(Group), 작업 표시(Mark), 검색(Search), 조건 검색(Provides)

2020/01/23 - [리눅스/CentOS] - DNF 패키지 버전 관리 - 패키지 업그레이드(Upgrade), 최소 업그레이드(Upgrade-Minimal), 다운그레이드(Downgrade), 업데이트 정보(Updateinfo), 업데이트 확인(Check-Update)

2020/01/27 - [리눅스/CentOS] - DNF 명령 관리 - 명령 별명(Alias), 대화식 쉘(Shell), 도움말(Help)

2020/01/30 - [리눅스/CentOS] - DNF 트랜잭션 관리 - 트랜잭션 이력(History)

2020/02/01 - [리눅스/CentOS] - DNF 저장소 관리 - 저장소 정보(Repolist), 저장소 내 임시 파일 정리(Clean), 저장소 메타 데이터 캐시 생성(Makecache), 저장소 쿼리 명령(Repoquery), 저장소 패키지 명령(Repository-Packages)

2020/02/03 - [리눅스/CentOS] - DNF 배포판 동기화 - 배포판 동기화(Distro-Sync)

2020/02/05 - [리눅스/CentOS] - DNF 모듈 관리 - 모듈 관리(Module)




2020/02/09 - [리눅스/CentOS] - DNF 명령줄 옵션 연재 목록

2020/02/11 - [리눅스/CentOS] - DNF 명령줄 분류별 옵션 - [01] 패키지 관리


안내

앞으로 상당 기간에 걸쳐 RPM 기반 리눅스 배포판을 위한 패키지 관리도구 DNF에 대해 연재하게 되었습니다.

이 연재는 레드햇 계열 리눅스를 처음 접하는 분들을 위해 초심자가 꼭 알야야 하거나 또는 알면 유용한 것들을 선별하여 내용을 작성하였습니다.

잘못된 정보가 있다면 댓글로 제보해주시면 감사하겠습니다.


연재 항목은 다음과 같습니다.

2020/01/13 - [리눅스/CentOS] - DNF 명령 - DNF 명령 연재 목록

2020/01/18 - [리눅스/CentOS] - DNF 패키지 기본 관리 명령 1 - 패키지 설치(install), 제거(remove), 재설치(reinstall), 자동 제거(autoremove), 패키지 제거와 설치 동시 수행(swap)

2020/01/19 - [리눅스/CentOS] - DNF 패키지 기본 관리 명령 2 - 패키지 정보(Info), 목록(List), 종속성 목록(Deplist), 문제점 검사(Check), 그룹 관련 명령(Group), 작업 표시(Mark), 검색(Search), 조건 검색(Provides)

2020/01/23 - [리눅스/CentOS] - DNF 패키지 버전 관리 - 패키지 업그레이드(Upgrade), 최소 업그레이드(Upgrade-Minimal), 다운그레이드(Downgrade), 업데이트 정보(Updateinfo), 업데이트 확인(Check-Update)

2020/01/27 - [리눅스/CentOS] - DNF 명령 관리 - 명령 별명(Alias), 대화식 쉘(Shell), 도움말(Help)

2020/01/30 - [리눅스/CentOS] - DNF 트랜잭션 관리 - 트랜잭션 이력(History)

2020/02/01 - [리눅스/CentOS] - DNF 저장소 관리 - 저장소 정보(Repolist), 저장소 내 임시 파일 정리(Clean), 저장소 메타 데이터 캐시 생성(Makecache), 저장소 쿼리 명령(Repoquery), 저장소 패키지 명령(Repository-Packages)

2020/02/03 - [리눅스/CentOS] - DNF 배포판 동기화 - 배포판 동기화(Distro-Sync)

2020/02/05 - [리눅스/CentOS] - DNF 모듈 관리 - 모듈 관리(Module)

2020/02/09 - [리눅스/CentOS] - DNF 명령줄 옵션 연재 목록

2020/02/11 - [리눅스/CentOS] - DNF 명령줄 분류별 옵션 - [01] 패키지 관리

2020/02/13 - [리눅스/CentOS] - DNF 분류별 명령줄 옵션 - [02] 환경 설정

2020/02/15 - [리눅스/CentOS] - DNF 분류별 명령줄 옵션 - [03] 부가 기능

2020/02/17 - [리눅스/CentOS] - DNF 분류별 명령줄 옵션 - [04] 정보 확인

2020/02/20 - [리눅스/CentOS] - DNF 환경 설정[구성] 파일(dnf.conf) [main] 섹션 옵션

2020/02/22 - [리눅스/CentOS] - DNF 저장소 옵션(Repo Options)과 저장소 변수(Repo Variables)

2020/02/24 - [리눅스/CentOS] - 유용한 DNF 플러그인

2020/02/26 - [리눅스/CentOS] - DNF와 YUM의 차이점



DNF 옵션 목록(총 53개)

-4
-6
--advisory=<advisory>, --advisories=<advisory>
--allowerasing
--assumeno
-b, --best
--bugfix
--bz=<bugzilla>, --bzs=<bugzilla>
-C, --cacheonly
--color=<color>
--comment=<comment>
-c <config file>, --config=<config file>
--cve=<cves>, --cves=<cves>
-d <debug level>, --debuglevel=<debug level>
--debugsolver
--disableexcludes=[all|main|<repoid>], --disableexcludepkgs=[all|main|<repoid>]
--disable, --set-disabled
--disableplugin=<plugin names>
--disablerepo=<repoid>
--downloaddir=<path>, --destdir=<path>
--downloadonly
-e <error level>, --errorlevel=<error level>
--enable, --set-enabled
--enableplugin=<plugin names>
--enablerepo=<repoid>
--enhancement
-x <package-file-spec>, --exclude=<package-file-spec>
--excludepkgs=<package-file-spec>
--forcearch=<arch>
-h, --help, --help-cmd
--installroot=<path>
--newpackage
--noautoremove
--nobest
--nodocs
--nogpgcheck
--noplugins
--obsoletes
-q, --quiet
-R <minutes>, --randomwait=<minutes>
--refresh
--releasever=<release>
--repofrompath <repo>,<path/url>
--repo=<repoid>, --repoid=<repoid>
--rpmverbosity=<name>
--sec-severity=<severity>, --secseverity=<severity>
--security
--setopt=<option>=<value>
--skip-broken
--showduplicates
-v, --verbose
--version
-y, --assumeyes


DNF 명령줄 분류별 옵션

명령줄 옵션 분류별 전체 항목


1. 패키지 관리

1-1. 자주 쓰는 패키지 옵션

종속성이 깨지거나 사용할 수 없는 패키지 건너 뛰기

--skip-broken

GPG 키 미확인

--nogpgcheck

불필요한 종속성 패키지 제거

--obsoletes

최신 패키지 버전 사용

-b, --best


1-2. 일반 패키지 옵션

최신 패키지가 아니더라도 사용 가능

--nobest

설명서 미설치

--nodocs

1-3. 고급 패키지 옵션

지정 패키지 제외

-x <package-file-spec>, --exclude=<package-file-spec>

지정 아키텍처 강제 사용

--forcearch=<arch>

패키지 설치 루트 지정

--installroot=<path>


1-4. 특정 정보 패키지 포함

버그 수정 패키지 포함

--bugfix

기능 개선 관련 패키지 포함

--enhancement

패키지 관련 새 패키지 포함

--newpackage


보안 문제 해결 패키지 포함

--security

지정 심각도 수정 사항 패키자

--sec-severity=<severity>, --secseverity=<severity>


Bugzilla ID 문제 해결 패키지 포함

--bz=<bugzilla>, --bzs=<bugzilla>

CVE (Common Vulnerabilities and Exposures) ID 문제 수정 패키지 포함

--cve=<cves>, --cves=<cves>

권고(advisory) 패키지 포함

--advisory=<advisory>, --advisories=<advisory>


1-5. 패키지 단순 다운로드

패키지 세트 다운로드(설치 작업은 안함)

--downloadonly

다운로드 패키지 리디렉션

--downloaddir=<path>, --destdir=<path>


1-6. 자동 답변

가부 질의에 예 답변 미리 설정

-y, --assumeyes

가부 질의에 아니오 답변 미리 설정

--assumeno

번외. 구식 옵션

지정 패키지 제외

--excludepkgs=<package-file-spec>




1. 패키지 관리

1-1. 자주 쓰는 패키지 옵션

종속성이 깨지거나 사용할 수 없는 패키지 건너 뛰기

--skip-broken

사용 빈도 : 높음

트랜잭션 과정에서 문제를 일으키는 패키지를 제거하여 종속성 문제를 해결합니다.

dnf.conf의 [main] 섹션에 사용되는 구성 옵션 strict=FALSE를 dnf 명령에서도 사용할 수 있도록 해주는 옵션입니다.

enable 및 disable 모듈의 하위 명령을 사용하면 모듈러 종속성이 손상된 경우에도 작업을 수행할 수 있습니다.

[study@localhost ~]$ sudo dnf --skip-broken install httpd

GPG 키 미확인

--nogpgcheck

사용 빈도 : 중간

비고 : 보안상 사용을 권장하지 않음

일반적으로 패키지를 설치할 때 GPG 서명 확인을 건너 뜁니다.

[study@localhost ~]$  sudo dnf --nogpgcheck install httpd
그러나 이 옵션은 권장하지 않습니다. 보안상 좋은 옵션은 아닙니다.


불필요한 종속성 패키지 제거

--obsoletes

사용 빈도 : 높음

해당 옵션 사용 가능 명령 : install, upgrade, list, repoquery

관련 dnf.conf 구성 옵션과 기본값 : obsoletes=true

비고 : 이 옵션은 주로 upgrade 시 사용됨

주 기능은 불필요한 종속성을 제거하는 것입니다.

이 옵션은 repoquery 명령과 함께 사용될 때 패키지가 사용하지 않는 기능도 표시합니다.

[study@localhost ~]$ sudo dnf --obsoletes upgrade


[study@localhost pkgs]$ dnf repoquery --obsoletes
CentOS-8 - AppStream                            952 kB/s | 6.4 MB     00:06    
CentOS-8 - Base                                 1.6 MB/s | 5.0 MB     00:03    
CentOS-8 - Extras                               835  B/s | 2.1 kB     00:02    
Cython < 0.28.1-5
GConf2-gtk < 3.2.6-6
NetworkManager < 1.0.0
NetworkManager < 1:0.9.9.95-1
NetworkManager < 1:1.5.3
NetworkManager-atm
NetworkManager-bt
NetworkManager-config-routing-rules < 1:1.20.0-3.el8
NetworkManager-gnome < 1:0.9.7
- 중략 - 
org-x11-drv-ati-firmware < 6.13.0-0.22
xorg-x11-drv-keyboard < 1.8.0-6
xorg-x11-drv-modesetting < 1.20.3-8.el8
xorg-x11-drv-mouse < 1.9.0-8
xorg-x11-drv-synaptics < 1.9.0-3
xorg-x11-drv-vmmouse < 13.1.0-4
xorg-x11-fonts-base <= 7.5-19.el8
xorg-x11-glamor < 1.20.3-8.el8
xz-compat-libs < 5.2.4-3.el8
[study@localhost pkgs]$ 

[study@localhost pkgs]$ dnf provides GConf2-gtk
마지막 메타 데이터 만료 확인 : 0:11:10 전에 2020년 02월 09일 (일) 오후 12시 18분 41초.
GConf2-3.2.6-22.el8.x86_64 : A process-transparent configuration system
Repo : @System
일치 항목 :
제공 : GConf2-gtk = 3.2.6-6

GConf2-3.2.6-22.el8.i686 : A process-transparent configuration system
Repo : AppStream
일치 항목 :
제공 : GConf2-gtk = 3.2.6-6

GConf2-3.2.6-22.el8.x86_64 : A process-transparent configuration system
Repo : AppStream
일치 항목 :
제공 : GConf2-gtk = 3.2.6-6

[study@localhost pkgs]$ 

최신 패키지 버전 사용

-b, --best

사용 빈도 : 낮음

해당 옵션 사용 가능 명령 : install, upgrade, list, repoquery

관련 dnf.conf 구성 옵션과 기본값 : best=true

비고 : 사용 빈도가 낮은 이유는 dnf 구성 옵션의 기본값이므로

트랜잭션에서 사용 가능한 최신의 패키지 버전을 사용하도록 합니다.

보통 dnf 명령으로 업그레이드를 할 때는 종속성을 이유로 설치할 수 없는 경우 해당 패키지 업그레이드를 건너뛰지만 이 옵션을 사용하면 강제적으로 DNF가 최신 패키지만 고려합니다.

[study@localhost ~]$ sudo dnf -b upgrade


설치된 패키지 삭제를 통한 종속성 해결

--allowerasing

사용 빈도 : 낮음

해당 옵션 주 사용 명령 : install

비고 : swap 명령 대신 사용 가능

종속성 문제를 해결하기 위한 기존 패키지 삭제를 허용하는 옵션입니다.

swap명령의 경우 제거해야 할 패키지와 새로 설치할 패키지를 명시적으로 지정해야만 사용할 수 있습니다. 그러나 문제가 되는 종속성 패키지를 모르는 경우가 많습니다. 이때 굳이 제거할 패키지를 지정해줄 필요 없는 이 옵션을 사용해주면 문제없이 새 패키지를 설치할 수 있습니다.

[study@localhost ~]$ sudo dnf --allowerasing install 패키지명

1-2. 일반 패키지 옵션

최신 패키지가 아니더라도 사용 가능

--nobest

사용 빈도 : 낮음

해당 옵션 주 사용 가능 명령 : install, upgrade

관련 dnf.conf 구성 옵션과 기본값 : --best=true

비고 :

best 옵션을 False로 설정합니다. 트랜잭션이 최상의 후보로만 제한되지 않습니다.

[study@localhost ~]$ sudo dnf --nobest upgrade


설명서 미설치

--nodocs

사용 빈도 : 낮음

해당 옵션 주 사용 가능 명령 : install, upgrade

관련 dnf.conf 구성 옵션과 기본값 : --best=true

비고 : 해당 옵션 사용 권장하지 않음

설명서를 설치하지 않습니다.

해당 옵션은 사용하지 않는 것을 강력히 권고합니다. 설명서 자체가 많은 용량을 차지하는 것도 아니며 사용법과 문제 해결 방법을 man 명령을 통해 쉽게 찾을 수 있게 되는데 굳이 설명서를 설치하지 않을 이유가 없습니다.


설명서 미설치 옵션 사용 시

[study@localhost ~]$ sudo dnf --nodocs install mc
마지막 메타 데이터 만료 확인 : 0:02:16 전에 2020년 02월 08일 (토) 오후 08시 01분 19초.
종속성이 해결되었습니다.
================================================================================
 꾸러미      아키텍처        버전                      리포지토리          크기
================================================================================
Installing:
 mc          x86_64          1:4.8.19-9.el8            AppStream          1.9 M

거래 요약
================================================================================
설치  1 꾸러미

총 다운로드 크기 : 1.9 M
설치 크기 : 6.8 M
이게 괜찮습니까 [y / N] : y
패키지 다운로드중:
mc-4.8.19-9.el8.x86_64.rpm                      1.5 MB/s | 1.9 MB     00:01    
--------------------------------------------------------------------------------
합계                                            692 kB/s | 1.9 MB     00:02     
트랜잭션 점검 실행 중
트랜잭션 검사가 성공했습니다.
트랜잭션 테스트 실행 중
트랜잭션 테스트가 완료되었습니다.
거래 실행 중
  준비 중입니다  :                                                          1/1 
  Installing     : mc-1:4.8.19-9.el8.x86_64                                 1/1 
  스크립틀릿 실행: mc-1:4.8.19-9.el8.x86_64                                 1/1 
  확인 중        : mc-1:4.8.19-9.el8.x86_64                                 1/1 

설치됨:
  mc-1:4.8.19-9.el8.x86_64                                                      

완료되었습니다!
[study@localhost ~]$ man mc
No manual entry for mc
[study@localhost ~]$ 

설명서를 설치하지 않으면 man 명령어를 사용하는 경우 아래와 같은 오류 메시지를 출력합니다.


 No manual entry for 패키지명


일반 설치 후(설명서 미설치 옵션 사용 안함)

[study@localhost ~]$ man mc


MC(1)                       GNU Midnight Commander                       MC(1)

NAME
       mc - Visual shell for Unix-like systems.

USAGE
       mc [-abcCdfhPstuUVx] [-l log] [dir1 [dir2]] [-e [file] ...] [-v file]

DESCRIPTION
       GNU   Midnight  Commander  is  a  directory  browser/file  manager  for
       Unix-like operating systems.

OPTIONS
       -a, --stickchars
              Disable usage of graphic characters for line drawing.

       -b, --nocolor
              Force black and white display.

       -c, --color
              Force color mode, please  check  the  section  Colors  for  more
              information.

 Manual page mc(1) line 1 (press h for help or q to quit)

설명서를 위, 아래로 이동해가며 읽으려면 화살표 키 ↑, ↓를 눌러 한 줄씩 이동하거나 PgUp, PgDn키를 눌러 한 페이지씩 이동합니다.

빠져 나가려면 q 키를 눌러줍니다.


1-3. 고급 패키지 옵션

지정 패키지 제외

-x <package-file-spec>, --exclude=<package-file-spec>

사용 빈도 : 높음

해당 옵션 주 사용 명령 : install, remove, upgrade

관련 dnf.conf 구성 옵션과 기본값 :

패키지 설치, 제거, 업그레이드 트랜잭션 작업이나 그외 정보 확인 관련 명령 작업 시 지정한 패키지를 제외합니다.


일반 설치 예

[study@localhost ~]$ [study@localhost ~]$ sudo dnf install httpd
[sudo] study의 암호: 
마지막 메타 데이터 만료 확인 : 0:06:48 전에 2020년 02월 08일 (토) 오후 08시 05분 28초.
종속성이 해결되었습니다.
================================================================================
 꾸러미            아키텍처
                          버전                                  리포지토리
                                                                           크기
================================================================================
Installing:
 httpd             x86_64 2.4.37-16.module_el8.1.0+256+ae790463 AppStream 1.7 M
종속성 설치:
 apr               x86_64 1.6.3-9.el8                           AppStream 125 k
 apr-util          x86_64 1.6.1-6.el8                           AppStream 105 k
 centos-logos-httpd
                   noarch 80.5-2.el8                            AppStream  24 k
 httpd-filesystem  noarch 2.4.37-16.module_el8.1.0+256+ae790463 AppStream  35 k
 httpd-tools       x86_64 2.4.37-16.module_el8.1.0+256+ae790463 AppStream 103 k
 mod_http2         x86_64 1.11.3-3.module_el8.1.0+213+acce2796  AppStream 158 k
약한 의존성 설치하기:
 apr-util-bdb      x86_64 1.6.1-6.el8                           AppStream  25 k
 apr-util-openssl  x86_64 1.6.1-6.el8                           AppStream  27 k
Enabling module streams:
 httpd                    2.4                                                  

거래 요약
================================================================================
설치  9 꾸러미

총 다운로드 크기 : 2.3 M
설치 크기 : 6.6 M
이게 괜찮습니까 [y / N] : 

특정 패키지 제외 설치 예

[study@localhost ~]$ sudo dnf --exclude={apr-util-bdb,apr-util-openssl} install httpd
마지막 메타 데이터 만료 확인 : 0:17:58 전에 2020년 02월 08일 (토) 오후 08시 05분 28초.
종속성이 해결되었습니다.
================================================================================
 꾸러미            아키텍처
                          버전                                  리포지토리
                                                                           크기
================================================================================
Installing:
 httpd             x86_64 2.4.37-16.module_el8.1.0+256+ae790463 AppStream 1.7 M
종속성 설치:
 apr               x86_64 1.6.3-9.el8                           AppStream 125 k
 apr-util          x86_64 1.6.1-6.el8                           AppStream 105 k
 centos-logos-httpd
                   noarch 80.5-2.el8                            AppStream  24 k
 httpd-filesystem  noarch 2.4.37-16.module_el8.1.0+256+ae790463 AppStream  35 k
 httpd-tools       x86_64 2.4.37-16.module_el8.1.0+256+ae790463 AppStream 103 k
 mod_http2         x86_64 1.11.3-3.module_el8.1.0+213+acce2796  AppStream 158 k
Enabling module streams:
 httpd                    2.4                                                  

거래 요약
================================================================================
설치  7 꾸러미

총 다운로드 크기 : 2.2 M
설치 크기 : 6.5 M
이게 괜찮습니까 [y / N] : 

[study@localhost ~]$ sudo dnf -x apr-util-bdb -x apr-util-openssl install httpd
마지막 메타 데이터 만료 확인 : 0:24:26 전에 2020년 02월 08일 (토) 오후 08시 05분 28초.
종속성이 해결되었습니다.
================================================================================
 꾸러미            아키텍처
                          버전                                  리포지토리
                                                                           크기
================================================================================
Installing:
 httpd             x86_64 2.4.37-16.module_el8.1.0+256+ae790463 AppStream 1.7 M
종속성 설치:
 apr               x86_64 1.6.3-9.el8                           AppStream 125 k
 apr-util          x86_64 1.6.1-6.el8                           AppStream 105 k
 centos-logos-httpd
                   noarch 80.5-2.el8                            AppStream  24 k
 httpd-filesystem  noarch 2.4.37-16.module_el8.1.0+256+ae790463 AppStream  35 k
 httpd-tools       x86_64 2.4.37-16.module_el8.1.0+256+ae790463 AppStream 103 k
 mod_http2         x86_64 1.11.3-3.module_el8.1.0+213+acce2796  AppStream 158 k
Enabling module streams:
 httpd                    2.4                                                  

거래 요약
================================================================================
설치  7 꾸러미

총 다운로드 크기 : 2.2 M
설치 크기 : 6.5 M
이게 괜찮습니까 [y / N] : 


참고

-x 옵션은 단일 패키지만 지정 가능합니다. 만약 이 옵션을 사용해 다수의 패키지를 제외하려면 제외할 패키지마다 이 옵션을 붙여 주어야 합니다.

--exclude 옵션은 {} 기호의 globs를 사용해 한번에 다수의 패키지를 지정할 수 있습니다. 그러나 패키지 구별은 ,(쉼표)로 하며 패키지 간 또는 쉼표와 패키지 사이의 공백은 허용되지 않습니다.

예전에는 --excludepkgs 옵션이 사용되었습니다만 현재는 --exclude 옵션으로 대체되었습니다. 그러나 --excludepkgs 옵션도 과거 호환성을 위해 동일히 작동합니다. 그러나 언제 폐기될지는 모르므로 --exclude나 -x옵션을 사용할 것을 권장합니다.


지정 아키텍처 강제 사용

--forcearch=<arch>

사용 빈도 : 낮음

해당 옵션 주 사용 명령 : install, upgrade

관련 dnf.conf 구성 옵션과 기본값 : arch=자동 감지 되는 시스템 아키텍처 / ignorearc=false

비고 : 이 옵션을 사용하려면 dnf.conf의  ignorearch 구성 옵션이 true로 설정되어 있어야 합니다.

아키텍처를 사용하도록 강제합니다. 모든 아키텍처를 지정할 수 있습니다.

그러나 시스템의 CPU에서 지원하지 않는 아키텍처의 패키지를 사용하려면 에뮬레이션이 필요한데 레드햇 계열 리눅스는 QEMU를 통해 이루어집니다.

[study@localhost ~]$ sudo dnf --forcearch=aarch64 install 패키지명


[study@localhost ~]$ sudo dnf --forcearch="amd64" install \
> "https://github.com/tomboy-notes/tomboy-ng/releases/download/V0.23/tomboy-ng-0.23-2.amd64.rpm"
마지막 메타 데이터 만료 확인 : 0:00:03 전에 2020년 02월 08일 (토) 오후 11시 14분 00초.
tomboy-ng-0.23-2.amd64.rpm                      358 kB/s | 1.8 MB     00:05    
종속성이 해결되었습니다.
================================================================================
 꾸러미             아키텍처       버전             리포지토리             크기
================================================================================
Installing:
 tomboy-ng          amd64          0.23-2           @commandline          1.8 M

거래 요약
================================================================================
설치  1 꾸러미

총합 크기: 1.8 M
설치 크기 : 5.0 M
이게 괜찮습니까 [y / N] : 

패키지 설치 루트 지정

--installroot=<path>

사용 빈도 : 낮음

해당 옵션 주 사용 명령 : install

비고 : 이 옵션은 절대 경로로 설정해야 합니다.

모든 패키지가 설치될 위치에 대한 대체 설치 루트를 지정합니다.

이 옵션은 리눅스 초심자인 경우 권장하지 않습니다.

이 옵션에 대한 자세한 설명은 위 링크를 참고하시기 바랍니다. 같은 내용을 아래 명령어로도 확인할 수 있습니다.

[study@localhost ~]$ man dnf

Installroot 사용례:

[study@localhost ~]$ sudo dnf --installroot=<installroot> --releasever=<release> install system-release

<installroot> 디렉토리의 시스템 releasever를 영구적으로 <release>로 설정합니다.
[study@localhost ~]$ sudo dnf --installroot=<installroot> --setopt=reposdir=<path> --config /path/dnf.conf upgrade
/path/dnf.conf의 구성을 사용하여 --setopt에 설명된 저장소에서 installroot 내의 패키지를 업그레이드합니다.


1-4. 특정 정보 패키지 포함

참고

1-4. 파트에서 소개되는 옵션들은 일반 리눅스 사용자라면 크게 신경쓰지 않아도 될 것입니다. 그러나 서버 관리자라면 이 옵션들과 친해져야할 것입니다.


참고

--bugfix, --enhancement, --security, --sec-severity=<severity> 또는 --secseverity=<severity>옵션을 통해 포함되는 패키지에 대한 정보는 아래의 레드햇 제품 개선 정보 페이지에서 확인할 수 있습니다.

레드햇 제품 개선 정보 페이지

https://access.redhat.com/errata/


특히 보안 관련 정보 사이트는 아래의 한 사이트에서 확인할 수 있습니다.

레드햇 보안 정보 페이지

https://access.redhat.com/security

레드햇 보안 권고 페이지

https://access.redhat.com/security/security-updates/#/security-advisories

레드햇 CVE 정보 페이지

https://access.redhat.com/security/security-updates/#/cve



버그 수정 패키지 포함

--bugfix

사용 빈도 : 중간

사용 가능 명령 : install, repoquery, updateinfo, upgrade

해당 옵션 주 사용 명령 : install, upgrade

버그 수정 패키지를 포함합니다.

[study@localhost ~]$ sudo dnf --bugfix upgrade
마지막 메타 데이터 만료 확인 : 0:04:42 전에 2020년 02월 09일 (일) 오후 02시 10분 01초.
보안 업데이트는 필요하지 않지만 598 업데이트가 제공됩니다.
종속성이 해결되었습니다.
할 것이 없음.
완료되었습니다!
[study@localhost ~]$ 

기능 개선 관련 패키지 포함

--enhancement

사용 빈도 : 중간

사용 가능 명령 : install, repoquery, updateinfo, upgrade

해당 옵션 주 사용 명령 : install, upgrade

기능 개선 관련 패키지를 포함합니다.

[study@localhost ~]$ sudo dnf --enhancement install 패키지명

패키지 관련 새 패키지 포함

--newpackage

사용 빈도 : 중간

사용 가능 명령 : install, repoquery, updateinfo, upgrade

해당 옵션 주 사용 명령 : install, upgrade

작업 패키지 관련 새 패키지를 포함합니다.

[study@localhost ~]$ sudo dnf --newpackage install 패키지명


보안 문제 해결 패키지 포함

--security

사용 빈도 : 중간

사용 가능 명령 : upgrade

보안 문제에 대한 수정 사항을 제공하는 패키지를 포함합니다.

[study@localhost ~]$ sudo dnf --security upgrade
마지막 메타 데이터 만료 확인 : 0:30:44 전에 2020년 02월 08일 (토) 오후 11시 14분 00초.
보안 업데이트는 필요하지 않지만 598 업데이트가 제공됩니다.
종속성이 해결되었습니다.
할 것이 없음.
완료되었습니다!
[study@localhost ~]$ 

지정 심각도 수정 사항 패키자

--sec-severity=<severity>, --secseverity=<severity>

사용 빈도 : 중간

사용 가능 명령 : install, repoquery, updateinfo, upgrade

해당 옵션 주 사용 명령 : install, upgrade

지정된 심각도의 문제에 대한 수정 사항을 제공하는 패키지를 포함합니다.

지정 가능한 심각도는 아래와 같습니다.

low / Moderate / Important / Critical


[study@localhost ~]$ sudo dnf --sec-severity=Critical upgrade
마지막 메타 데이터 만료 확인 : 0:24:33 전에 2020년 02월 09일 (일) 오후 02시 36분 43초.
보안 업데이트는 필요하지 않지만 598 업데이트가 제공됩니다.
종속성이 해결되었습니다.
할 것이 없음.
완료되었습니다!
[study@localhost ~]$ 

참고

심각도를 지정할 때 심각도 영단어의 첫글자는 대문자로 입력해주어야 합니다.

만약 소문자로 입력하면 아래와 같은 오류가 출랷됩니다.

[study@localhost ~]$ sudo dnf --sec-severity=critical upgrade
[sudo] study의 암호: 
usage: dnf [-c [config file]] [-q] [-v] [--version] [--installroot [path]]
           [--nodocs] [--noplugins] [--enableplugin [plugin]]
           [--disableplugin [plugin]] [--releasever RELEASEVER]
           [--setopt SETOPTS] [--skip-broken] [-h] [--allowerasing]
           [-b | --nobest] [-C] [-R [minutes]] [-d [debug level]]
           [--debugsolver] [--showduplicates] [-e ERRORLEVEL] [--obsoletes]
           [--rpmverbosity [debug level name]] [-y] [--assumeno]
           [--enablerepo [repo]] [--disablerepo [repo] | --repo [repo]]
           [--enable | --disable] [-x [package]] [--disableexcludes [repo]]
           [--repofrompath [repo,path]] [--noautoremove] [--nogpgcheck]
           [--color COLOR] [--refresh] [-4] [-6] [--destdir DESTDIR]
           [--downloadonly] [--comment COMMENT] [--bugfix] [--enhancement]
           [--newpackage] [--security] [--advisory ADVISORY] [--bzs BUGZILLA]
           [--cves CVES] [--sec-severity {Critical,Important,Moderate,Low}]
           [--forcearch ARCH]
dnf: error: argument --sec-severity/--secseverity: invalid choice: 'critical' (choose from 'Critical', 'Important', 'Moderate', 'Low')
[study@localhost ~]$

하단의 아래 문구를 참고하시기 바랍니다.


dnf: error: argument --sec-severity/--secseverity: invalid choice: 'critical' (choose from 'Critical', 'Important', 'Moderate', 'Low')


각 단어의 첫 문자를 대문자로 쓰라고 안내하고 있습니다.


Bugzilla ID 문제 해결 패키지 포함

--bz=<bugzilla>, --bzs=<bugzilla>

사용 빈도 : 중간

사용 가능 명령 : install, repoquery, updateinfo, upgrade

해당 옵션 주 사용 명령 : install, upgrade

Bugzilla ID 문제를 해결하는 패키지를 포함합니다.

버그 정보는 위 링크 사이트에서 확인하시면 됩니다.

[study@localhost ~]$ sudo dnf --bz=1684413 upgrade
마지막 메타 데이터 만료 확인 : 0:04:42 전에 2020년 02월 09일 (일) 오후 02시 10분 01초.
보안 업데이트는 필요하지 않지만 598 업데이트가 제공됩니다.
종속성이 해결되었습니다.
할 것이 없음.
완료되었습니다!
[study@localhost ~]$ 


CVE (Common Vulnerabilities and Exposures) ID 문제 수정 패키지 포함

--cve=<cves>, --cves=<cves>

사용 빈도 : 중간

사용 가능 명령 : install, repoquery, updateinfo, upgrade

해당 옵션 주 사용 명령 : install, upgrade

CVE (Common Vulnerabilities and Exposures) ID 문제를 수정하는 패키지를 포함합니다.

CVE (Common Vulnerabilities and Exposures) 사이트

http://cve.mitre.org/about/

레드햇 CVE 정보 페이지

https://access.redhat.com/security/security-updates/#/cve


[study@localhost ~]$ sudo dnf --cve=CVE-2019-11764 upgrade
마지막 메타 데이터 만료 확인 : 0:58:21 전에 2020년 02월 09일 (일) 오후 02시 36분 43초.
보안 업데이트는 필요하지 않지만 598 업데이트가 제공됩니다.
종속성이 해결되었습니다.
할 것이 없음.
완료되었습니다!
[study@localhost ~]$ 

참고

CVE란?

CVE (Common Vulnerabilities and Exposures)는 공개적으로 알려진 사이버 보안 취약점에 대한 일반적인 식별자 목록입니다.

우리는 CNA(CVE 번호 부여 기관)에서 할당한 CVE 번호를 사용하여 소프트웨어 또는 펌웨어 취약성에 대한 정보와 해결책을 공유할 수 있습니다.


권고(advisory) 패키지 포함

--advisory=<advisory>, --advisories=<advisory> 

사용 빈도 : 중간

사용 가능 명령 : install, repoquery, updateinfo, upgrade

해당 옵션 주 사용 명령 : install, upgrade

권고 ID에 해당하는 패키지를 포함합니다.

[study@localhost ~]$ sudo dnf --advisory=RHEA-2020:0408 upgrade
[sudo] study의 암호: 
마지막 메타 데이터 만료 확인 : 1:03:46 전에 2020년 02월 09일 (일) 오후 02시 36분 43초.
보안 업데이트는 필요하지 않지만 598 업데이트가 제공됩니다.
종속성이 해결되었습니다.
할 것이 없음.
완료되었습니다!
[study@localhost ~]$ 


참고

예시로 든 RHEA-2020:0408는 RHEL 7 용 권고안입니다.

이 글이 올라온 2월 11일 현재 RHEL 8 용 권고안은 검색 분류에 추가되지 않았습니다.



1-5. 패키지 단순 다운로드

패키지 세트 다운로드(설치 작업은 안함)

--downloadonly

사용 빈도 : 중간

사용 가능 명령 : install, upgrade, remove

rpm 트랜잭션을 수행하지 않고 종속성이 해결된 패키지 세트를 다운로드합니다.

[study@localhost ~]$ sudo dnf --downloadonly install mc
[sudo] study의 암호: 
CentOS-8 - AppStream                            1.6 kB/s | 4.3 kB     00:02    
CentOS-8 - AppStream                            1.3 MB/s | 6.4 MB     00:04    
CentOS-8 - Base                                 1.4 kB/s | 3.8 kB     00:02    
CentOS-8 - Base                                 1.2 MB/s | 5.0 MB     00:04    
CentOS-8 - Extras                               593  B/s | 1.5 kB     00:02    
CentOS-8 - Extras                               610  B/s | 2.1 kB     00:03    
종속성이 해결되었습니다.
================================================================================
 꾸러미      아키텍처        버전                      리포지토리          크기
================================================================================
Installing:
 mc          x86_64          1:4.8.19-9.el8            AppStream          1.9 M

거래 요약
================================================================================
설치  1 꾸러미

총 다운로드 크기 : 1.9 M
설치 크기 : 6.8 M
DNF는 해당 거래에 대한 패키지 만 다운로드합니다.
이게 괜찮습니까 [y / N] : y
패키지 다운로드중:
mc-4.8.19-9.el8.x86_64.rpm                       37 kB/s | 1.9 MB     00:53    
--------------------------------------------------------------------------------
합계                                             36 kB/s | 1.9 MB     00:54     
완료되었습니다!
다운로드 된 패키지는 다음 번 성공적인 트랜잭션까지 캐시에 저장되었습니다.
캐시 된 패키지를 제거하려면 'dnf clean packages'.
[study@localhost ~]$ 

다운로드 패키지 리디렉션

--downloaddir=<path>, --destdir=<path>

사용 빈도 : 중간

사용 가능 명령 : install, upgrade, remove

관련 옵션 : --downloadonly

관련 명령 : download 명령 (dnf-plugins-core), system-upgrade명령 (dnf-plugins-extras)

다운로드한 패키지를 설정한 디렉터리로 이동합니다.

[study@localhost ~]$ mkdir pkgs
[study@localhost ~]$ sudo dnf --downloadonly --downloaddir=/home/study/pkgs install mc
[sudo] study의 암호: 
마지막 메타 데이터 만료 확인 : 0:03:25 전에 2020년 02월 09일 (일) 오전 11시 34분 10초.
종속성이 해결되었습니다.
================================================================================
 꾸러미      아키텍처        버전                      리포지토리          크기
================================================================================
Installing:
 mc          x86_64          1:4.8.19-9.el8            AppStream          1.9 M

거래 요약
================================================================================
설치  1 꾸러미

총 다운로드 크기 : 1.9 M
설치 크기 : 6.8 M
DNF는 해당 거래에 대한 패키지 만 다운로드합니다.
이게 괜찮습니까 [y / N] : y
패키지 다운로드중:
mc-4.8.19-9.el8.x86_64.rpm                       32 kB/s | 1.9 MB     01:02    
--------------------------------------------------------------------------------
합계                                             31 kB/s | 1.9 MB     01:03     
완료되었습니다!
다운로드 된 패키지는 다음 번 성공적인 트랜잭션까지 캐시에 저장되었습니다.
캐시 된 패키지를 제거하려면 'dnf clean packages'.
[study@localhost ~]$ cd pkgs
[study@localhost pkgs]$ ls
mc-4.8.19-9.el8.x86_64.rpm
[study@localhost pkgs]$ 

1-6. 자동 답변

가부 질의에 예 답변 미리 설정

-y, --assumeyes

사용 빈도 : 높음

모든 질문에 자동으로 예라고 대답합니다.

[study@localhost pkgs]$ sudo dnf -y install mc
마지막 메타 데이터 만료 확인 : 0:06:53 전에 2020년 02월 09일 (일) 오전 11시 34분 10초.
종속성이 해결되었습니다.
================================================================================
 꾸러미      아키텍처        버전                      리포지토리          크기
================================================================================
Installing:
 mc          x86_64          1:4.8.19-9.el8            AppStream          1.9 M

거래 요약
================================================================================
설치  1 꾸러미

총합 크기: 1.9 M
설치 크기 : 6.8 M
패키지 다운로드중:
[SKIPPED] mc-4.8.19-9.el8.x86_64.rpm: Already downloaded                       
--------------------------------------------------------------------------------
합계                                            194 MB/s | 1.9 MB     00:00     
트랜잭션 점검 실행 중
트랜잭션 검사가 성공했습니다.
트랜잭션 테스트 실행 중
트랜잭션 테스트가 완료되었습니다.
거래 실행 중
  준비 중입니다  :                                                          1/1 
  Installing     : mc-1:4.8.19-9.el8.x86_64                                 1/1 
  스크립틀릿 실행: mc-1:4.8.19-9.el8.x86_64                                 1/1 
  확인 중        : mc-1:4.8.19-9.el8.x86_64                                 1/1 

설치됨:
  mc-1:4.8.19-9.el8.x86_64                                                      

완료되었습니다!
[study@localhost pkgs]$ 

개인적으로 이 옵션을 쓰지 않는 것을 권장합니다. 확인하지 않고 예스맨이 되는 것은 사용자의 시스템 통제력을 약화시키고 예기치 못한 문제를 야기할 수 있습니다.


가부 질의에 아니오 답변 미리 설정

--assumeno

사용 빈도 : 낮음

모든 질문에 자동으로 아니오로 답변합니다.

[study@localhost pkgs]$ sudo dnf --assumeno remove mc
종속성이 해결되었습니다.
================================================================================
 꾸러미      아키텍처        버전                     리포지토리           크기
================================================================================
삭제 중:
 mc          x86_64          1:4.8.19-9.el8           @AppStream          6.8 M

거래 요약
================================================================================
삭제  1 꾸러미

자유 공간 : 6.8 M
작업이 중지됨.
[study@localhost pkgs]$ 


번외. 구식 옵션

지정 패키지 제외

--excludepkgs=<package-file-spec>

관련 옵견 : -x,  --exclude

더 이상 사용되지 않는 옵션입니다. --exclude 옵션으로 대체되었습니다.

그러나 호환을 위해 기능 자체는 유지되고 있습니다.