Package

Package

1️⃣ 패키지 관리자 아키텍처

1.1 Debian 계열: dpkgapt

┌──────────────────────┐
│   User/Application   │
└─────────┬────────────┘
          │ 요청: 설치/업데이트
┌─────────▼────────────┐
│         APT          │  <-- 패키지 의존성 해결, 원격 repo 통신
└─────────┬────────────┘
          │ 의존성 해결, .deb 선택
┌─────────▼────────────┐
│        DPKG          │  <-- 실제 패키지 설치/삭제
└─────────┬────────────┘
          │ 파일 시스템 반영
┌─────────▼────────────┐
│    /usr /etc /var     │
└──────────────────────┘
  • dpkg: 로컬 .deb 파일 설치/삭제/정보 조회

    sudo dpkg -i package.deb
    dpkg -l | grep package
  • apt: 원격 저장소(repo) 기반 설치/업데이트, 의존성 자동 처리

    sudo apt update
    sudo apt install nginx
    sudo apt upgrade

1.2 RHEL 계열: rpmyum/dnf

┌──────────────────────┐
│   User/Application   │
└─────────┬────────────┘
          │ 요청: 설치/업데이트
┌─────────▼────────────┐
│      YUM / DNF       │  <-- 의존성 해결, repo 관리
└─────────┬────────────┘
          │ 의존성 해결, .rpm 선택
┌─────────▼────────────┐
│        RPM           │  <-- 실제 패키지 설치/삭제
└─────────┬────────────┘
          │ 파일 시스템 반영
┌─────────▼────────────┐
│    /usr /etc /var     │
└──────────────────────┘
  • rpm: 로컬 .rpm 설치/삭제/정보 조회

    sudo rpm -i package.rpm
    rpm -qa | grep package
  • yum / dnf: 원격 저장소 기반 설치/업데이트, 의존성 자동 처리

    sudo dnf install httpd
    sudo dnf update
    sudo dnf upgrade

2️⃣ GPG 키 & Repository 등록

  • 실무 중요: 신뢰할 수 없는 repo 설치는 보안 문제 발생 가능
  • Ubuntu/Debian 예시:
# 1. GPG 키 추가
curl -fsSL https://packages.example.com/gpg.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/example.gpg

# 2. Repo 등록
echo "deb [arch=amd64] https://packages.example.com/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/example.list

# 3. 패키지 목록 업데이트
sudo apt update

🔑 Tip: 항상 HTTPS 기반 repo 사용, GPG 검증 후 설치


3️⃣ Backport & EOL 패키지 관리

  • Backport: 새로운 패키지를 안정적인 배포판에 맞춰 제공

    • Ubuntu: jammy-backports

    • 설치 예:

      sudo apt install -t jammy-backports nginx
  • EOL 패키지: 공식 repo에서 제거된 패키지

    • 실무에서는 PPA 또는 사내 미러 활용

4️⃣ Ubuntu 22.04 실습 시나리오

목표: nginx 설치 + 특정 버전 설치 + repo 관리 + backport 활용

  1. 패키지 설치/정보 확인
sudo apt update
sudo apt install nginx
dpkg -l | grep nginx
  1. 특정 버전 설치
apt list -a nginx
sudo apt install nginx=1.22.0-1ubuntu1
  1. 백포트 패키지 설치
sudo apt install -t jammy-backports nginx
  1. 새로운 repo 등록 후 패키지 설치
curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/nginx.gpg
echo "deb https://nginx.org/packages/ubuntu/ jammy nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
sudo apt update
sudo apt install nginx
  1. 패키지 삭제 및 청소
sudo apt remove nginx
sudo apt autoremove
sudo apt clean

5️⃣ 실무에서 자주 쓰는 개념

개념 실무 포인트
Repository 관리 사내 mirror, 외부 repo 사용 시 GPG 검증 필수
Backport 안정 배포판에서 최신 기능 사용
EOL 패키지 보안 패치 적용 어려움 → Docker / PPA 활용
dpkg vs apt dpkg → 로컬 패키지, apt → 원격 설치 및 의존성 해결
yum/dnf vs rpm rpm → 로컬 패키지, yum/dnf → 원격 repo 기반 설치
마지막 수정일자