맨위로가기

패키지 관리자

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

패키지 관리자는 소프트웨어 패키지를 찾고, 설치, 유지 관리 또는 제거하는 시스템이다. 초기에는 IBM AIX의 SMIT와 같은 도구로 시작되었으며, CPAN의 등장과 함께 저장소에서 패키지를 다운로드하고 종속성을 자동으로 해결하는 기능을 갖추게 되었다. 주요 기능으로는 파일 아카이브, 무결성 검사, 소프트웨어 저장소 검색, 패키지 그룹화, 종속성 관리 등이 있다.

패키지 관리자는 저장소 구독, 소프트웨어 설치 및 제거, 의존 관계 해결, 설정 관리 등의 기능을 제공하며, 운영 체제에 따라 다양한 패키지 형식과 관리 도구가 존재한다. Debian 계열의 APT, Red Hat 계열의 RPM, Arch Linux의 pacman 등이 대표적이며, Nix, Snap, Flatpak과 같은 배포판 비의존적인 관리자도 있다. 또한, 프로그래밍 언어별로도 Cargo, RubyGems, npm 등과 같은 패키지 관리 시스템이 존재하며, 데이터 의존성 관리 시스템으로 발전하여 데이터의 배포 및 관리를 용이하게 하는 역할도 수행한다. 이안 머독은 패키지 관리가 리눅스 발전에 큰 영향을 미쳤다고 평가했으며, 패키지 관리자 개발자를 위한 컨퍼런스인 PackagingCon이 개최되기도 한다.

더 읽어볼만한 페이지

  • 패키지 관리 시스템 - 제거 프로그램
    제거 프로그램은 컴퓨터에 설치된 소프트웨어를 완전히 제거하기 위해 로거, 제거 프로그램, 분석기, 감시자 등의 도구를 활용하며, 설치 기록을 바탕으로 프로그램 및 관련 파일을 삭제하고 레지스트리를 정리하는 기능을 제공한다.
  • 패키지 관리 시스템 - 의존성 지옥
    의존성 지옥은 애플리케이션의 라이브러리 간 복잡한 관계에서 발생하는 문제로, 소프트웨어 설치 및 관리를 어렵게 만들며, 다양한 형태와 해결책이 존재한다.
  • 소프트웨어 배포 - 셰어웨어
    셰어웨어는 일정 기간 무료 사용 또는 기본 기능 무료 제공 후 추가 기능 유료 구매 방식으로 배포되는 소프트웨어의 한 종류이며, 다양한 형태로 제공되고 인터넷을 통해 배포되어 라이선스 키를 통해 정식 버전을 사용할 수 있다.
  • 소프트웨어 배포 - 디지털 배급
    디지털 배급은 온라인을 통해 콘텐츠를 유통하는 방식으로, 음악, 비디오, 도서, 게임 등 다양한 분야에 적용되어 전통적인 소매업에 영향을 미치며, 신인 아티스트에게 기회를 제공하지만, 호환성 문제와 검열 가능성 등의 과제를 안고 있다.
패키지 관리자
개요
종류응용 소프트웨어
목적소프트웨어 패키지의 설치, 업그레이드, 구성, 제거를 자동화
기능
소프트웨어 설치필요한 소프트웨어 패키지를 다운로드
컴파일 및 설치 과정을 자동화
의존성 관리
소프트웨어 업그레이드설치된 소프트웨어의 최신 버전 확인
업데이트 및 패치 자동 설치
기존 설정 유지
소프트웨어 제거불필요한 소프트웨어 패키지 제거
관련된 파일 및 설정 정리
소프트웨어 관리설치된 소프트웨어 목록 관리
소프트웨어 정보 (버전, 설명, 의존성 등) 제공
소프트웨어 저장소 관리
작동 방식
저장소중앙 소프트웨어 저장소에서 패키지 정보 및 파일을 다운로드
의존성 해결필요한 다른 패키지들을 자동으로 식별하고 설치
설치 및 제거패키지 파일들을 적절한 위치에 복사하고 설정
장점
편리성소프트웨어 설치 및 관리를 간소화
복잡한 명령어나 설정 없이 작업 수행 가능
의존성 관리필요한 모든 의존성 패키지를 자동으로 처리
소프트웨어 충돌 방지
일관성표준화된 방식으로 소프트웨어를 설치하고 관리
다양한 환경에서 일관된 동작 보장
보안최신 보안 업데이트 및 패치를 쉽게 적용
알려진 취약점으로부터 시스템 보호
주요 패키지 관리자
데비안 기반APT (dpkg 사용)
aptitude
Synaptic
레드햇 기반RPM
Yum
DNF
기타 리눅스Pacman (아치 리눅스)
Portage (젠투 리눅스)
zypper (openSUSE)
macOSHomebrew
MacPorts
pkgsrc
윈도우Chocolatey
Scoop
NuGet
크로스 플랫폼npm (Node.js)
pip (파이썬)
Composer (PHP)
Conda (Anaconda)
활용
운영체제소프트웨어 배포 및 업데이트
어플리케이션어플리케이션 및 라이브러리 설치 및 관리
개발개발 도구 및 라이브러리 설치 및 관리
서버 관리서버 소프트웨어 설치, 업데이트 및 관리

2. 역사

초창기 패키지 관리자로는 IBM AIX의 SMIT(및 백엔드 installp)가 있었다. SMIT는 1989년 AIX 3.0과 함께 도입되었다.

1994년경의 초창기 패키지 관리자는 자동 의존성 해결 기능[3]이 없었지만, 실행 중인 시스템에서 소프트웨어를 추가하고 제거하는 과정을 이미 획기적으로 단순화할 수 있었다.[4]

1995년경, CPAN을 시작으로 패키지 관리자는 저장소에서 패키지를 다운로드하고, 종속성을 자동으로 해결하며, 필요에 따라 설치하는 작업을 시작하여 시스템에서 소프트웨어를 설치, 제거 및 업데이트하는 것을 훨씬 쉽게 만들었다.[5]

3. 기능

새로운 소프트웨어를 다운로드하기 위해 사용되는 패키지 관리자의 그림. 수동 작업에는 라이선스 계약 동의 또는 일부 패키지별 구성 옵션 선택이 포함될 수 있다.


소프트웨어 패키지는 컴퓨터 프로그램과 배포에 필요한 메타데이터를 포함하는 아카이브 파일이다. 컴퓨터 프로그램은 먼저 컴파일하고 빌드해야 하는 소스 코드 형태일 수 있다.[6] 패키지 메타데이터에는 패키지 설명, 패키지 버전, 종속성(사전에 설치해야 하는 다른 패키지)이 포함된다.

패키지 관리자는 사용자의 명령에 따라 소프트웨어 패키지를 찾고, 설치하고, 유지 관리하거나, 제거하는 임무를 맡는다. 일반적인 기능은 다음과 같다.

  • 패키지 아카이브를 추출하기 위해 파일 아카이버와 함께 작업한다.
  • 체크섬과 디지털 인증서를 각각 확인하여 패키지의 무결성과 진위성을 보장한다.
  • 소프트웨어 저장소 또는 앱 스토어에서 기존 소프트웨어를 검색, 다운로드, 설치 또는 업데이트한다.
  • 사용자 혼란을 줄이기 위해 기능을 기준으로 패키지 그룹화한다.
  • 종속성 지옥을 방지하기 위해 패키지가 필요한 모든 패키지와 함께 설치되도록 종속성을 관리한다.


이 외에도 저장소 구독, 소프트웨어 설치 및 제거, 의존성 해결, 설정 관리 등의 기능이 있다.

3. 1. 저장소 관리

사용자가 시스템에 설치할 수 있는 소프트웨어 종류를 더 잘 제어하기 위해 소프트웨어는 종종 여러 소프트웨어 저장소에서 다운로드된다.[8]

인터넷상의 패키지 저장소를 지정하여 필요에 따라 로컬 패키지 목록을 갱신한다. 또한, 패키지 이름이나 설명을 검색하여 필요한 패키지를 찾을 수 있다.

3. 2. 소프트웨어 설치 및 제거



패키지 이름이나 파일을 지정하여 소프트웨어를 다운로드, 설치, 제거할 수 있다.[6] 소스 코드나 설정 파일을 패키지화하여 설치할 수 있으며, 설정 파일 등을 완전히 삭제할 수도 있다.

3. 3. 의존성 해결

패키지 관리자는 어떤 패키지에 필요한 소프트웨어를 자동으로 설치하거나 갱신할 수 있다. 또한, 동시에 설치 또는 갱신할 수 없는 소프트웨어 패키지의 설치 및 갱신을 회피할 수 있다.[7]

최신 패키지 관리자는 OPENSTEP의 ''프레임워크'' 시스템처럼 여러 버전의 라이브러리를 병렬로 설치할 수 있게 함으로써 이러한 문제를 대부분 해결했다. 젠투 포티지의 ''슬롯''과 같이 모든 종류의 종속성, 심지어 안정적인 ABI가 존재하지 않는 글래스고 하스켈 컴파일러에 의해 빌드된 동적 라이브러리처럼 서로 다른 컴파일러 버전으로 컴파일된 패키지도 다른 패키지가 링크되거나 설치된 버전을 지정할 수 있도록 한다.[7]

3. 4. 설정 관리

패키지 관리자는 패키지의 설정 스크립트를 사용하여 자동 설정을 지원한다. 또한, 기능이 충돌하는 소프트웨어 간 우선순위를 설정할 수 있다.[6]

3. 5. 명령어 비교

wikitext

여러 패키지 관리 시스템은 명령어는 다르지만, 대부분 비슷한 기능을 제공하여 어느 정도 변환이 가능하다. 다음은 각 패키지 관리 시스템의 패키지 설치, 업데이트, 제거와 같은 기본 명령어의 예를 비교한 것이다.

기본 명령 비교 (OS 패키지 관리 시스템만)
설치업데이트제거
APT[40][41]apt install <패키지 이름>apt upgrade [패키지 이름]apt remove <패키지 이름>
DNF / yum[42][43]dnf install <패키지 이름>dnf update [패키지 이름]dnf remove <패키지 이름>
Homebrew[44]brew install <패키지 이름>brew updatebrew remove <패키지 이름>
Nix[45]nix-env -i <패키지 이름>nix-env -u [패키지 이름]nix-env -e <패키지 이름>
Pacman[46]pacman -S <패키지 이름>pacman -Syupacman -R <패키지 이름>
ZYpp[47][48]zypper install <패키지 이름>zypper update [패키지 이름]zypper remove <패키지 이름>


4. 패키지 형식

패키지 관리자는 관리할 수 있는 패키지 형식과 메타데이터에 의존한다. 즉, 패키지 관리자는 종속성과 같은 적절한 메타데이터와 함께 특정 패키지 관리자를 위해 묶인 파일 그룹이 필요하다. 종종 핵심 유틸리티 세트가 이러한 패키지에서 기본적인 설치를 관리하며, 여러 패키지 관리자가 이러한 유틸리티를 사용하여 추가 기능을 제공한다.

예를 들어, yum은 rpm을 백엔드로 사용하며, 시스템 네트워크 유지 관리를 위한 간단한 구성과 같은 기능을 추가하여 백엔드의 기능을 확장한다. Synaptic Package Manager는 핵심 기능을 위해 dpkg에 의존하는 Advanced Packaging Tool (apt) 라이브러리를 사용하여 그래픽 사용자 인터페이스를 제공한다.

Alien은 Linux 패키지 형식 간에 변환하는 프로그램으로, Linux Standard Base (LSB) 호환 .rpm 패키지, .deb, Stampede (.slp), Solaris (.pkg) 및 Slackware (.tgz, .txz, .tbz, .tlz) 패키지 간의 변환을 지원한다.

모바일 운영 체제에서 Google Play는 안드로이드 애플리케이션 패키지 (APK) 패키지 형식을 사용하고, Microsoft Store는 APPX 및 XAP 형식을 사용한다. (Google Play와 Microsoft Store 모두 동명의 패키지 관리자를 가지고 있다.)

운영 체제에 소프트웨어를 추가 설치하는 경우, 소프트웨어 관련 파일 일체를 묶은 "패키지"가 사용된다. 패키지 형식은 여러 가지가 있지만, 사용되는 형식은 운영 체제에 따라 제한되는 경우가 많다.

4. 1. 실행 형식이 아닌 것

다음 패키지는 설치되는 데이터 및 종속성만 포함하며, OS에 탑재된 패키지 관리 시스템을 사용하여 설치할 수 있다.

  • RPM 형식 패키지: Red Hat Linux용으로 개발된 패키지 형식. Red Hat Enterprise Linux 외에도 Turbolinux나 Vine Linux 등에서도 사용된다.
  • deb 형식 패키지: Debian용으로 개발된 패키지 형식. dpkg 및 APT를 사용하여 설치 및 관리된다.
  • FreeBSD Ports|label=ports영어 형식 패키지: FreeBSD에서 사용되는 패키지 형식.
  • pkg 형식 패키지: Solaris에서 사용되는 패키지 형식. FreeBSD 10.0에서도 이전에는 pkgng라고 불리던 형식이 pkg(8)로 채택되었다.

4. 2. 실행 형식

InstallShield 기반 패키지는 Windows를 비롯하여 macOS나 Linux 등의 PC-UNIX용 인스톨러를 만들 수 있다.[1] 셸 스크립트 기반 패키지는 주로 Bash로 작성되며, 여러 배포판을 대상으로 하는 리눅스용 독점 소프트웨어에 사용되는 형식이다.[1] 이러한 형식은 소프트웨어 아카이브에 설치 처리 메커니즘을 추가한 것으로, Mac OS나 Windows에서 자주 사용되며, 리눅스 배포판용 소프트웨어에서도 드물게 이용된다.[1] 의존 관계 해결 및 설치는 패키지가 독자적으로 수행한다.[1]

5. 주요 패키지 관리 도구

주요 패키지 관리 도구는 다음과 같다.


  • Debian 계열:
  • dpkg: deb 형식 패키지를 다루는 Debian GNU/Linux에서 개발된 도구이다.
  • APT: dpkg의 프런트 엔드. apt-get, apt-cache 등의 명령어로 구성되며, 패키지 업데이트를 자동 처리한다.
  • aptitude: TUI 환경에서 작동하는 메뉴 형식 도구. 내부적으로 APT를 호출한다.
  • synaptic: GUI(X Window System) 환경에서 작동하는 메뉴 형식 도구. APT를 호출하여 처리한다.
  • apt-watch / update-manager: GUI 환경에서 작동하는 자동 업데이트 애플릿. 레드햇의 RHN과 유사한 기능을 제공하며 APT를 호출한다.
  • -
  • Red Hat 계열:
  • RPM: rpm 형식 패키지를 다루는 레드햇 리눅스에서 개발된 도구. 소스에서 rpm 패키지를 생성하는 기능도 있다.
  • apt-rpm, aptitude, synaptic: deb 형식 대응 도구의 RPM 대응 버전. 페도라 등에서 사용된다.[1]
  • TurboPackage: rpm 형식 패키지를 대상으로 하는 Turbolinux에서 개발된 도구이다.[1]
  • up2date: rpm 형식 패키지를 대상으로 하는 레드햇의 패키지 관리 도구. Red Hat Enterprise Linux (버전 4까지), 페도라 구 버전에서 사용되었다.[1]
  • Yum: rpm 형식 패키지를 대상으로 하는 옐로우독 리눅스에서 개발된 도구. Red Hat Enterprise Linux, CentOS 등에서 표준으로 채용되었고, Fedora에서는 버전 21까지 사용되었다.[1]
  • DNF: Yum에서 포크된 도구. Fedora에서 버전 22부터 표준으로 채용되었다.[1]
  • rPath 계열:
  • Conary: Foresight Linux 및 rPath Linux에서 채택. RPM, CVS, Portage 등의 장점을 모아 리비전 관리를 수행한다.[1] 업데이트가 필요한 파일만 업데이트하여 효율적이다.[1]
  • Gentoo Linux:
  • 젠투 리눅스는 소스 코드를 컴파일하여 설치. 패키지는 설치 절차가 적힌 Bash스크립트이다.
  • 모질라 파이어폭스나 LibreOffice 등은 바이너리 패키지도 제공. 어도비 플래시구글 크롬 등의 독점 소프트웨어는 바이너리 파일을 다운로드하여 설치.
  • Portage: 젠투 리눅스의 기본 패키지 관리 시스템. Python으로 작성. FreeBSD의 ports에서 착안되었다.
  • [http://paludis.exherbo.org/ Paludis]: Exherbo Linux의 패키지 관리 시스템. 젠투 리눅스에서도 사용 가능. C++로 작성.
  • [http://pkgcore.readthedocs.org/ pkgcore]: Portage를 대체할 수 있는 패키지 관리 시스템을 목표. Python으로 작성.
  • openSUSE:
  • YaST: RPM 형식 패키지를 대상으로 하는 SUSE Linux에서 개발된 통합 시스템 관리 도구.
  • ZYpp: 충족 가능성 문제 해결에 초점을 맞춰 개발된 패키지 관리 시스템.
  • Slackware:
  • '''pkgtool''': 슬랙웨어 표준 패키지 관리 도구. 버전 관리를 수행하지 않는다.[1]
  • '''slackpkg''': 슬랙웨어에서 사용 가능한 패키지 관리 도구. 설치하면 APTYum과 같은 버전 관리를 슬랙웨어에서 실현.[2]
  • '''sbopkg''': SlackBuilds.org용 패키지 관리 도구.[3]
  • Arch Linux:
  • pacman: Arch Linux를 위해 개발된 패키지 관리 도구. .pkg.tar.zst 형식을 사용하며 C로 작성.
  • 배포판 비의존적:
  • Nix: 데비안, openSUSE, 페도라 등 다수의 배포판을 지원하는 환경 비의존적 패키지 관리 도구. 동일 소프트웨어의 여러 버전 공존 가능.[1]
  • Snap: 캐노니컬이 개발한 샌드박스 기술을 이용한 패키지 관리 도구 및 시스템. 우분투에서 기본 사용 가능.[1]
  • Flatpak: GNOME에서 시작된 기술. 샌드박스 기술을 이용한 패키지 관리 도구 및 시스템. 데스크톱 애플리케이션 전용. 주요 배포판에서 사용 가능.[1]
  • FreeBSD:
  • ports 방식을 통해 소스 코드를 컴파일하여 설치. pkg(8) 도구를 사용하여 바이너리 패키지 설치도 가능.
  • NetBSD:
  • pkgsrc는 소스를 컴파일하여 설치. NetBSD 이외 리눅스, macOS, Solaris 등에서도 사용 가능.[39]
  • macOS:
  • MacPorts, Fink, Homebrew 등.
  • Windows:
  • PackageManagement: Windows 공식 패키지 관리 도구. PowerShell 5.0에 포함.
  • Chocolatey: Windows NT용 패키지 관리 도구. NuGet의 패키지 인프라를 이용.
  • Windows Package Manager: Microsoft가 Windows 10 및 Windows 11을 위해 설계한 Windows 공식 패키지 관리 도구. winget으로 알려져 있음.

5. 1. Debian 계열

그림은 업데이트 관리자(update-manager) 화면.]]

5. 2. Red Hat 계열


  • RPM: rpm 형식의 패키지를 대상으로 하는 레드햇 리눅스에서 개발된 도구이다. 단순한 설치 외에 src.rpm 형식이나 nosrc.rpm 형식, 소스 아카이브 등을 사용하여 소스로부터 재빌드하여 rpm 패키지를 생성하는 기능도 있다. 다음 패키지 관리 도구는 모두 RPM을 대체하는 것이 아니라 RPM을 백엔드로 사용하여 더욱 향상된 기능을 제공한다.[1]
  • apt-rpm, aptitude, synaptic: 원래 deb 형식에 대응하는 이 도구들은 RPM 대응 버전이 제작되어 페도라나 Vine Linux 등에서 사용되고 있다.[1]
  • TurboPackage: rpm 형식 패키지를 대상으로 하는 Turbolinux에서 개발된 도구이다.[1]
  • up2date: rpm 형식 패키지를 대상으로 하는 레드햇의 패키지 관리 도구이다. 같은 회사의 Red Hat Enterprise Linux (버전 4까지)에서 채용되었다. 페도라의 구 버전에서도 채용되었다.[1]
  • Yum: rpm 형식 패키지를 대상으로 하는 옐로우독 리눅스에서 개발된 도구이다. Red Hat Enterprise Linux나 CentOS 등에서 표준으로 채용되고 있다. Fedora에서는 버전 21까지 표준으로 채용되었다.[1]
  • DNF: rpm 형식 패키지를 대상으로 하는 Yum에서 포크하여 개발된 도구이다. Fedora에서는 버전 22부터 표준으로 채용되었다.[1]

5. 3. rPath 계열

Conary는 Foresight Linux 및 rPath Linux에서 채택되었으며, RPM, CVS, Portage 등의 장점을 모아 몇 가지 뛰어난 기능을 추가하여 명확한 리비전 관리를 수행하는 차세대 패키지 관리 시스템이다.[1] Conary는 업데이트가 필요한 패키지에서 특정 파일만 업데이트하므로, RPM이나 deb 등 패키지 전체를 다운로드하는 다른 형식보다 효율적이다.[1]

5. 4. Gentoo Linux

젠투 리눅스에서는 원칙적으로 소프트웨어를 소스 코드로 컴파일하여 설치한다. 따라서 최적화되고 효율적인 시스템을 구축할 수 있지만, 컴파일에 많은 시간과 연산 처리가 필요하다.

설치하는 소프트웨어는 공식 사이트 또는 미러 사이트에서 다운로드하며, 젠투 리눅스에서 패키지 본체는 설치 절차가 적힌 Bash스크립트이다.

모질라 파이어폭스나 LibreOffice 등은 컴파일에 시간이 오래 걸려 바이너리 패키지도 제공된다. 어도비 플래시구글 크롬 등의 독점 소프트웨어도 공식적으로 배포되는 바이너리 파일을 다운로드하여 설치할 수 있다.

젠투 리눅스의 패키지 관리 시스템은 처음에는 Portage뿐이었지만, 현재는 표준화된 여러 패키지 관리 시스템이 있으며 그 중 하나를 사용할 수 있다.

  • Portage: 젠투 리눅스의 기본 패키지 관리 시스템이다. Python으로 작성되었으며, FreeBSD의 ports에서 착안하여 개발되었다. 젠투 리눅스 외에 FreeBSD와 macOS에도 이식되었다.
  • [http://paludis.exherbo.org/ Paludis]: 젠투 리눅스에서 파생된 배포판인 Exherbo Linux의 패키지 관리 시스템이며, 젠투 리눅스에서도 사용할 수 있다. 주로 C++로 작성되었다.
  • [http://pkgcore.readthedocs.org/ pkgcore]: Portage와 호환성이 높고 이를 대체할 수 있는, 보다 효율적인 패키지 관리 시스템을 목표로 만들어졌다. 주로 Python으로 작성되었다.

5. 5. openSUSE


  • YaST: RPM 형식 패키지를 대상으로 하는 SUSE Linux에서 개발된 도구이다. YaST는 단순한 패키지 관리 도구가 아니라 통합적인 시스템 관리 도구이다.
  • ZYpp: 충족 가능성 문제 해결에 초점을 맞춰 개발된 패키지 관리 시스템이다.

5. 6. Slackware


  • '''pkgtool''': 슬랙웨어 표준 패키지 관리 도구이다. APTYum과 비교하여 매우 단순하며, 버전 관리를 수행하지 않는다.[1]
  • '''slackpkg''': 슬랙웨어에서 사용할 수 있는 패키지 관리 도구로, 기본적으로 설치되지 않는다. 슬랙웨어 표준 패키지만 다룰 수 있지만, 설치하면 APTYum과 같은 버전 관리를 슬랙웨어에서 실현할 수 있다.[2]
  • '''sbopkg''': SlackBuilds.org용 패키지 관리 도구이다. slackpkg는 서드 파티 패키지를 다룰 수 없으므로 독자적으로 제공된다.[3]

5. 7. Arch Linux

pacman은 Arch Linux를 위해 개발된 패키지 관리 도구이다. 컴파일된 바이너리와 패키지 정보를 포함하는 독자적인 .pkg.tar.zst 형식을 사용한다. 프로그래밍 언어는 C를 사용한다.

5. 8. 배포판 비의존적


  • Nix: 데비안, openSUSE, 페도라 등 다수의 배포판을 지원하는 환경 비의존적 패키지 관리 도구이다. 기존 환경의 의존 관계와 관계없이 서드 파티 소프트웨어를 설치할 수 있으며, 기존의 패키지 관리 도구에서는 실현할 수 없었던 동일 소프트웨어의 여러 버전 공존이 가능하다.[1]
  • Snap: 캐노니컬이 개발한, 샌드박스 기술을 이용한 배포판 비의존적인 패키지 관리 도구 및 시스템이다. 클라우드 및 IoT에서도 이용 가능하며, 여러 버전의 공존 및 AppArmor를 사용한 접근 제한도 가능하다. 우분투에서 기본적으로 사용할 수 있지만, 다른 많은 배포판에서도 사용할 수 있다.[1]
  • Flatpak: GNOME에서 시작된 기술로, freedesktop.org의 프로젝트로 개발되고 있으며, 샌드박스 기술을 이용한 배포판 비의존적인 패키지 관리 도구 및 시스템이다. 위의 두 가지와 마찬가지로 여러 버전의 공존이 가능하다. Snap과 달리 데스크톱 애플리케이션 전용이며, 주요 배포판에서 사용할 수 있다.[1]

5. 9. FreeBSD

FreeBSD는 ports 방식을 통해 소스 코드를 컴파일하여 설치하는 것을 원칙으로 한다. 이는 각 PC의 명령 레벨에서 최적화된 환경을 구축, 처리 효율을 높일 수 있지만 설치에 시간이 오래 걸린다. pkg(8) 도구를 사용하여 바이너리 패키지를 설치할 수도 있다. 소스 컴파일 방식과 바이너리 설치 방식은 모두 단일 데이터베이스로 통합 관리되므로, 패키지 성격에 따라 설치 방법을 선택할 수 있다. 더 자세한 내용은 FreeBSD 및 FreeBSD Ports 문서를 참조하면 된다.

5. 10. NetBSD

pkgsrc는 원칙적으로 소스를 컴파일하여 설치하도록 되어 있다. 이 때문에 PC마다 최적화된, 낭비가 적은 환경을 구축할 수 있다. 다만, 설치에 오랜 시간이 걸린다. 또한, OS/CPU에 의존하지 않으며, NetBSD 이외에도 리눅스, macOS, Solaris 등에서도 사용할 수 있다.[39]

5. 11. macOS

macOS에는 MacPorts, Fink, Homebrew 등이 있다.

5. 12. Windows


  • PackageManagement: Windows 공식 패키지 관리 도구이다. PowerShell 5.0에 포함되어 있으며, 다양한 저장소가 존재한다.
  • Chocolatey: Windows NT용 패키지 관리 도구이다. .NET Framework용 패키지 관리 시스템 NuGet의 패키지 인프라를 이용하고 있다.
  • Windows Package Manager: Microsoft가 Windows 10 및 Windows 11을 위해 설계한 Windows 공식 패키지 관리 도구이며, 자유-오픈 소스이다. winget으로 알려져 있다.

6. 프로그래밍 언어별 패키지 관리 시스템

각 프로그래밍 언어별 패키지 관리 시스템은 다음과 같다.[29]


  • 러스트: Cargo (CLI 빌드 도구 겸용, 의존성 라이브러리는 [https://crates.io/ crates.io]에서 다운로드)
  • Dart: Pub (CLI 빌드 도구 겸용, 의존성 라이브러리는 [https://pub.dev/ Pub.dev]에서 다운로드)
  • Ruby: RubyGems (Ruby 프로그램 및 라이브러리(gem) 배포용 표준 형식 제공)
  • Go: GoMod (Go 프로그램 및 라이브러리(mod) 배포용 표준 형식 제공)
  • 파이썬: pip (표준 패키지 관리 시스템), Conda (과학 계산용 Anaconda에 포함)
  • Node.js: npm ("Node Package Manager", 현재는 프론트엔드 패키지도 관리)
  • Fantom: 빌드포드 (Fantom 프로그램 및 라이브러리(pod) 배포용 표준 형식 제공)
  • .NET Framework: NuGet
  • Objective-C, Swift: CocoaPods (RubyGems의 영향)


기타 패키지 관리자:

7. 데이터 의존성 관리

2016년, 라이프치히 대학교의 컴퓨터 과학자 에드가 마르크스(Edgard Marx)는 데이터 관리를 처리하는 시스템을 지칭하기 위해 데이터 의존성 관리(Data Dependency Management)[30]라는 용어를 만들었다.

데이터 의존성 관리 시스템은 클라우드, 개인용 컴퓨터 또는 스마트 장치(엣지)에서 데이터의 배포 및 관리를 용이하게 하도록 설계되었다. 데이터 의존성 관리 프레임워크는 데이터가 어떻게 생성되었는지, 라이선스, 그리고 의존성을 설명하는 데 사용될 수 있다. 데이터 의존성 관리의 개념은 JavaScript용 npm, Ruby용 gem, 그리고 .NET용 NuGet과 같은 소프트웨어 패키지 의존성 관리 도구에서 비롯되었다. 이러한 개념은 사용자에게 데이터 기반 응용 프로그램에 대한 기계 학습 모델과 같은 데이터에 대한 소프트웨어 종속성을 관리할 수 있도록 하는 것이다. 이는 데이터 패키지를 게시, 찾기 및 설치하는 데 유용하다. 데이터 의존성 관리 프레임워크의 전형적인 예로는 허깅 페이스(Hugging Face), KBox[31] 등이 있다.

8. 영향

이안 머독은 패키지 관리가 "리눅스가 업계에 가져온 가장 큰 발전"이며, 운영 체제와 애플리케이션의 경계를 모호하게 하고, "새로운 혁신을 [...] 시장에 내놓고 [...] OS를 발전시키는 것을 더 쉽게 만든다"고 언급했다.[32]

패키지 관리자 개발자를 위한 컨퍼런스인 패키징콘(PackagingCon)도 있다. 이 컨퍼런스는 2021년에 설립되어 패키지 관리에 대한 다양한 접근 방식을 이해하는데 도움을 준다.[33]

참조

[1] 웹사이트 What is a package manager? https://web.archive.[...] 2018-12-19
[2] 웹사이트 Software Distribution https://web.archive.[...] Dell KACE 2012-07-11
[3] 웹사이트 The history of *nix package management https://eerielinux.w[...] 2017-08-14
[4] 웹사이트 A review of InfoMagic's December 1994 Release https://www.linuxjou[...]
[5] 웹사이트 The Timeline of Perl and its Culture http://history.perl.[...]
[6] 논문 Functional Package Management with Guix https://arxiv.org/ab[...] 2013-06
[7] 논문 OPIUM: Optimal Package Install/Uninstall Manager https://escholarship[...] UC San Diego 2011-09-14
[8] 웹사이트 Linux repository classification schemes http://braintickle.b[...] braintickle.blogspot.com 2006-01-13
[9] 웹사이트 CentOS yum pinning rpms http://lists.centos.[...] centos.org
[10] 웹사이트 How to keep specific versions of packages installed (complex) https://www.debian.o[...] debian.org
[11] 웹사이트 Apt pinning to blacklist a package https://web.archive.[...]
[12] 웹사이트 pacman(8) Manual Page https://www.archlinu[...]
[13] 웹사이트 documentation/sles11 https://en.opensuse.[...]
[14] 웹사이트 XBPS Package Manager - Void Linux Handbook https://docs.voidlin[...]
[15] 웹사이트 swupd-client/swupd.1.rst at master · clearlinux/swupd-client · GitHub https://github.com/c[...]
[16] 웹사이트 Pacman/Rosetta – ArchWiki https://wiki.archlin[...]
[17] 웹사이트 dpkg version 0.93.15 source code https://web.archive.[...]
[18] 논문 Integrating Software Construction and Software Deployment https://nixos.org/~e[...]
[19] 뉴스 Brew is the macOS app store replacement you didn't know you needed https://www.msn.com/[...] 2024-05-25
[20] 웹사이트 Linux App Stores Compared: Which One Is Right for You? https://www.makeuseo[...] 2017-03-17
[21] 웹사이트 What is a package manager? https://www.debian.o[...]
[22] 뉴스 How 18 Malware Apps Snuck Into Apple's App Store https://www.wired.co[...]
[23] 웹사이트 Millions downloaded dozens of Android apps from Google Play that were infected with adware https://techcrunch.c[...] 2019-10-24
[24] 뉴스 Never Ever (Ever) Download Android Apps Outside of Google Play https://www.wired.co[...]
[25] 논문 Assessing the Security of Node.js Platform IEEE 2012
[26] 웹사이트 npm Code of Conduct: acceptable package content https://docs.npmjs.c[...]
[27] 웹사이트 JFrog Releases 'Universal' Artifact Repository https://adtmag.com/a[...] Application Development Trends Magazine 2015-09-08
[28] 웹사이트 An Overview of the NuGet Ecosystem https://www.codeproj[...] 2013-08-18
[29] 웹사이트 Fink – Home https://www.finkproj[...]
[30] 웹사이트 Data Dependency Management https://github.com/A[...]
[31] 저널 KBox https://ieeexplore.i[...] 2017-01
[32] 웹사이트 How package management changed everything https://web.archive.[...] ianmurdock.com
[33] 웹사이트 PackagingCon 2021 – a conference for package manager developers and packagers https://packaging-co[...]
[34] 웹사이트 What is a package manager?(パッケージマネージャーとは何ですか?) https://www.debian.o[...] Debian
[35] 웹사이트 Debian パッケージ管理システムの基礎 https://www.debian.o[...] Debian
[36] 웹사이트 dpkgがPerl言語で書かれていた時代のコード。 https://anonscm.debi[...] 2015-04-02
[37] 웹사이트 PerlTimeline https://history.perl[...] Perl 2022-02-27
[38] 문서 4.4. pkg によるバイナリ package の管理 https://www.freebsd.[...]
[39] 문서 Part I. pkgsrc 利用者向けの手引き http://www.jp.netbsd[...]
[40] 웹사이트 第8章 Debian パッケージ管理ツール https://www.debian.o[...] Debian 2022-02-17
[41] 웹사이트 Debian リファレンスカード https://www.debian.o[...] Debian 2022-02-17
[42] 웹사이트 YUM/DNF を使用したパッケージ管理 https://access.redha[...] レッドハット 2022-02-17
[43] 웹사이트 Managing software with the DNF tool https://access.redha[...] レッドハット 2022-02-17
[44] 웹사이트 brew(1) – The Missing Package Manager for macOS (or Linux) https://docs.brew.sh[...] 2022-02-17
[45] 웹사이트 nix-env https://nixos.org/ma[...] NixOS 2022-02-27
[46] 웹사이트 pacman(8) https://archlinux.or[...] 2022-02-17
[47] 웹사이트 Zypper package manager https://documentatio[...] SUSE 2022-02-17
[48] 웹사이트 SDB:Zypper manual https://en.opensuse.[...] 2022-02-17
[49] 웹사이트 Cargo: Rust's community crate host https://blog.rust-la[...] 2014-11-20
[50] 웹인용 보관된 사본 https://aptitude.ali[...] 2018-05-17
[51] 웹인용 Software Distribution http://software.dell[...] Dell KACE 2012-07-11
[52] 문서 https://en.opensuse.[...]
[53] 웹사이트 Pacman/Rosetta - ArchWiki https://wiki.archlin[...] 2017-09-17



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com