centos8에서 dnf와 yum의 차이점은 무엇입니까?

yum과 DNF는 기본적으로 종속성과 소프트웨어 저장소를 관리하고, RPM을 활용하여 패키지를 실제로 설치, 다운로드 및 제거하는 프로그램입니다. DNF는 yum의 후속 버전이며, yum과의 주요 차이점은 속도 향상 및 기타 측면 개선을 위해 openSUSE의 ZYpp 패키지 관리자 라이브러리를 사용한다는 것입니다.


먼저 RPM 패키지를 이해해 보겠습니다.
RPM은 패키지 포맷이자 저수준 패키지 관리자입니다. 저수준 패키지 관리자는 기본적인 기능을 수행합니다. 즉, 패키지를 설치해 주지만, 모든 종속성이 이미 설치된 경우에만 사용자가 설치하도록 지정한 패키지를 제거합니다. 종속성과 저장소를 관리하지는 않습니다. 데비안의 dpkg나 슬랙웨어의 pkgtools와 같은 다른 저수준 패키지 관리자처럼 RPM은 저장소가 필요하지 않습니다. 따라서 종속성이 누락된 패키지를 설치하려고 하면 자동으로 종속성을 해결하지 못하므로 수동으로 다운로드하여 설치해야 합니다. RPM 종속성 패키지를 직접 검색한 후 RPM의 다운로드 URL을 지정해야 합니다.
DNF가 처음 등장했습니다
Fedora 팬이시라면 22 버전으로 업그레이드하셨다면 큰 변화를 느끼셨을 겁니다. 익숙하고 오랫동안 사용되어 온패키지 관리자는 사라졌습니다. 그 자리에는 훨씬 더 강력하고 스마트한 Dandified Yum(DNF)이 들어섰습니다.
yum을 대체하기 위해 DNF 패키지 관리자를 출시한 이유는 무엇이며, 새로운 패키지 관리 시스템은 어떻게 사용하나요?
시작하기 전에, 명령줄을 전혀 사용하지 않는 사람(Fedora 시스템에서는 드물겠지만)이라면 이상하게 보이지 않을 것입니다. GUI 프런트엔드는 (거의) 그대로 유지됩니다. 즉, 데스크톱 화면은 그대로입니다. 하지만 명령줄에서 소프트웨어를 설치하는 것을 선호한다면 명령을 입력할 때 새로운 텍스트가 빠르게 표시되는 것을 볼 수 있을 것입니다.
yum이 제거된 이유
Yum이 DNF로 업그레이드된 데에는 세 가지 주요 이유가 있습니다. 이 세 가지 이유는 Yum을 폐기해야 할 만큼 오래되고 심각한 문제입니다.
문서화되지 않은 API - 이는 개발자에게 더 많은 작업을 의미했습니다. 개발자가 필요한 작업을 수행하려면 종종 Yum 코드베이스를 탐색하여 호출을 작성해야 했습니다. 이는 개발 속도를 크게 저하시켰습니다.
Python 3 – Fedora는 Python 3으로 전환 중이고 Yum은 이러한 변경 사항을 견디지 못할 것이지만 DNF는 Python 2 또는 Python 3에서 실행할 수 있습니다.
손상된 종속성 해결 알고리즘 - 이는 오랫동안 Fedora 패키지 관리자의 아킬레스건이었습니다. DNF는 최첨단 만족성(SAT) 기반 종속성 해결 알고리즘을 사용합니다. 이는 SUSE와 openSUSE의 Zypper에서 사용되는 것과 동일한 유형의 종속성 해결 도구입니다.
간단히 말해서, Yum은 오래되어서 최신 Fedora 배포판의 엄격함을 견딜 수 없습니다.
DNF의 장점은 무엇인가요?
이 문제는 최종 사용자와 개발자, 두 가지 관점에서 살펴봐야 합니다. 최종 사용자라면 Yum에서 DNF로 전환하는 것은 아주 간단한 한 가지, 더 안정적인 환경을 의미합니다. 이러한 안정성의 원천은 DNF의 뛰어난 종속성 해결 능력입니다. 이제 패키지 설치 시 시스템이 종속성을 해결하지 못하는 경우는 매우 드뭅니다. 시스템이 더 똑똑해진 것입니다. Yum의 종속성 알고리즘은 애초에 제대로 작동하지 않았습니다. DNF의 SAT 기반 종속성 해결기가 이 문제를 해결합니다.
최종 사용자는 패키지 설치 시 메모리 사용량도 줄어들고, 설치 및 업그레이드 속도도 빨라집니다. 특히 마지막 사항이 중요합니다. Yum 도구를 사용하여 업그레이드를 실행하면 (특히 apt-get이나 zypper 같은 도구에 비해) 엄청나게 느려지기 시작합니다.
개발자라면 DNF로 전환하면 더욱 효율적이고 안정적으로 작업할 수 있습니다. 공개된 모든 API는 문서화되어 있습니다. 개발자에게 또 다른 이점은 C 언어가 구현된다는 것입니다. 개발자들은 이미 Hawkeye와 librepo(소프트웨어 저장소에서 패키지와 메타데이터를 다운로드하는 C 및 Python 라이브러리)를 개발했습니다. 또한 앞으로 더 많은 C 기반 API를 출시할 예정입니다. C가 여전히 널리 사용되는 언어(현재 TIOBE 순위 2위)라는 점을 고려하면, 이는 개발자에게 환영할 만한 변화입니다.
dnf 명령어를 어떻게 사용하나요?
최종 사용자에게 좋은 소식이 있습니다. Yum에서 DNF로 마이그레이션하면 기억력만 더 나빠질 뿐입니다. 명령줄 설치를 위해 터미널 창을 열면 "yum install php" 명령을 입력하는 경우가 많습니다. 하지만 이제 더 이상 그럴 필요가 없습니다. "dnf install php"라는 더 세련된 명령이 등장할 것입니다.
yum에서 dnf로 전환
도로에 몇 가지 문제가 있을 것입니다. 예, DNF는 Yum의 대체재입니다. Yum의 고급 사용자가 아니라면 마이그레이션 중에 문제가 발생하지 않을 것입니다. 그러나 여전히 발견해야 할 몇 가지 문제가 있습니다. 이전의 yum update --skip-broken 명령을 살펴보겠습니다. 이 명령을 사용하면 업데이트가 실행되지만 종속성이 손상된 모든 패키지는 건너뜁니다. 반면 DNF는 기본적으로 이러한 손상된 패키지를 건너뜁니다. 이를 위해 "skip broken" 플래그를 포함할 필요는 없습니다. 손상된 패키지를 보고하기 위해 DNF가 필요한 경우 DNF update를 실행한 다음 DNF check-update를 실행해야 합니다. 일부 사용자는 이 동작을 좋아하지 않습니다. 간단한 프로세스에 추가 단계가 추가되기 때문입니다. 고급 사용자의 경우 DNF가 Yum보다 더 많은 작업이 될 수 있습니다. 반면 일반 사용자의 경우 DNF는 yum 명령을 DNF 명령으로 바꾸는 것에 불과합니다.
Yum에서 DNF로 마이그레이션하는 것은 잠시 동안은 조금 어색할 수 있습니다. 특히 예상치 못한 사용자가 명령줄을 열고 yum을 사용하려고 할 때 더욱 그렇습니다. 하지만 그때도 경고 메시지가 표시됩니다.
Yum 명령어는 더 이상 사용되지 않습니다. 대신 dnf를 사용하세요.
자세한 내용은 'man dnf' 및 'man yum2dnf'를 참조하세요.
yum에서 DNF로 트랜잭션 메타데이터를 전송하려면 'dnf migrate'를 실행하세요.
중국어로 번역하면 yum 명령이 더 이상 사용되지 않으므로 dnf를 사용하세요.
분명 뭔가 바뀌었네요. 하지만 개발자들이 경고에서 "man dnf"라고만 말하는 대신 좀 더 명확하게 표현했어야 했다고 생각합니다. 대신 다음과 같은 문구가 있었으면 좋겠습니다.
yum 명령은 더 이상 사용되지 않습니다. 새 시스템을 사용하려면 명령에서 "yum"을 "dnf"로 바꿔주세요.
이런 메시지가 표시되면 모든 터미널 사용자는 "yum"을 "dnf"로 바꾸기만 하면 됩니다.
yum과 DNF는 기본적으로 종속성과 소프트웨어 저장소를 관리하고, RPM을 활용하여 패키지를 실제로 설치, 다운로드 및 제거하는 프로그램입니다. DNF는 yum의 후속 프로그램으로, yum과의 주요 차이점은 openSUSE의 ZYpp 패키지 관리자 라이브러리를 사용하여 속도 향상 및 기타 여러 측면을 개선한다는 것입니다. (제가 수행한 설치 속도 테스트 결과 DNF는 실제로 yum에 비해 유의미한 이점이 없는 것으로 나타났습니다.)

점수

댓글남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다