코드코코

[리눅스] 리눅스 패키지 본문

기록/리눅스

[리눅스] 리눅스 패키지

코드코코 2021. 12. 15. 09:51

리눅스 패키지(Linux Package)

리눅스 시스템에서 소프트웨어를 실행하는데 필요한 파일들(실행 파일, 설정 파일, 라이브러리 등)이 담겨 있는 설치 파일 묶음

 - 패키지는 저장소(repository)에 저장되어 있으며, HTTP 혹은 FTP 서버를 통해 다운로드 할 수 있다.

 

패키지

리눅스 배포판에 따라서 서로 다른 패키지 형식을 지원

 

  1. Debian 계열 (Debian, Ubuntu 등) : .deb 파일
  2. RedHat 계열 (RedHat, Fedora, CentOS) : .rpm 파일
  3. openSUSE 계열 : openSUSE를 위해 특별히 빌드된 .rpm 파일

 

Ubuntu에서는 /var/cache/apt/archives 디렉터리에 다양한 .deb 파일들이 보관되어 있다. 이러한 패키지를 관리하기 위해선 패키지 관리 도구를 사용하는데, 일반적으로 다음 두 유형의 패키지 관리 도구를 사용한다.

 

  1. 저수준 툴(low-level tools) : 실제 패키지의 설치, 업데이트, 삭제 등을 수행
  2. 고수준 툴(high-level toos) : 의존성의 해결, 패키지 검색 등의 기능을 제공

 

소스 패키지(Source Package) vs 바이너리 패키지(Binary Package)

소스 패키지(Source Package)

- 소스 코드가 들어 있는 패키지

- 컴파일 과정을 통해 바이너리 파일로 만들어야 실행할 수 있다.

- 소스 패키지는 설치할 때 컴파일 작업도 진행되므로, 설치 시간이 길고 컴파일 작업 과정에서 오류가 발생할 가능성이 있다.

- 내가 원하는 대로 소프트웨어를 수정해서 사용할 수 있다.

 

바이너리 패키지(Binary Package)

- 성공적으로 컴파일된 바이너리 파일이 들어있는 패키지

- 응용 프로그램, 라이브러리 파일, 버전 정보나 의존성 등의 메타 정보 파일 등이 포함

- 이미 컴파일이 되어 있어서, 소스 패키지에 비해 설치 시간도 짧고 오류가 발생할 가능성도 적다.

- 리눅스의 기본 설치 패키지들은 대부분 바이너리 패키지이다.

- 내 컴퓨터 환경과 바이너리 패키지가 컴파일된 환경이 달라서 문제가 발생할 수 있다.

- 바이너리 패키지를 제대로 실행하기 위해서는 특정 라이브러리나 다른 패키지가 필요할 수 있는데 이러한 패키지 간의 의존성을  패키지 의존성(Package Dependencies)이라 부른다.

 

패키지 관리

- 새로운 소프트웨어를 설치, 업데이트, 삭제하는 일

 

각 패키지 관리 도구

  • dpkg
    • Debian 기반의 리눅스에서 사용되는 저수준 패키지 관리자(low-level package manager)
    • .deb 패키지의 설치와 삭제를 담당
    • 하지만 자동으로 패키지를 다운로드하거나 의존성을 해결해주지는 않음
  • apt-get / apt-cache / apt
    • Debian 기반의 리눅스에서 사용되는 고수준 패키지 관리자(high-level package manager)
    • 패키지를 검색, 다운로드, 설치, 의존성 해결
    • 최근의 Debian 기반의 리눅스 배포판에는 apt-get과 apt-cache 의 기능을 통합한 apt 명령이 설치되어 있다
  • aptitude
    • Debian 기반의 리눅스의 또 다른 high-level package manager
    • apt-get 보다 좀 더 개선된 기능을 제공

 

dpkg는 다음과 같이 사용할 수 있다

$ dpkg --help
$ dpkg -k flashpluginnonfree_2.8.2+squeeze1_i386.deb	// 패키지의 설치
$ dpkg -l						// 설치된 패키지를 나열
$ dpkg -l apache2					// 설치되었는지 확인
$ dpkg -r flashpluginnonfree				// 설치된 패키지를 삭제

 

apt-get / apt-cache의 경우 패키지 repository는 /etc/apt/sources.list 에 명시되어 있다