Linux에서 RPM 패키지 관리를 위한 27 ‘DNF’ (Yum의 포크) 명령어

DNF 또는 Dandified YUMRPM 기반 배포용의 차세대 패키지 관리자입니다. 이것은 먼저 Fedora 18에서 소개되었으며, 최근의 Fedora 22 릴리스에서는 YUM 유틸리티를 대체했습니다.

DNFYUM의 병목 현상을 개선하기 위해 성능, 메모리 사용, 의존성 해결, 속도 및 여러 가지 다른 요소를 목표로합니다. DNF는 RPM, libsolv 및 hawkey 라이브러리를 사용하여 패키지 관리를 수행합니다. CentOS 및 RHEL 7에는 기본으로 설치되어 있지 않지만 yum을 사용하고 DNF을 yum과 함께 사용할 수 있습니다.

DNF에 대해 더 읽고 싶다면 여기를 참조하십시오:

  1. Yum을 DNF로 교체하는 이유

DNF의 최신 안정적인 릴리스는 2015년 5월 11일에 출시된 1.0입니다. (포스트 작성 시점에서) 이것 (및 이전 모든 DNF 버전)은 대부분 Python으로 작성되었으며 GPL v2 라이센스에 따라 출시되었습니다.

RHEL/CentOS 7의 기본 저장소에는 DNF가 제공되지 않습니다. 그러나 Fedora 22는 공식적으로 DNF가 구현된 상태로 제공됩니다.

DNFRHEL/CentOS 시스템에 설치하려면 먼저 epel-release 저장소를 설치하고 활성화해야 합니다.

# yum install epel-release
OR
# yum install epel-release -y

시스템에 어떤 것이 설치되는지 확인하는 것이 권장되므로 yum과 함께 ‘-y‘를 사용하는 것은 윤리적이지 않습니다. 그러나 이것이 크게 문제가 되지 않는다면 yum과 함께 ‘-y’를 사용하여 모든 것을 자동으로 설치할 수 있습니다.

다음으로, epel-release 저장소에서 yum 명령을 사용하여 DNF 패키지를 설치합니다.

# yum install dnf

dnf가 성공적으로 설치된 후에는, RPM 기반 배포판에서 패키지를 효과적으로 관리하는 데 도움이 되는 dnf commands27가지 실용적인 사용법을 보여드릴 시간입니다.

1. DNF 버전 확인

시스템에 설치된 DNF의 버전을 확인합니다.

# dnf --version

2. 활성화된 DNF 저장소 목록

repolist‘ 옵션과 dnf 명령을 함께 사용하면 시스템에서 활성화된 모든 저장소를 표시합니다.

# dnf repolist

3. 활성화 및 비활성화된 DNF 저장소 모두 목록화

repolist all‘ 옵션은 시스템의 모든 활성화/비활성화된 저장소를 출력합니다.

# dnf repolist all

4. DNF를 사용하여 모든 사용 가능한 패키지와 설치된 패키지 목록화

dnf list” 명령은 모든 저장소에서 사용 가능한 패키지와 리눅스 시스템에 설치된 모든 패키지를 목록화합니다.

# dnf list

5. DNF를 사용하여 모든 설치된 패키지 목록화

dnf list” 명령어는 모든 리포지토리에서 사용 가능한/설치 된 패키지들을 보여줍니다. 그러나 “list installed” 옵션을 사용하여 只有 설치 된 패키지들을 보기 위해서는 아래와 같습니다.

# dnf list installed

6. DNF를 사용하여 모든 사용 가능한 패키지 목록

동일하게 “list available” 옵션은 모든 활성화 된 리포지토리에서 설치 가능한 패키지들을 보여줍니다.

# dnf list available

7. DNF를 사용하여 패키지 search

이 안 그러하다가 설치 할 패키지의 정보가 없는 경우, dnf 명령어의 ‘search‘ 옵션을 사용하여 패키지가 문자열과 일치하는 것을 찾을 수 있습니다 (예를 들어 nano).

# dnf search nano

8. 어떤 파일/하위 패키지를 제공하는가?

dnf 옵션 “provides“는 특정 파일/하위 패키지를 제공하는 패키지의 이름을 찾을 수 있습니다. 例如, 시스템에서 ‘/bin/bash‘를 찾고자 하면?

# dnf provides /bin/bash

9. DNF를 사용하여 패키지 상세 정보 얻기

가상적으로 패키지를 설치 하기 전에 정보를 知りたい 경우, “info” 스위치를 사용하여 패키지 (예를 들어 nano)의 자세한 정보를 얻을 수 있습니다.

# dnf info nano

10. DNF를 사용하여 패키지 설치

nano“이라는 패키지를 설치하려면, 아래의 명령어를 실행하면 자동으로 해당 패키지 nano이 필요한 依存성을 해결하고 설치하게 됩니다.

# dnf install nano

11. DNF를 사용하여 패키지 갱신

특정 패키지(systemd와 같은)만 업데이트하고 시스템의 나머지를 그대로 유지할 수 있습니다.

# dnf update systemd

12. DNF를 사용하여 시스템 업데이트를 확인하십시오.

다음과 같이 시스템에 설치된 모든 시스템 패키지의 업데이트를 확인할 수 있습니다.

# dnf check-update

13. DNF를 사용하여 모든 시스템 패키지 업데이트하기

다음 명령을 사용하여 설치된 모든 패키지를 포함한 전체 시스템을 업데이트할 수 있습니다.

# dnf update
OR
# dnf upgrade

14. DNF를 사용하여 패키지 제거/삭제하기

원하지 않는 패키지(nano와 같은)를 제거하려면 dnf 명령에 “remove” 또는 “erase” 스위치를 사용하여 제거할 수 있습니다.

# dnf remove nano
OR
# dnf erase nano

15. DNF를 사용하여 고아 패키지 제거하기

의존성을 충족시키기 위해 설치된 패키지는 다른 응용 프로그램에서 사용되지 않을 경우 쓸모가 없을 수 있습니다. 다음 명령을 실행하여 해당 고아 패키지를 제거할 수 있습니다.

# dnf autoremove

16. DNF를 사용하여 캐시된 패키지 제거하기

A lot of time we encounter out-of-date headers and unfinished transactions which results into error while executing dnf. We may clean all the cached packages and headers containing remote package information simply by executing.

# dnf clean all

17. 특정 DNF 명령에 대한 도움말 얻기

아래 명령을 실행하여 특정 dnf 명령(clean과 같은)의 도움말을 얻을 수 있습니다.

# dnf help clean

18. 모든 DNF 명령 및 옵션 나열하기

모든 사용 가능한 dnf 명령 및 옵션에 대한 도움말을 나열하려면 다음과 같이 입력하십시오.

# dnf help

19. DNF의 기록 보기

dnf history를 호출하여 이미 실행된 dnf 명령 목록을 확인할 수 있습니다. 이렇게 하면 타임 스탬프와 함께 설치/제거된 내용을 확인할 수 있습니다.

# dnf history

20. 모든 그룹 패키지 나열하기

`dnf grouplist` 명령은 제공되고 있는 모든 パッケージ 또는 설치 된 パッケー지를 印字하게 되고, 何も 말이 없다면, 모두 알 수 있는 그룹을 목록에 표시한다.

# dnf grouplist

21. DNF 를 사용하여 그룹 パッケー지 설치

그룹 パッケー지로 결합되어 있는 모든 パッケー지를 설치하려면 (예를 들면 教育软件) 다음과 같이 하면 된다.

# dnf groupinstall 'Educational Software'

22. 그룹 パッケー지 更新

하나의 그룹 パッケー지 (예를 들면 教育软件)를 다음 명령어를 실행하여 更新할 수 있다.

# dnf groupupdate 'Educational Software'

23. 그룹 パッケー지 제거

그룹 パッケー지를 (예를 들면 教育软件) 다음과 같이 제거할 수 있다.

# dnf groupremove 'Educational Software'

24. 특정 저장소에서 パッケー지 설치

DNF은 특정 パッケー지 (예를 들면 phpmyadmin)를 저장소 (epel)에서 쉽게 이를 설치할 수 있도록 한다.

# dnf --enablerepo=epel install phpmyadmin

25. 설치 됨 パッケー지를 안정적 リリース에 동기화

`dnf distro-sync` 명령어는 모든 설치 됨 パッケー지를 활성화 된 저장소에서 가장 최근 안정적 버전으로 동기화하는 필요한 옵션을 제공하게 되며, パッケー지가 선택되지 않는다면, 모든 설치 됨 パッケー지가 동기화되는 것이다.

# dnf distro-sync

26. パッケー지 재설치

`dnf reinstall nano` 명령어는 이미 설치 됨 Pakage (예를 들면 nano)를 재설치 하게 한다.

# dnf reinstall nano

27. パッケー지 ダウン그레이드

옵션 “downgrade”는 가능하다면 이름 지정 됨 パッケー지 (예를 들면 acpid)를 하위 버전으로 하게 한다.

# dnf downgrade acpid
Sample Output
Using metadata from Wed May 20 12:44:59 2015
No match for available package: acpid-2.0.19-5.el7.x86_64
Error: Nothing to do.

제 관찰: DNF는 패키지를 다운그레이드하지 않았습니다. 이것은 버그로 보고되었습니다.

결론

DNF은 최첨단 패키지 관리자 YUM의 상위 상태입니다. 많은 경험있는 리눅스 시스템 관리자들에게 칭찬받지 못할 자동 처리를 하려는 경향이 있습니다. 예를 들어:

  1. --skip-broken은 DNF에서 인식되지 않으며 대체할 수 있는 것도 없습니다.
  2. resolvedep‘와 같은 명령어는 없지만 dnf provides를 실행할 수 있습니다.
  3. deplist‘ 명령어로 패키지 의존성을 찾을 수 없습니다.
  4. 리포를 제외하면 해당 리포가 모든 작업에 적용되며, yum은 설치 및 업데이트 시에만 해당 리포를 제외합니다.

몇몇 리눅스 사용자들은 리눅스 생태계의 이동 방식에 만족하지 않습니다. 먼저 Systemd가 init 시스템 v를 제거했고 이제 DNF가 Fedora 22에서 곧 YUM을 대체하고 나중에 RHEL과 CentOS에서도 대체할 예정입니다.

어떻게 생각하십니까? 배포판과 전체 리눅스 생태계가 사용자를 평가하지 않고 그들의 의지에 반대하는 것으로 여겨집니다. 또한 IT 산업에서 “만약 고장나지 않았다면 왜 고치나요?”라고 자주 말합니다. 초기 시스템 V나 YUM이 고장났다고 볼 수 없습니다.

지금까지입니다. 아래 댓글에서 소중한 생각을 알려주세요. 좋아요와 공유를 부탁드리며 저희를 도와주세요.

Source:
https://www.tecmint.com/dnf-commands-for-fedora-rpm-package-management/