마니의 공부방/Os_Linux

[linux] 리눅스 패키지 관리 시스템 비교 : apt, dnf, yum

 

최근 집에서 놀던 라즈베리파이4 개인 개발서버로 셋팅을 시작했다.

4기가 이상의 램을 위해서 centos6 64bit를 설치했다.

 

os설치를 마치고 설정을 하려고 봤더니 이전에 사용했던 yum에서 기본 패키지 관리를 dnf로 바뀌었다고 한다.

이에 dnf와 yum 더불어 apt, pkg까지 패키지 관리 차이점을 간단히 공부해본다.

 

패키지 관리

패키지 파일은 일반적으로 설치 스크립트와 함께 컴파일된 바이너리 및 기타 리소스를 포함하는 압축파일이다.

또한 linux(unix)에서는 예전부터 패키지 설치때 의존성에 따라 필요한 기타 패키지 목록인 메타 데이터를 포함하고 있다.

계열별 패키지 파일 포맷과 패키지 관리 도구는 다음과 같다.

데비안 .deb apt, apt-cache, apt-get,dpkg
우분투 .deb apt, apt-cache, apt-get,dpkg
CentOS .rpm yum
페도라 .rpm dnf
FreeBSD 포트, .txz make, pkg

 

Debian/Ubuntu용 APT 패키지 관리

Ubuntu를 포함한 Debian과 유사한 시스템의 경우 기본 상위 수준의 패키지 관리자로 apt를 사용한다.

특정 파일을 처리하는 단위는 dpkg로 파일유형은 .deb이다.

 

CentOS의 Yum 패키지 관리

Yum은 RedHat계열의 보안성을 지향하는 패키지 관리툴이다. 파일형식은 .rpm이다.

설치하고자 하는 소프트웨어에 종속되는 모든 패키지를 설치하거나 업그레이드가 용이한 이점이 있다. 

 

Fedora의 Dnf 패키지 관리

CentOs는 RedHat의 무료버전이지만 Fedora에서 두 시스템에 대한 연구개발을 진행하여, Fedora 22버전에서부터 yum에서 dnf로 기본 패키지 관리가 변경되었고, CentOS 8에서 dnf가 기본 패키지 관리로 변경되었다.

dnf는 yum의 개선된 버전으로 인식하면 편하다.

여러 저장소 지원원종속성 계산에 depsolving기술 사용
yum보다 빠르게 실행되고 메모리 사용량이 적음
.RPM파일을 일관되게 처리
Python으로 작성되었으며, Python2와 3 모두에서 실행
동작을 수정하고, 새로운 명령어를 추가할수있는 자체 플러그인 존재

 

local repository

apt/yum/dnf 등은 local repository를 두고 remote에서 관련 패키지를 가져와서 설치한다.

고로 local repository에 추가적으로 remote주소 추가/삭제할 수 있다. 개인이 올려둔 remote주소도 괜찮은 경우가 있지만, 다소 의존성 패키지설정이 완벽하게 되지 않은곳들도 있어서 왠만하면 해당 패키지를 정식으로 올려둔곳을 사용하는게 좋다.

물론 자체 repository를 설정하여 사용할수도 있다.(사내망의 패키지 등)

 

좋은 예로 apt의 update와 upgrade를 들수있다.

# apt update 는 단순히 패키지 업데이트가 존재하는지 저장소 업데이트만 진행하는 과정이고, 

# apt upgrade 는 실제로 패키지를 최신 패키지로 변경하는 작업이다.

 

단, yum의 update와 upgrade는 apt와 다르다.

yum의 update와 upgrade는 모두 패키지의 실제 업데이트 작업이 수행된다.

단, 두 명령어는  '패키지가 업데이트되면서 더이상 사용되지 않는 파일이나 패키지를 삭제'하겠느냐 여부를 기본으로 하는지 아니면 옵션값으로 받는지가 주된 차이점이다. (-obsoletes)

 

man 명령어 이용

당연한 이야기지만 패키지 관리 도구들은 man 페이지에서 사용법을 제공한다.(너무 당연~)

 

"항상 완벽한 사람은 없다, 노력하고 공부하고 실수를 인정하는 수밖에."
이글에 잘못된 내용이 있거나, 놓친부분을 아시는 분은 댓글로 알려주시면 감사하겠습니다.