[Linux] 패키지
패키지(package)
- Linux에서 패키지는 소프트웨어의 실행 파일, 라이브러리, 설정 파일, 문서 등을 하나로 묶어 관리할 수 있는 단위를 의미
- 패키지 관리 시스템을 통해 쉽게 설치, 업데이트, 제거, 의존성 관리 등을 수행할 수 있음
- 이를 통해 사용자나 시스템 관리자는 복잡한 소프트웨어 설치 과정을 간소화하고, 시스템을 효율적으로 유지 관리할 수 있음
주요 구성 요소
- 패키지 파일: 소프트웨어와 관련된 모든 파일이 포함된 아카이브 형식의 파일
- 예:
.deb
(Debian 계열),.rpm
(Red Hat 계열)
- 예:
- 메타데이터: 패키지에 대한 정보
- 패키지 이름, 버전, 의존성, 설치 방법 등이 포함됨.
- 의존성 관리: 한 패키지가 동작하기 위해 필요한 다른 패키지(라이브러리 등)를 관리
패키지 관리 도구
- 패키지를 설치, 제거, 업그레이드하는 도구
- 리눅스의 저수준 패키지 관리 도구와 고수준 패키지 관리 도구는 패키지 관리의 세부 처리와 사용자 편의성 측면에서 차이가 있음
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.
- Ubuntu/Debian:
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
Leave a comment