리눅스프로그래밍

우분투 리눅스 - 우분투 패키지

헬로월드! 2020. 6. 20. 16:46

1. 리눅스에서 주로 사용하는 패키지

리눅스에서 소프트웨어는 소스코드 형식 or 패키지 형태 (바로 설치하여 사용할 수 있는!) 

소스 코드 형식) 하나의 아카이브 파일로 묶은 후 압축해서 배포

바이너리 패키지 ) 

우분투 16.04 ~ 새로운 패키지로 스냅도 도입했다!  (deb 패키지와의 호환성) 

 

deb : 데비안, 우분투 계열에서 사용하는 패키지

RPM (Redhat Package Manager) : 레드햇 계열 리눅스에서 주로 사용

*데비안 패키지: 간편하게 설치할 수 있도록 구성된 패키지, 간단한 명령으로 패키지 설치, 삭제, 정보 확인이 가능하다. 

 

1) 우분투 패키지의 특징

  • 바이너리 파일로 구성되어 있기 때문에 컴파일이 필요없다.
  • 패키지의 파일이 관련 디렉터리에 바로 설치된다.
  • 패키지를 삭제할 때 관련된 파일을 일괄적으로 삭제할 수 있다.
  • 기존에 설치한 패키지를 삭제하지 않고 바로 업그레이드 할 수 있다.
  • 패키지의 설치 상태를 검증할 수 있다.
  • 패키지에 대한 정보를 제공한다.
  • 해당 패키지와 의존성을 가지고 있는 패키지가 무엇인지 알려준다. 따라서 의존성이 있는 패키지를 미리 설치할 수도 있고, apt-get 명령을 사용하면 의존성이 있는 패키지가 자동으로 설치된다. 

2) 우분투 패키지의 카테고리

공식적으로 데비안 배포판에 포함된 모든 패키지는 데비안 자유 소프트웨어 지침에 따라 자유롭게 사용하고 배포할 수 있다.

우분투도 네 개의 카테고리로 나누어 소프트웨어를 제공한다.

1) main : 우분투에 의해 공식적으로 지원되며 자유롭게 배포할 수 있다.

2) restricted : 우분투에 의해 지원되나 완전한 자유 라이선스 소프트웨어는 아니다.

3) universe:리눅스에서 사용할 수 있는 거의 대부분의 소프트웨어로 자유 소프트웨어 일 수도 있고 아닐 수도 있으며, 기술적 지원을 보장하지 않는다.

4) multiverse : 자유 소프트웨어가 아닌 소프트웨어가 포함되어 있으며, 개인이 직접 라이선스를 확인해야한다

 

3) 우분투 패키지의 이름 구성

파일명_버전-리비전_아키텍쳐.deb

파일명: 첫 번째 항목은 패키지의 성격을 나타내는 파일명이다.

패키지 버전: 두 번째 항목은 패키지의 버전을 의미한다.

패키지 리비전: 리비전은 원래 소스의 버전이 업그레이드되지는 않았지만 패키지의 보안 문제나 의존성 변화, 스크립트의 변화 등이 있음을 의미한다. 

아키텍처: 사용하는 시스템 아키텍처로 i386은 인텔을, all은 시스템과 상관없는 문서나 스크립트 등을 뜻한다.

확장자: .deb을 사용

 

4) 우분투 패키지 저장소

우분투는 패키지와 패키지에 대한 정보를 저장하고 있는 서버패키지 저장소 라는 개념을 사용한다.

패키지 저장소에서는 패키지의 기능 추가나 보안 패치 등 지속적인 업그레이드를 집중적으로 관리한다.

사용자는 저장소에 접속하여 최신 패키지를 내려받아 설치가 가능하다. 패키지 저장소에 대한 정보는 /etc/apt/sources.list 파일에 저장되어 있다. 

sources.list 파일은 저장소의 정보를 한 줄에 하나씩 나열한다. 각 행은 패키지 유형 (바이너리 소스), 저장소 주소, 우분투 버전 정보, 카테고리로 구성되어 있다. 

- 패키지 유형: deb 는 바이너리 패키지의 저장소, deb-src 는 패키지의 소스 저장소 의미

보통 한 저장소에 바이너리와 소스를 함께 저장한다.

- 저장소 주소 : http 프로토콜을 사용하는 URL 주소를 사용한다.

- 우분투 버전 정보: 저장소에서 관리하는 패키지에 해당하는 우분투의 버전을 표시한다. 버전은 번호가 아니라 버전의 이름을 사용한다.

- 카테고리 : 저장소가 가지고 있는 소프트웨어 카테고리 (main, restricted 등 )을 표시한다. 

 

ex. 'deb http://kr.archive.ubuntu.com/ubuntu/artful main restricted'
- 패키지 유형: deb ) 바이너리 패키지 저장소
- 저장소 주소: http://kr.archive.ubuntu.com/ubuntu 
- 우분투 버전 정보: artful 
- 카테고리 : main , restricted 

 

2. 우분투 패키지 설치

APT 명령으로 패키지 관리하기 ) *APT ? Advanced Pakage Tool

대표적인 명령으로 apt-cache , apt-get 이 있다.

apt-cache

:APT 캐시 ( 패키지 데이터베이스)에서 정보를 검색하여 출력

  • 기능: APT 캐시에 질의하여 여러 가지 정보를 검색한다. 
  • 형식: apt-cache [옵션] 서브 명령
  • 옵션: -f ) 검색 결과로 패키지에 대한 전체 기록을 출력한다. / -h 간단한 도움말을 출력한다.
  • 서브 명령: stats : 캐시에 대한 통계 정보를 출력한다.
  •                    dump: 현재 설치되어 있는 패키지를 업그레이드 한다.
  •                    search 키워드: 캐시에서 키워드를 검색한다.
  •                    showpkg 패키지명: 패키지에 대한 의존성 정보와 역의존성 정보를 검색하여 출력한다.
  •                    show 패키지명: 패키지에 대한 간단한 정보를 출력한다.
  •                    pkgnames: 사용 가능한 모든 패키지의 이름을 출력한다.
  • ex. apt-cache stats  / apt-cache show vstfpd  /  apt-cache search vsftpd

apt-cache stats 명령으로 출력되는 주요 정보

- 전체 패키지 이름 ) 캐시에 있는 패키지 이름의 전체 개수

- 일반 패키지 ) 일반적으로 사용하는 패키지의 개수 

- 순수 가상 페키지 ) 가상 패키지는 패키지의 이름만 제공하며 그 이름을 가진 별도의 패키지가 실제로 있는 것은 아니다. 예를들어 'mail-transport-agent' 패키지는 순수 가상 패키지로 여러 패키지가 연계하여 이 기능을 제공하지만 이런 이름을 가진 패키지는 없다. 

- 단일 가상 패키지 ) 한 패키지가 특정한 가상 패키지의 기능을 제공하는 경우이다. 

apt-get

:  패키지 저장소를 업데이트하고 패키지를 설치하거나 제거할 수 있다. 

  • 기능: 패키지를 관리한다.
  • apt-get [옵션] 서브 명령
  • 옵션: -d) 패키지를 내려 받기만 한다. /-f) 의존성이 깨진 패키지를 수정하려고 시도한다. / -h) 간단한 도움말을 출력한다.
  • 서브명령: update : 패키지 저장소에서 새로운 패키지 정보를 가져온다.
  •             upgrade: 현재 설치되어 있는 패키지를 업그레이드한다.
  •             install 패키지명: 패키지를 설치한다.
  •             remove 패키지명: 패키지를 삭제한다.
  •             download 패키지명: 패키지를 현재 디렉터리로 내려받는다.
  •             autoclean: 불완전하게 내려받았거나 오래된 패키지를 삭제한다.
  •             clean: /var/cache/apt/archives 에 캐시 되어 있는 모든 패키지를 삭제하여 디스크 공간을 확보한다.
  •             check: 의존성이 깨진 패키지를 확인한다.