프로필사진

Go, Vantage point

가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.


Github | https://github.com/overnew/

Blog | https://everenew.tistory.com/





티스토리 뷰

반응형

 

 

리눅스 계열의 OS를 사용하면 apt, yum, dnf와 같은 명령어를 사용해 패키지를 다운로드한다.

이때 각 명령어가 어떻게 다른지 확인해 보자.

 

 

 

리눅스 배포판

일단 리눅스는 각 배포판에 따라서 사용되는 패키지 다운/설치 명령어가 다르다.

대표적으로는 데비안 계열과 레드헷 계열이 있다.

 

 

 

 

 

1. 데비안 계열의 경우

데비안 계열의 대표적인 OS가 바로 Ubuntu이다.

Ubuntu에서는 .deb 형식의 컴파일된 바이너리 패키지 포맷을 사용한다.

 

 

 

dpkg

이 .deb 형식의 데비안 패키지 관리 시스템이 dpkg이다.

dpkg는 .deb 패키지의 설치, 삭제, 정보 제공을 위해 사용되는 저레벨 도구이다.

 

문제는 우리가 사용하는 대부분의 패키지들은 다른 기본 패키지들에게 의존성을 가진다는 것이다.

dpkg로 패키지를 제대로 설치하고 싶다면, 의존성을 가진 패키지들의 .deb을 모두 구해서 우선순위에 따라 순서대로 직접 명령어로 설치를 해주어야 한다.

 

따라서 고급 도구인 APT가 주로 사용된다.

 

 

 

APT (Advanced Packaging Tool)

APT는 사용해 보면 알겠지만 아래와 같은 단순하 명령어 만으로도, 해당 패키지와 의존성이 있는 모든 .deb 파일을 다운로드하여 순서대로 설치해 준다.

 

sudo apt-get install  <패키지 명>

 

 

apt-get을 사용하면, 일단 /etc/apt/sources.list에서 패키지를 가져올 수 있는 위치 정보를 확인한다.

(한국판을 설치하면 kr.archive.ubuntu.com로 설정될 수 있는데, 카카오에서 제공하는 미러서버인 mirror.kakao.com로 바꾸면 더 빠른 속도로 .deb 파일을 다운로드할 수 있다고 한다.)

 

 

이후 대상 패키지가 의존성을 가지는 목록을 서버로부터 제공받는다.

아래의 페이지를 확인해 보면 알 수 있듯이, 서버에서 계산을 하는 것이 아니라 패키지 제공자들이 이미 의존성 파일 목록들을 제공하기 때문에 바로 확인이 된다.

 

https://ubuntu.pkgs.org/20.04/ubuntu-main-amd64/bind9-dnsutils_9.16.1-0ubuntu2_amd64.deb.html

 

이후 install을 진행하면 해당 .deb 파일들이 자동 다운되면서 설치가 진행된다.

 

 

ubnutu를 사용하다 보면 자주 사용되는 apt-get update도 이러한 패키지들과 의존성 목록을 최신 데이터로 유지하기 위해 sources.list를 업데이트하는 명령어이다.

 

 

 

 

 

 

 

2. 레드햇 계열의 경우

 

레드햇 계열의 대표적인 OS는 RedHat와 CentOS이다.

레드햇  계열에서는 .rpm 형식의 컴파일된 바이너리 패키지 포맷을 사용한다.

 

위와 동일하게 rpm이 저수준, yum이 rpm을 활용해 의존성 패키지까지 설치해 주기 때문에 고수준의 패키지 관리 시스템이다.

명령어도 거의 유사하게 사용할 수 있다.

 

그렇다면 dnf는 무엇일까?

 

 

DNF

DNF는 Yum의 낮은 성능, 많은 메모리 사용량, 비효율적인 중복 의존성 해결 메커니즘 등의 문제를 해결하기 위해 개발되었고,Yum과 달리, 외부 라이브러리인 libsolv를 통해 의존성 문제를 처리한다.
- 출처 위키백과-

 

또한 yum은 python으로 개발되었지만, DNF는 C와 C++로도 작성되었다고 한다.

성능뿐만 아니라 yum에서 발생하는 의존성 문제도 있기 때문에, 이제는 후신인 DNF를 정식으로 사용되는 듯하다.

 

 

 

 

 

 

 

 

참조

https://minhan2.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%ED%8C%A8%ED%82%A4%EC%A7%80-%EB%B9%84%EA%B5%90aptdpkgyumrpm

https://zetawiki.com/wiki//etc/apt/sources.list

https://velog.io/@broccoliindb/apt-get-%EC%99%80-dpkg%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90

https://ko.wikipedia.org/wiki/Deb_(%ED%8C%8C%EC%9D%BC_%ED%98%95%EC%8B%9D)

https://ko.wikipedia.org/wiki/Dpkg

https://ko.wikipedia.org/wiki/%EC%96%B4%EB%93%9C%EB%B0%B4%EC%8A%A4%ED%8A%B8_%ED%8C%A8%ED%82%A4%EC%A7%95_%ED%88%B4

 

https://ko.wikipedia.org/wiki/RPM_%ED%8C%A8%ED%82%A4%EC%A7%80_%EB%A7%A4%EB%8B%88%EC%A0%80

https://www.fedoralinux.or.kr/forums/topic/20625

 

 

 

반응형
댓글
반응형
인기글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함