본문 바로가기

스터디/리눅스 커맨드라인

[리눅스] 14. 패키지 관리

 

여러 종류의 리눅스 배포판이 존재하기 때문에 어떤 리눅스 배포판이 젤 좋은 것인지에 대해 의견 충돌이 일어나고는 한다.

사람들 마다 어떤 리눅스 배포판이 '최고'인지는 다르겠지만, 리눅스 배포판을 평가함에 있어 가장 결정적이고 중요한 요인은 바로

패키기 시스템그 배포판을 대상으로 한 리눅스 커뮤니티의 활성화 여부이다.

 

 

1. 패키지 시스템

리눅스 배포판마다 각기 다른 패키지 시스템을 운영한다. 그리고 일반적으로 특정 배포판을 위해 만들어진 패키지는 다른 배포판과 호환되지 않는다.
대부분의 배포판들은 크게 두 가지의 진영으로 나뉘는데 바로 데비안 .deb 진영과 레드햇 .rpm 진영이다. 이 외의 진영도 있지만 대부분 이 두 진영중 하나에 해당한다.

 

주요 패키지 시스템 분류

  • 데비안 스타일 : Debian, Ubuntu, Xandros, Linspire
  • 레드햇 스타일 : Fedora, CentOSm Red Hat Enterprise, openSUSE, Mandriva, PCLinuxOS

 

2. 패키지 시스템 동작 원리

패키지 파일

패키지 시스템에서 소프트웨어의 가장 기본적인 단위이며, 소프트웨어 패키지를 주성하고 있는 파일들의 압축된 형태이다.
해당 프로그램을 지원한는 수 많은 프로그램들과 데이터 파일들로 구성되어 있고, 설치될 파일뿐만 아니라 해당 패키지 자체에 대한 메타데이터도 가지고 있다. 또한 텍스트 명세서와 같이 패키지 설치 전과 후에 각각의 설정 작업을 수행하는 스크립트가 있다.

패키지 파일은 패키지 관리자(package maintainer)에 의해 만들어 지고, 패키지 관리자는 상위 배포자(프로그램 원작자)에게 소스 코드 형태의 소프트웨어를 받아서 컴파일하고 패키지 메타데이터와 기타 필요한 설치 스크립트들을 만든다.

 

저장소

하나의 배포판은 소프트웨어 개발주기의 각 단계에 따라 여러 개의 다른 저장소들을 운영할 수도 있는데, 그 중 하나가 테스트용 저장소 이다. 빌드된 패키지들을 올려서 일반적인 배포 형태로 릴리즈하기 전, 버그를 찾고자 하는 저장소이다.
또한 개발용 저장소도 있는데 여기에는 다음에 주요 배포판에 포함될 작접 중인 패키지들이 저장된다.

 

의존성

프로그램들은 독립적이지 않기 때문에 다른 소프트웨어 구성 요소들을 의존하게 된다.
기본적으로 많이 반복되는 작업에는 공유 루틴이 있는데, 이러한 루틴을 공유 라이브러리라고 하는 공간에 저장되고 다수의 프로그램들에 필수 서비스를 제공한다.

 

고수준과 저수준 패키지 툴

패키지는 두 가지 형태의 툴을 가지고 있는데, 하나는 저수준 툴이고 다른 하나는 고수준 툴이다.
저수준 툴은 패키지 파일을 설치하고 삭제하는 작업을 관리하고, 고수준 툴은 메타데이터 검색 및 의존성 문제 해결과 같은 작업을 수행한다.

 

패키지 시스템 도구

배포판 저수준 도구 고수준 도구
데비안 형식 dpkg apt-get, aptitude
페도라, 레드햇 엔터프라이즈 리눅스, 센트OS rpm yum

 

 

3. 일반적인 패키지 관리 작업

 

저장소에서 패키지 찾기

형식 명령어
데비안 apt-get update
apt-get search search_string
레드햇 yum search search_string
예시)
레드햇 시스템에서 emacs 텍스트 편집기에 대한 yum저장소를 검색하는 명령어
$ yum search emacs​

 

 

저장소에 있는 패키지 설치하기

형식 명령어
데비안 apt-get update
apt-get install package_name
레드햇 yum install package_name
고수준 도구로 저장소에 있는 패키지를 다운로드하여 의존성 패키지들과 함께 설치할 수 있다.
예시)
apt 저장소에 있는 emacs 텍스트 편집기를 데비안 시스템에 설치하는 명령어
$ apt-get update;
$ apt-get install emacs​

 

패키지 파일에서 패키지 설치하기

형식 명령어
데비안 dpkg --install package_file
레드햇 rpm -i package_file
저장소가 아닌 다른 출저에서 다운로드한 패키지 파일이면 저수준 도구를 이용해서 설치가능하다.
예시)
emacs-22.1-7.fc7-i386.rpm 패키지 파일을 저장소가 아닌 다른 곳에서 다운로드한 것일 때 레드햇 시스템에 설치하는 명령어
$ rpm -i emacs-22.1-7.fc7-i386.rpm​

저수준 도구로 설치한 것이기에 의존성 문제가 해결되지 않는다. rpm은 설치되지 않은 의존성 패키지가 발견되면 오류를 출력하고          종료한다.

 

패키지 삭제하기

형식 명령어
데비안 apt-get remove package_file
레드햇 yum erase package_file

 

저장소로부터 패키지 업데이트하기

형식 명령어
데비안 apt-get update; apt-get upgrade
레드햇 yum update

 

패키지 파일에서 패키지 업그레이드하기

형식 명령어
데비안 dpkg --install package_file
레드햇 rpm -U package_file

 

설치된 패키지 확인하기

형식 명령어
데비안 dpkg --list
레드햇 rpm -qa

 

패키지 설치여부 알아보기

형식 명령어
데비안 dpkg --status package_name
레드햇 rpm -q package_name

 

설치된 패키지 정보 표시하기

형식 명령어
데비안 apt-cache show package_name
레드햇 yum info package_name

 

특정 파일과 관련된 패키지 검색하기

형식 명령어
데비안 dpkg --search file_name
레드햇 rpm -qf file_name
예시)
레드햇 시스템에서 /usr/bin/vim 파일이 어떤 패키지에 의해 설치되어있는지 알아보기
$ rpm -qf /usr/bin/vim​

 

 

 

'스터디 > 리눅스 커맨드라인' 카테고리의 다른 글

[리눅스] 16. 네트워킹  (0) 2022.05.16
[리눅스] 15. 저장장치  (0) 2022.05.16
[리눅스] 13. 프롬프트 커스터마이징  (0) 2022.05.08
[리눅스] 12. VI  (0) 2022.05.01
[리눅스] 11. 환경  (0) 2022.04.27