리눅스에서는 설치를 도와주는 파일(윈도우의 윈도우 인스톨러처럼)을 통틀어 패키지라고 부른다.
다시 말해, 리눅스 패키지란 리눅스 시스템에서 소프트웨어를 실행하는데 필요한 파일들(실행 파일, 설정 파일, 라이브러리 등)이 담겨 있는 설치 파일 묶음이다.
리눅스 패키지는 소스 패키지와 바이너리 패키지로 나눌 수 있다.
소스 패키지
: 소스 코드가 들어 있는 패키지. 컴파일 과정을 통해 바이너리 파일로 만들어야 실행 가능하다.
: 설치할 때 컴파일 작업도 진행되므로 설치 시간이 길고 컴파일 작업 과정에서 오류가 발생할 수도 있다.
바이너리 패키지
: 성공적으로 컴파일된 바이너리 파일이 들어있는 패키지로, 소스 패키지에 비해 설치 시간도 짧고 오류가 발생할 가능성도 적다. 리눅스의 기본 설치 패키지들은 대부분 바이너리 패키지이다. Ubuntu와 CentOS 의 기본 설치 패키지이기도 하다.
-> 그럼에도 소스 패키지를 사용하는 이유는 내가 원하는 대로 소프트웨어를 수정해서 사용할 수 있기 때문이다.
: 또한, 바이너리 패키지는 내 컴퓨터 환경과 바이너리 패키지가 컴파일된 환경이 달라서 문제가 발생할 수 있다.
저수준 패키지 도구
: 패키지 파일을 설치하거나 제거할 때 사용하는 도구.
: 각 패키지의 파일을 설치하고 제거할 수는 있어도 패키지 간의 의존성은 알지 못함.
: Debian 계열에서는 dpkg 사용
: Red Hat 계열에서는 rpm 사용
고수준 패키지 도구
: 패키지 파일을 설치하고 제거할 뿐만 아니라 다운로드 가능한 패키지들을 검색하고 패키지 종속성(Package Dependencies)을 해결하는 도구(패키지 종속성을 해결한다는 의미는 해당 패키지가 가지고 있는 패키지 간의 종속성을 파악하고 필요하다면 자동으로 설치해준다는 뜻).
: 패키지 종속성이란, 내가 필요한 패키지 이외도 다른 패키지나 라이브러리가 필요한 것을 말한다.
: Debian 계열에서는 apt-get 사용
: Red Hat 계열에서는 yum 사용
Red Hat 기준
rpm
: Red Hat 계열의 패키징 방식으로, Windows 계열의 setup.exe 파일과 비슷하게 자동으로 설치를 해주는 프로그램이다.
: 기본 사용 명령어들
설치: rpm -Uvh [패키지명]
삭제: rpm -e [패키지명]
설치확인: rpm -qa [패키지명]
상세정보: rpm -qi [패키지명]
yum
: RPM 기반의 시스템을 위한 자동 업데이터 및 패키지 설치, 제거 프로그램으로, RPM과 다르게 인터넷 사용이 필수라 패키지간 종속성 문제를 해결할 수 있다.
: 기본 사용 명령어들
설치: yum install [패키지명]
삭제: yum remove [패키지명]
업그레이드: yum update [패키지명]
목록 확인: yum list [패키지명]
yum 데이터베이스 동기화 업데이트: yum update
Debian 기준
dpkg
: 데비안 패키지 관리 시스템의 기초가 되는 소프트웨어다.
: *. deb설치파일이 이미 작업환경에서 존재하고 있을 때 아래와 같이 할 수 있다.
설치: dpkg -i 패키지파일이름.deb
삭제: dpkg -r 패키지이름 : 패키지만 삭제 / dpkg -P 패키지이름 : 설정파일까지 삭제
조회: dpkg -l 패키지이름 : 패키지를 간략히 조회 / dpkg -L 패키지이름 : 패키지에 의해 소유된 파일까지 조회 / dpkg --info 패키지이름.deb : 패키지 파일에 대한 정보를 보여줌
apt-get
: dpkg와 달리 종속된 프로그램이 만약 작업환경에 미설치되어있다면 추가 수동설치 필요없이 자동으로 설치해준다.
: 기본 사용 명령어들
패키지 설치: apt-get install -f 패키지이름 (f는 --fix-broken 옵션으로, 종속성 관련 문제를 해결할때 사용한다)
새 패키지 목록 업데이트: apt-get update
패키지를 설치/업그레이드하여 시스템 업그레이드: apt-get upgrade
패키지 삭제: apt-get remove/purge 패키지이름
사용하지 않는 패키지 제거: apt-get autoremove
내려받은 파일 제거: apt-get clean (or) apt-get autoclean
apt-cache는 패키지 검색을 담당한다.
패키지 정보 보기: apt-cache show 패키지 이름
패키지 의존성 확인: apt-cache depends 패키지이름
패키지의 역의존성 확인: apt-cache rdepends 패키지이름
리눅스 시스템의 패키지 관리자(Package Manager)는 패키지 저장소(Repository)로부터 설치할 수 있는 패키지 정보들을 가진 패키지 메타데이터(Package Metadata)를 로컬 캐시에 저장한다.
패키지 관리자(Package Manager)가 특정 패키지의 설치를 명령하면 로컬 캐시를 참조하여 패키지 정보를 찾고 패키지 저장소(Repository)를 통해 패키지를 다운로드한다.
이때 패키지는 패키지 종속성(Package Dependencies)이 있을 수 있다. 패키지 관리자(Package Manager)는 종속성을 처리하고 필요한 패키지들을 자동으로 설치한다.
출처
https://bradbury.tistory.com/227
https://thenicesj.tistory.com/223
https://imaginefly.tistory.com/m/75
https://ko.wikipedia.org/wiki/Dpkg
https://spiralwind7.tistory.com/170