분류 기타

Linux 패키지 관리자: dnf 대 apt

컨텐츠 정보

  • 조회 624 (작성일 )

본문

패키지 관리자는 응용 프로그램 설치, 관리 및 제거와 같은 일반적인 작업을 동일하게 수행하지만 모든 작업을 동일하게 수행하지는 않습니다.


Linux 시스템에 응용 프로그램을 가져오는 방법에는 여러 가지가 있습니다. Flatpak 및 컨테이너와 같은 일부는 새롭습니다. DEB 및 RPM과 같은 다른 형식은 시간의 테스트를 견뎌온 고전적인 형식입니다.


모든 운영 체제에 대한 범용 설치 프로그램은 없습니다. 오늘날 모든 주요 OS는 소프트웨어를 제공하는 수많은 개발자가 있기 때문에 앱 스토어(자사 및 타사 모두), 끌어서 놓기 설치 및 설치 마법사를 혼합하여 사용합니다. 개발자마다 제공하는 코드에 대한 요구 사항이 다르며 이는 각자 선택한 설치 방법을 알려줍니다.


Linux는 응용 프로그램을 설치, 관리 및 제거하는 명령인 패키지 관리자의 개념을 개척했습니다. 두 가지 일반적인 패키지 관리자 명령은 apt 및 dnf입니다. apt 명령은 DEB 패키지를 관리하고 dnf는 RPM 패키지를 관리합니다.

실제로는 Linux 배포판에서 일반적으로 둘 중 하나를 사용하지만 이 둘은 이론상 서로 엄격하게 배타적이지 않습니다. 이론적으로 한 시스템에서 둘 다 실행할 수 있지만 패키지 설치가 겹치고 버전 관리가 어려우며 명령이 서로 중복됩니다.

그러나 혼합 Linux 환경에서 작업하고 하나의 배포판을 실행하는 워크스테이션과 다른 배포판을 실행하는 서버와 상호 작용하는 경우 둘 다 알아야 할 수도 있습니다.


애플리케이션 검색 


패키지 관리자로 응용 프로그램을 설치하려면 먼저 패키지 이름을 알아야 합니다. 일반적으로 응용 프로그램 이름과 패키지 이름은 동일합니다. 설치하려는 패키지의 이름을 확인하는 프로세스는 dnf 및 apt에서 정확히 동일합니다.


sudo dnf search zsh
====== Name Exactly Matched: zsh ======
zsh.x86_64 : Powerful interactive shell
[...] 


With apt:


sudo apt search zsh
Sorting... Done
Full Text Search... Done
csh/stable 20110502-4+deb10u1 amd64
  Shell with C-like syntax

ddgr/stable 1.6-1 all
  DuckDuckGo from the terminal

direnv/stable 2.18.2-2 amd64
  Utility to set directory specific environment variables

draai/stable 20180521-1 all
  Command-line music player for MPD
[...] 


검색 초기에 apt에서 관련 결과를 얻으려면 정규식을 사용할 수 있습니다.


apt search ^zsh
Sorting... Done
Full Text Search... Done
zsh/stable 5.7.1-1 amd64
  shell with lots of features
[...] 


애플리케이션 패키지 찾기 


일부 명령은 모두 하나의 패키지에 다른 명령과 함께 번들로 제공됩니다. 그런 일이 발생하면 패키지 관리자를 사용하여 필요한 패키지를 제공하는 패키지를 확인할 수 있습니다. dnf 및 apt 명령은 이러한 종류의 메타데이터를 검색하는 방법에 따라 다릅니다.


On dnf:


sudo dnf provides pgrep
procps-ng-3.3.15-6.el8.x86_64 : System and process monitoring utilities
Repo        : baseos
Matched from:
Filename    : /usr/bin/pgrep 


apt 명령은 하위 명령인 apt-file을 사용합니다. apt-file을 사용하려면 먼저 설치한 다음 캐시를 업데이트하라는 메시지를 표시해야 합니다.


sudo apt install apt-file
Reading package lists... Done
Building dependency tree      
Reading state information... Done
The following additional packages will be installed:
  libapt-pkg-perl libexporter-tiny-perl liblist-moreutils-perl libregexp-assemble-perl
The following NEW packages will be installed:
  apt-file libapt-pkg-perl libexporter-tiny-perl liblist-moreutils-perl libregexp-assemble-perl
0 upgraded, 5 newly installed, 0 to remove and 14 not upgraded.
Need to get 297 kB of archives.
After this operation, 825 kB of additional disk space will be used.
Do you want to continue[Y/n] y

sudo apt-file update
[...] 


apt-file을 사용하여 명령어를 검색할 수 있습니다. 명령을 검색하여 매우 넓은 범위의 그물을 던질 수 있지만 명령의 예상 경로를 알고 있다면 더 정확합니다.


sudo apt-file search /usr/bin/pgrep
pgreplay: /usr/bin/pgreplay              
procps: /usr/bin/pgrep 


애플리케이션 설치 


응용 프로그램 설치는 기본적으로 apt 및 dnf와 동일합니다.


sudo apt install zsh 


dnf를 사용하면 동일한 옵션을 사용하여 단일 패키지를 설치할 수 있습니다.


sudo dnf install zsh 


많은 RPM 기반 배포판에는 때로는 피상적으로 관련된 응용 프로그램을 쉽게 설치할 수 있는 하나의 대상으로 수집하는 설치 그룹이 있습니다. 예를 들어, Fedora의 Design Suite 그룹에는 인기 있는 크리에이티브 애플리케이션이 포함되어 있습니다. 하나의 창의적인 응용 프로그램을 원하는 많은 아티스트는 유사한 응용 프로그램을 원할 가능성이 높으며 전체 그룹을 설치하는 것은 디지털 스튜디오 구축을 합리적으로 시작할 수 있는 쉽고 빠른 방법입니다. 그룹 목록을 사용하여 사용 가능한 그룹을 볼 수 있습니다(공백 없이 그룹 이름을 보려면 -v 사용).


sudo dnf group list -v
[...]
Available Groups:
   Container Management (container-management)
   RPM Development Tools (rpm-development-tools)
   Design Suite (design-suite)
   Development Tools (development)
[...] 


group install 하위 명령을 사용하여 RPM 그룹을 설치합니다.


sudo dnf group install design-suite 


@ 표기법을 사용하여 타이핑을 줄일 수 있습니다.


sudo dnf install @design-suite 


애플리케이션 업그레이드 


패키지 관리자를 사용할 때의 한 가지 이점은 패키지 관리자가 설치한 모든 응용 프로그램을 인식한다는 것입니다. 즉, 업데이트된 버전의 애플리케이션을 찾을 필요가 없습니다. 대신 패키지 관리자에게 업데이트를 검색하도록 지시할 수 있습니다.


dnf 및 apt에서 사용하는 하위 명령은 약간 다릅니다. apt는 정기적인 업데이트가 필요한 정보 캐시를 유지하기 때문에 응용 프로그램 업데이트를 위해 upgrade 하위 명령을 사용합니다.


sudo apt upgrade 


대조적으로 dnf는 명령을 사용할 때마다 메타데이터를 업데이트하므로 update 및 upgrade 하위 명령을 서로 바꿔 사용할 수 있습니다.


sudo dnf upgrade 


이것은 다음과 같습니다.


sudo dnf update 


애플리케이션 제거 


어떤 플랫폼에서든 수동으로 응용 프로그램을 제거하려고 시도한 적이 있다면 기본 설정 파일이나 자산 또는 아이콘과 같은 불가피하게 남은 파일이 응용 프로그램을 제거한 후 하드 드라이브 전체에 흩어져 있다는 것을 알고 있을 것입니다. 패키지 관리자를 사용하는 또 다른 이점은 패키지 관리자가 패키지와 함께 설치된 모든 단일 파일을 알고 있다는 것입니다.


sudo dnf remove zsh 


remove 하위 명령은 apt에도 사용됩니다.


sudo apt remove zsh 


실수로 패키지를 제거한 경우 apt를 사용하여 패키지를 제거해도 수정된 사용자 구성 파일은 제거되지 않습니다. 응용 프로그램과 해당 구성 파일을 제거하려는 경우 이전에 제거한 응용 프로그램에서 제거를 사용합니다.


sudo apt purge zsh 


apt와 dnf(퍼지 포함) 모두 홈 디렉토리에서 데이터나 구성 파일을 제거하지 않습니다. 홈 디렉토리에서 데이터를 제거하려면 수동으로 수행해야 합니다(일반적으로 ~/.config 및 ~/.local에 있음).


패키지 관리 배우기 


선택한 Linux 배포가 apt 또는 dnf를 선호하든 명령의 목적은 대체로 동일합니다. 패키지를 설치, 업데이트 및 제거하는 데 도움이 됩니다. 가장 일반적인 패키지 관리자인 이 두 가지는 서로의 가장 중요한 구문 요소를 대부분 반영하므로 이들 사이를 전환하는 것은 매우 쉽습니다.


각각에는 저장소 관리와 같은 몇 가지 고급 기능이 있으며 상당히 다양하지만 이러한 기능은 검색 및 설치의 고전적인 순서만큼 자주 실행되지 않는 경향이 있습니다.


더 자주 사용하는 패키지 관리자에 관계없이 apt 치트 시트dnf 치트 시트를 다운로드하여 가장 필요할 때 가장 중요한 구문을 가까이에 둘 수 있습니다.


https://opensource.com/article/21/7/dnf-vs-apt