본문 바로가기
개발/linux

package manager in linux (종류, 구조)

by amkorousagi 2022. 10. 22.

pakage manager in linux

사용하는 이유


프로그램의 설치, 업그레이드, 설정 및 제거하는 프로세스를 자동화하기 위해서입니다.

의존성(또는 종속성;dependency) 관리 또한 package manager의 목적입니다.

 

package manager in OS and Computer Language


운영체제에서 필요한 소프트웨어를 설치 및 관리할 때 사용하는 프로그램을 package manager라고 부릅니다.

하지만 컴퓨터 언어로 개발할 때 패키지를 설치하고 관리할 때 사용하는 프로그램도 package manager라고 부릅니다.

(컴퓨터 언어마다 코드를 나누고 관리하는 방식이 다르기 때문에 다른 package manager를 사용합니다.)

 

운영체제 package manager

  • apt : linux(debian 계열) CLI(Command Line Interface)
  • apt-get : linux(debian 계열) CLI
  • aptitude : linux(debian 계열) GUI(Graphic User Interface)
  • dpkg : linux(debian 계열)  CLI
  • apk : linux(alpine linux) CLI
  • yum : linux(redhat 계열) CLI
  • rpm : linux(redhat 계열) CLI
  • pacman : linux(arch 기반) CLI
  • synapic : linux package manager들 GUI 버전
  • octopi : pacman GUI 버전

+

linux 배포판들은 서로 다른 계열이라도 호환이 되는 경우가 많습니다.

예를 들어, debian 계열인 ubuntu에서도 apt 이외에도 yum을 사용할 수 있습니다.

 

+

debian 계열의 패키지 파일은 .deb (debian)가 확장자입니다.

radhat 계열의 패키지 파일은 .rpm (redhat package manager)이 확장자입니다.

 

+

apt install <package name>이나 yum install <package name>명령으로도 패키지를 설치할 수 있지만,

curl이나 wget과 같은 명령어로 .deb나 .rpm 파일을 직접 다운로드해서

dpkg -i <.deb file>이나 rpm -i <.rpm file> 명령으로 설치할 수 있습니다.

 

apt와 yum은 인터넷을 통해 레포지토리에서 패키지 파일을 다운로드하고 설치하지만,

dpkg와 rpm은 이미 존재하는 패키지 파일을 통해 설치합니다.

(인터넷이 제한된 내부망에서 USB로 패키지 파일을 옮겨와 설치하는 경우 dpkg와 rpm이 유용합니다.)

 

apt와 yum은 package name을 실행 인자로 주지만,

dpkg와 rpm은 packge file name을 실행 인자로 줍니다.

 

apt와 yum은 설치된 각 패키지를 최신 버전으로 update하는 기능을 제공하지만,

dpkg와 rpm은 그렇지 않습니다

 

+

윈도우도 package manager가 있습니다.

  • winget : window, 기본적으로 설치됨
  • choco : window, 따로 설치해야 함

 

컴퓨터 언어 package manager

  • pip : python
  • npm : javascript
  • yarn : javascript

 

package manager 구조


package manager design

사용자가 특정 패키지를 pm(package manager)에게 요청합니다.

pm은 pm에 등록된 repository에서 요청된 패키지를 찾아 다운로드합니다.

pm은 다운로드한 패키지를 설치합니다. 

 

패키지 : 바이너리 파일(또는 소스 파일)과 메타 정보(패키지 이름과 버전 등), 종속성 정보로 구성됩니다.

레포지토리 : 필요한 패키지를 찾고 다운로드할 수 있는 웹서버입니다. e.g.) Packagist

(일단 웹서버이기 때문에 개인이 레포지토리를 호스팅 할 수도 있습니다.(PPA)) 

 

+

패키지는 배포용과 개발용이 있습니다.

배포용 : dist 옵션입니다. 릴리스 버전, stable 버전이라고 부릅니다.

개발용 : source 옵션입니다.

 

+

사용자가 update 명령을 하면 pm은 로컬에 저장되어 있는 설치된 패키지 리스트와 종속성을 보고 레포지토리에 요청하여 업데이트된 패키지를 다운로드하고 설치합니다.

사용법


각각의 pacakage manager 사용법은 다음 포스팅에서 다루겠습니다.

 

참고 자료


 

 

Package manager - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Software tools for handling software packages Synaptic, example of a full-featured package manager A package manager or package-management system is a collection of software tools that

en.wikipedia.org

 

 

 

Package Manager

Package Managers are used to automate the process of installing, upgrading, configuring, and removing programs. There are many package managers today for Unix/Linux-based systems. By mid-2010s, package managers made their way to Windows as well. Package ma

devopedia.org

 

 

Repositories - 저장소

Repositories - 저장소 이번 챕터에서는 패키지와 저장소에 대한 개념, 어떤 종류의 저장소가 사용가능한지 그리고 이것들이 어떻게 동작하는지 설명하겠습니다. Concepts 먼저 실제의 다양한 형태의

xpressengine.github.io

 

 

 

댓글