리눅스/CentOS

DNF 분류별 명령줄 옵션 - [03] 부가 기능

씨실과 날실 2020. 2. 15. 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 명령줄 분류별 옵션


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


3. 부가 기능

메타 데이터 만료

--refresh

최대 명령 대기 시간 설정

-R <minutes>, --randomwait=<minutes>

시스템 캐시 사용

-C, --cacheonly

터미널 내 색상 사용

--color=<color>

트랜잭션 주석 추가

--comment=<comment>

IP

-4
-6




부가 기능

메타 데이터 만료(= 메타 데이터 갱신)

--refresh

사용 빈도 : 높음

명령을 실행하기 전에 기존의 메타 데이터를 만료된 것으로 설정하고 새로 갱신 정보를 받아옵니다.


[study@localhost ~]$ dnf list httpd
마지막 메타 데이터 만료 확인 : 0:07:01 전에 2020년 02월 11일 (화) 오후 01시 01분 56초.
사용 가능한 패키지
httpd.x86_64           2.4.37-16.module_el8.1.0+256+ae790463           AppStream
[study@localhost ~]$

일반적으로 명령을 실행하면 위와 같이 마지막 메타 데이터 만료를 확인했는지 표시됩니다.


[study@localhost ~]$ dnf repolist enabled -v | grep 'Repo-name\|만료'
마지막 메타 데이터 만료 확인 : 0:07:15 전에 2020년 02월 11일 (화) 오후 01시 01분 56초.
Repo-name    : CentOS-8 - AppStream
Repo 만료 : 172,800 초 (마지막 : 2020년 02월 11일 (화) 오후 01시 01분 51초)
Repo-name    : CentOS-8 - Base
Repo 만료 : 172,800 초 (마지막 : 2020년 02월 11일 (화) 오후 01시 01분 53초)
Repo-name    : CentOS-8 - Extras
Repo 만료 : 172,800 초 (마지막 : 2020년 02월 11일 (화) 오후 01시 01분 56초)
[study@localhost ~]$

예를 들어 활성 저장소의 메타 데이터 만료 관련 정보는 위와 같이 확인할 수 있습니다.


[study@localhost ~]$ dnf repolist enabled -v | grep 'Repo-name\|expire' Repo-name : CentOS-8 - AppStream Repo-expire : 172,800 second(s) (last: Tue 11 Feb 2020 11 01:02:51 KST) Repo-name : CentOS-8 - Base Repo-expire : 172,800 second(s) (last: Tue 11 Feb 2020 11 01:02:53 KST) Repo-name : CentOS-8 - Extras Repo-expire : 172,800 second(s) (last: Tue 11 Feb 2020 01:02:56 KST) [study@localhost ~]$

시스템 사용 언어가 영어로 설정되어 있다면 위와 같이 표시될 것입니다.


[study@localhost ~]$ dnf --refresh list httpd
CentOS-8 - AppStream                            1.8 kB/s | 4.3 kB     00:02    
CentOS-8 - Base                                 2.2 kB/s | 3.8 kB     00:01    
CentOS-8 - Extras                               574  B/s | 1.5 kB     00:02    
사용 가능한 패키지
httpd.x86_64           2.4.37-16.module_el8.1.0+256+ae790463           AppStream
[study@localhost ~]$ 

--refresh 옵션을 사용하면 메타 데이터를 새로 갱신합니다.


최대 명령 대기 시간 설정

-R <minutes>, --randomwait=<minutes>

사용 빈도 : 낮음

최대 명령 대기 시간을 설정합니다.

[study@localhost ~]$ sudo dnf -R 3 upgrade

시스템 캐시 사용

-C, --cacheonly


시스템 캐시에서 완전히 실행하고 캐시를 업데이트하지 않고 만료된 경우에도 사용합니다.

[study@localhost ~]$ dnf -C search dnf
마지막 메타 데이터 만료 확인 : 52 days, 0:38:29 전에 2019년 12월 21일 (토) 오후 01시 12분 43초.
========================== 이름 정확히 일치 함 : dnf ===========================
dnf.noarch : Package manager
dnf.noarch : Package manager
========================== 요약 & 이름 일치 함 : dnf ===========================
microdnf.x86_64 : Micro DNF
dnf-plugins-core.noarch : Core Plugins for DNF
python3-dnf.noarch : Python 3 interface to DNF
dnf-plugins-core.noarch : Core Plugins for DNF
python3-dnf.noarch : Python 3 interface to DNF
dnf-plugin-spacewalk.noarch : DNF plugin for Spacewalk
python3-dnf-plugins-core.noarch : Core Plugins for DNF
dnf-plugin-spacewalk.noarch : DNF plugin for Spacewalk
python3-dnf-plugins-core.noarch : Core Plugins for DNF
dnf-data.noarch : Common data and configuration files for DNF
dnf-data.noarch : Common data and configuration files for DNF
python3-dnf-plugin-spacewalk.noarch : DNF plugin for Spacewalk
python3-dnf-plugin-spacewalk.noarch : DNF plugin for Spacewalk
python3-libdnf.x86_64 : Python 3 bindings for the libdnf library.
python3-libdnf.i686 : Python 3 bindings for the libdnf library.
python3-libdnf.x86_64 : Python 3 bindings for the libdnf library.
python3-dnf-plugin-versionlock.noarch : Version Lock Plugin for DNF
dnf-plugin-subscription-manager.i686 : Subscription Manager plugins for DNF
dnf-plugin-subscription-manager.x86_64 : Subscription Manager plugins for DNF
============================== 이름 일치 함 : dnf ==============================
libdnf.x86_64 : Library providing simplified C and Python API to libsolv
libdnf.i686 : Library providing simplified C and Python API to libsolv
libdnf.x86_64 : Library providing simplified C and Python API to libsolv
dnf-utils.noarch : Yum-utils CLI compatibility layer
dnf-automatic.noarch : Package manager - automated upgrades
[study@localhost ~]$ 

DNF는 각 사용자마다 별도의 캐시를 사용합니다.

루트 사용자의 캐시를 시스템 캐시라고하는데 이 옵션은 일반 사용자가 시스템 캐시를 읽기 전용으로 액세스하는 것을 허용합니다. 일반적으로 사용자의 캐시보다 최신인 것이 보통이므로 메타 데이터 동기화를 기다릴 필요가 없습니다.


터미널 내 색상 사용

--color=<color>

사용 빈도 : 낮음

터미널 출력에 색상 사용 여부를 제어합니다.

사용가능한 값은 always, never, auto이며, auto가 기본값입니다.


dnf --color=never list
위 옵션을 사용하면 색깔 표시가 나타나지 않습니다.




터미널에 표시되는 색깔별로 해당 패키지 등에 대한 특정 정보를 알려줍니다.


[study@localhost ~]$ [study@localhost ~]$ dnf list --available
마지막 메타 데이터 만료 확인 : 0:18:33 전에 2020년 02월 11일 (화) 오후 02시 06분 36초.
사용 가능한 패키지

- 중략 -

webrtc-audio-processing.i686    0.3-8.el8                              AppStream
wget.x86_64                     1.19.5-8.el8_1.1                       AppStream
wireshark.x86_64                1:2.6.2-11.el8                         AppStream

- 중략 -

[study@localhost ~]$ 

wget 패키지가 파란색으로 표시되었다고 가정합시다. 문자가 파란색으로 표시된 것은 업그레이드가 가능하다는 뜻입니다. 해당 패키지의 정보를 확인해봅시다.


[study@localhost ~]$ dnf info wget
마지막 메타 데이터 만료 확인 : 0:46:33 전에 2020년 02월 11일 (화) 오후 02시 06분 36초.
설치된 패키지
이름         : wget
버전         : 1.19.5
릴리즈       : 7.el8_0.1
아키텍처     : x86_64
크기         : 2.8 M
소스         : wget-1.19.5-7.el8_0.1.src.rpm
리포지터리   : @System
레포에서     : AppStream
요약         : A utility for retrieving files using the HTTP or FTP protocols
URL          : http://www.gnu.org/software/wget/
라이선스     : GPLv3+
설명         : GNU Wget is a file retrieval utility which can use either the
             : HTTP or FTP protocols. Wget features include the ability to work
             : in the background while you are logged out, recursive retrieval
             : of directories, file name wildcard matching, remote file
             : timestamp storage and comparison, use of Rest with FTP servers
             : and Range with HTTP servers to retrieve files over slow or
             : unstable connections, support for Proxy servers, and
             : configurability.

사용 가능한 패키지
이름         : wget
버전         : 1.19.5
릴리즈       : 8.el8_1.1
아키텍처     : x86_64
크기         : 735 k
소스         : wget-1.19.5-8.el8_1.1.src.rpm
리포지터리   : AppStream
요약         : A utility for retrieving files using the HTTP or FTP protocols
URL          : http://www.gnu.org/software/wget/
라이선스     : GPLv3+
설명         : GNU Wget is a file retrieval utility which can use either the
             : HTTP or FTP protocols. Wget features include the ability to work
             : in the background while you are logged out, recursive retrieval
             : of directories, file name wildcard matching, remote file
             : timestamp storage and comparison, use of Rest with FTP servers
             : and Range with HTTP servers to retrieve files over slow or
             : unstable connections, support for Proxy servers, and
             : configurability.

[study@localhost ~]$ 

버전 정보는 같지만 릴리스 정보가 다르군요. 시스템에 설치된 wget은 릴리스 정보가 7.el8_0.1인데 저장소 내 패키지의 릴리스 정보는 8.el8_1.1입니다. 업그레이드가 가능합니다.


업그레이드를 진행해봅시다.

[study@localhost ~]$ sudo dnf upgrade wget
[sudo] study의 암호: 
CentOS-8 - AppStream                            1.6 kB/s | 4.3 kB     00:02    
CentOS-8 - Base                                 1.4 kB/s | 3.8 kB     00:02    
CentOS-8 - Extras                               339  B/s | 1.5 kB     00:04    
종속성이 해결되었습니다.
================================================================================
 꾸러미       아키텍처       버전                       리포지토리         크기
================================================================================
Upgrading:
 wget         x86_64         1.19.5-8.el8_1.1           AppStream         735 k

거래 요약
================================================================================
업그레이드  1 꾸러미

총 다운로드 크기 : 735 k
이게 괜찮습니까 [y / N] : y
패키지 다운로드중:
wget-1.19.5-8.el8_1.1.x86_64.rpm                636 kB/s | 735 kB     00:01    
--------------------------------------------------------------------------------
합계                                            284 kB/s | 735 kB     00:02     
트랜잭션 점검 실행 중
트랜잭션 검사가 성공했습니다.
트랜잭션 테스트 실행 중
트랜잭션 테스트가 완료되었습니다.
거래 실행 중
  준비 중입니다  :                                                          1/1 
  Upgrading      : wget-1.19.5-8.el8_1.1.x86_64                             1/2 
  스크립틀릿 실행: wget-1.19.5-8.el8_1.1.x86_64                             1/2 
  스크립틀릿 실행: wget-1.19.5-7.el8_0.1.x86_64                             2/2 
  정리           : wget-1.19.5-7.el8_0.1.x86_64                             2/2 
  스크립틀릿 실행: wget-1.19.5-7.el8_0.1.x86_64                             2/2 
  확인 중        : wget-1.19.5-8.el8_1.1.x86_64                             1/2 
  확인 중        : wget-1.19.5-7.el8_0.1.x86_64                             2/2 

업그레이드 됨:
  wget-1.19.5-8.el8_1.1.x86_64                                                  

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


참고

DNF / YUM 패키지 관리자의 터미널 내 색깔별 정보는 YUM의 설명서를 참고하시기 바랍니다.

DNF / YUM 패키지 관리자의 터미널 내 색깔별 정보는 추후 글을 적도록 하겠습니다.


트랜잭션 주석 추가

--comment=<comment>

사용 빈도 : 낮음

트랜잭션 이력(history)에 주석을 추가합니다.

사용 빈도는 낮긴 합니다만 자신이 서버 관리자라거나 리눅스 시스템을 보다 안전하게 관리하고 싶으신 분들은 이 기능을 자주 활용하시기 바랍니다.

기록은 사용자의 기억을 확장해줍니다.


[study@localhost ~]$ sudo dnf install mc --comment='미드나잇 커맨더 설치'
마지막 메타 데이터 만료 확인 : 0:00:24 전에 2020년 02월 11일 (화) 오후 03시 18분 58초.
종속성이 해결되었습니다.
================================================================================
 꾸러미      아키텍처        버전                      리포지토리          크기
================================================================================
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    
--------------------------------------------------------------------------------
합계                                            707 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 ~]$

주석(코멘트) 옵션은 내용이 길어지는 것이 보통이므로 명령의 끝자락에 붙이는 것이 보통입니다.

주석에 빈 공백이 들어가는 경우 따옴표로 감싸주어야 합니다.


[study@localhost ~]$ sudo dnf install mc --comment=미드나잇 커맨더 설치
[sudo] study의 암호: 
CentOS-8 - AppStream                            1.6 kB/s | 4.3 kB     00:02    
CentOS-8 - AppStream                            1.9 MB/s | 6.4 MB     00:03    
CentOS-8 - Base                                 1.4 kB/s | 3.8 kB     00:02    
CentOS-8 - Base                                 728 kB/s | 5.0 MB     00:06    
CentOS-8 - Extras                               515  B/s | 1.5 kB     00:03    
CentOS-8 - Extras                               533  B/s | 2.1 kB     00:04    
인수와 일치하는 항목 없음 : 커맨더
인수와 일치하는 항목 없음 : 설치
오류: 경기를 찾을 수 없습니다.
[study@localhost ~]$ 

만약 주석에 공백이 있는데 따옴표로 감싸주지 않으면 위처럼 오류가 발생합니다.


[study@localhost ~]$ sudo dnf history
ID     | 명령행                   | 날짜와 시간      | 행위)          | 변경됨 
-------------------------------------------------------------------------------
     6 | install mc --comment=미  | 2020-02-11 15:19 | Install        |    1   
     5 | install elfutils-libelf- | 2019-12-20 13:22 | Install        |    2   
     4 | install make gcc perl ke | 2019-12-20 13:06 | Install        |  102   
     3 | install gnome-tweaks     | 2019-12-17 15:39 | Install        |    2   
     2 | update                   | 2019-12-17 11:53 | I, U           |  174 EE
     1 |                          | 2019-12-01 17:16 | Install        | 1441 EE
[study@localhost ~]$ 

드랜잭션 히스토리를 확인해보면 위처럼 나옵니다.


[study@localhost ~]$ sudo dnf history info 6
[sudo] study의 암호: 
거래 ID : 6
시작 시간 : 2020년 02월 11일 (화) 오후 03시 19분 32초
rpmdb 시작 : 1538:46a91964ed4ef94951e27ea08f1da5d97f8dbe8b
종료 시간 : 2020년 02월 11일 (화) 오후 03시 19분 36초 (4 초)
rpmdb 끝 : 1539:2c36a4215d86ae8deb7fbff114c9a7e3a2775a31
사용자 : study 
리턴 코드 : 성공
릴리스 자 : 8
명령 줄 : install mc --comment=미드나잇 커맨더 설치
변경된 패키지 :
    설치 mc-1:4.8.19-9.el8.x86_64 @AppStream
[study@localhost ~]$ 
잘린 부분을 제대로 확인하려면 위처럼 하위 명령을 사용하여 확인할 수 있습니다.


IP

-4

IPv4 주소로만 해결합니다.

-6

IPv6 주소로만 해결합니다.