[Linux] 패키지

패키지(package)

  • Linux에서 패키지는 소프트웨어의 실행 파일, 라이브러리, 설정 파일, 문서 등을 하나로 묶어 관리할 수 있는 단위를 의미
  • 패키지 관리 시스템을 통해 쉽게 설치, 업데이트, 제거, 의존성 관리 등을 수행할 수 있음
  • 이를 통해 사용자나 시스템 관리자는 복잡한 소프트웨어 설치 과정을 간소화하고, 시스템을 효율적으로 유지 관리할 수 있음

주요 구성 요소

  1. 패키지 파일: 소프트웨어와 관련된 모든 파일이 포함된 아카이브 형식의 파일
    • 예: .deb (Debian 계열), .rpm (Red Hat 계열)
  2. 메타데이터: 패키지에 대한 정보
    • 패키지 이름, 버전, 의존성, 설치 방법 등이 포함됨.
  3. 의존성 관리: 한 패키지가 동작하기 위해 필요한 다른 패키지(라이브러리 등)를 관리

패키지 관리 도구

  • 패키지를 설치, 제거, 업그레이드하는 도구
  • 리눅스의 저수준 패키지 관리 도구고수준 패키지 관리 도구는 패키지 관리의 세부 처리와 사용자 편의성 측면에서 차이가 있음

1. 저수준 패키지 관리 도구

특징

  • 개별 패키지의 설치, 제거, 업데이트와 같은 기본적인 작업을 수행
  • 의존성 관리 기능이 제한적이거나 없음
  • 주로 시스템 관리자나 개발자가 수동으로 패키지를 관리할 때 사용
  • 파일 단위의 작업에 집중하며, 로컬에 저장된 패키지 파일을 사용

예시 도구

  • rpm (Red Hat 계열)
  • dpkg (Debian 계열)

장점

  • 단순하고 직접적인 작업 가능
  • 특정 패키지나 파일만 다루기 때문에 정밀한 제어 가능

단점

  • 의존성 문제를 수동으로 해결해야 함
  • 패키지 설치 시, 인터넷 저장소와 통합되지 않음

주요 명령어 예시 (rpm)

rpm -i package.rpm    # 패키지 설치
rpm -e package        # 패키지 제거
rpm -q package        # 패키지 정보 조회

2. 고수준 패키지 관리 도구

특징

  • 저수준 도구를 기반으로 동작하며, 사용자 친화적인 기능을 제공
  • 온라인 저장소와 통합되어 의존성 자동 해결
  • 배포판의 표준 저장소를 통해 소프트웨어를 검색, 다운로드, 설치 가능
  • 업데이트, 업그레이드와 같은 대규모 작업을 쉽게 수행 가능

예시 도구

  • dnf, yum (Red Hat 계열)
  • apt-get, apt (Debian 계열)
  • zypper (openSUSE 계열)
  • pacman (Arch 계열)

장점

  • 의존성 관리 자동화
  • 편리한 온라인 저장소 접근 및 관리
  • 사용자 편의를 위한 명령어와 기능 제공

단점

  • 저수준 도구보다 무겁고, 고급 설정에는 적합하지 않을 수 있음

주요 명령어 예시 (apt)

apt update                # 패키지 목록 업데이트
apt install package       # 패키지 설치 및 의존성 자동 해결
apt remove package        # 패키지 제거

3. 주요 차이점 비교

구분 저수준 도구 고수준 도구
의존성 관리 수동 해결 필요 자동 해결
온라인 저장소 비통합 (로컬 파일로 작업) 통합 (저장소에서 다운로드 및 설치)
사용 편의성 낮음 (직접적인 파일 작업) 높음 (자동화된 기능 제공)
대상 사용자 고급 사용자, 시스템 관리자 일반 사용자, 관리자 모두
예시 rpm, dpkg dnf, apt-get, zypper

패키지 리포지토리(package repository)

  • 리눅스 시스템에서 소프트웨어 패키지를 저장하고 배포하는 중앙 저장소를 의미
  • 패키지 관리 시스템을 통해 리포지토리에서 소프트웨어를 다운로드, 설치, 업데이트할 수 있음

리포지토리의 주요 특징

1. 중앙화된 저장소

  • 수많은 소프트웨어 패키지가 저장된 장소로, 인터넷을 통해 접근할 수 있음
  • 각 배포판은 자체적으로 공식 리포지토리를 운영하며, 안정성과 보안을 보장

2. 구성 방식

리포지토리는 보통 다음과 같은 형태로 구성됩니다:

  • 패키지 파일: 소프트웨어의 실행 파일과 설정 파일
  • 메타데이터: 패키지 이름, 버전, 의존성, 업데이트 정보
  • 섹션: 안정 버전(stable), 시험 버전(testing), 최신 버전(unstable) 등으로 나뉘어 관리

데비안의 경우 아래와 같은 계층적 디렉토리 구조로 리포지토리가 구성되어 있음


/dists/
  ├── stable/
  │     ├── main/
  │     ├── contrib/
  │     └── non-free/
  ├── testing/
  └── unstable/
/pool/
  ├── main/
  ├── contrib/
  └── non-free/

  • /dists/: 배포판의 릴리즈 상태별 디렉토리(stable, testing, unstable)
  • /pool/: 실제 패키지가 저장된 디렉토리

3. 접근 방식

  • 패키지 관리 도구(apt, dnf, pacman 등)를 통해 리포지토리에 접근
  • 사용자는 리포지토리를 추가하거나 제거하여 설치 가능한 소프트웨어 목록을 제어

리포지토리의 역할

1. 의존성 관리

  • 소프트웨어 설치 시 필요한 의존성을 자동으로 해결
  • 예: A 패키지를 설치하면 필요한 B, C 라이브러리도 함께 다운로드

2. 소프트웨어 업데이트

  • 모든 패키지의 최신 버전을 쉽게 설치 가능
  • 명령어: sudo apt update && sudo apt upgrade (Ubuntu/Debian)

3. 보안 및 안정성 제공

  • 공식 리포지토리는 정기적인 보안 업데이트를 제공
  • 패키지 서명을 통해 위조나 악의적 변조 방지

리포지토리의 종류

1. 공식 리포지토리

  • 배포판 개발팀이 관리하며, 보안성과 안정성이 검증된 소프트웨어 패키지를 제공
  • 예:
    • Ubuntu/Debian: main, universe, restricted, multiverse 리포지토리
    • Red Hat 계열: BaseOS, AppStream.

2. 서드파티 리포지토리

  • 공식 리포지토리 외부에서 관리되는 리포지토리
  • 예:
    • EPEL(Extra Packages for Enterprise Linux): Red Hat 계열에서 사용
    • PPAs(Personal Package Archives): Ubuntu에서 사용

3. 로컬 리포지토리

  • 인터넷이 없는 환경에서 자체적으로 관리하는 리포지토리
  • 기업 환경이나 오프라인 시스템 유지보수 시 사용

4. 테스트 리포지토리

  • 최신 소프트웨어 버전을 시험해보기 위한 리포지토리
  • 안정성이 낮을 수 있음

리포지토리 설정 파일

리포지토리 정보를 시스템에 추가하려면 배포판별 설정 파일을 수정해야 함

  • Debian/Ubuntu 계열: /etc/apt/sources.list
    deb http://archive.ubuntu.com/ubuntu focal main restricted
    
  • Redhat 계열: /etc/yum.repos.d/*.repo
    [baseos]
    name=Red Hat Enterprise Linux BaseOS
    baseurl=http://mirror.centos.org/centos/$releasever/BaseOS/$basearch/os/
    enabled=1
    gpgcheck=1
    

Categories:

Updated:

Leave a comment