전통적 방식 프로그램 설치
- 코드를 빌드해서 설치 후 사용
$ wget ~
$ tar xvzf ~
$ cd ~
$ ./configure
$ make & make install
=> 빌드를 위한 각종 라이브러리 설치가 필요함. 직접 프로그램 실행 관리를 해야함
패키징 시스템 등장
- 소프트 웨어 관리 작업ㅈ을 단순화하고 편리하게
- 패키지 시스템의 구성
=> 컴파일된 바이너리, 의존성 정보, 환경설정 템플릿 등 소프트웨어 실행에 필요한 모든 파일이 포함
- 설치 실패의 경우, 설치 중이던 파일 삭제 또는 재시도 가능
- 간편한 업데이트
- 라이브러리 및 필요한 패키지가 미리 설치되어 의존성 라이브러리를 따로 설치 하지 않아도 된다
- 하지만 의존성들간의 버전 호환성 문제로 패키지 업데이트 불가능한 상태가 되기도 함
- 경우에 따라, 임베디드 환경구성에 Docker를 활용
rpm
- 패키지 설치, 검증, 패키지 상태 확인
- 옵션
- -i : 설치
- -U : 업그레이드
- -e : 삭제
- -q : 질의
ex) rpm -qa
=> 시스템에 설치된 모든 패키지 나열
ex) rpm -U 패키지명.rpm
=> 패키지 업그레이드. 하지만, 종속성 관계로 실패하는 경우가 많음
=> --force 옵션으로 강제적인 업그레이가 가능. 또 다른 문제 발생 가능성
dpkg
- 데비안 패키지 설치
- 옵션
- -i : 설치된 패키지 목록
- --install : 설치
- --remove : 삭제
ex) $ sudo dpkg --install 패키지명.deb
ex) $ dpkg -l cp*
고수준 패키지 관리 시스템
- 패키지를 찾어 다운로드 하는 작업을 단순화 => 패키지 저장소가 존재
- 시스템 업데이트나 업그레이드 과정 자동화
- 패키지간 의존성 관리 간편화
ex) apt install nginx
=> 바이너리 다운로드 및 설치, 의존성 관리, 서비스 등록, 부팅 시 시작, 로그 로테이션 등
- 종류
- Debian 계열 : apt
- Redhat 계열 : yum
*이전은 apt-get, apt-cache 명령 사용했지만, apt 명령으로 주요 기능을 통합 => apt 사용
- 명령
$ apt install -y nginx
$ apt remove nginx
- 공식 저장소 외에 추가 저장소가 필요
- 기본 저장소에 모든 프로그램이 다 존재하지 않음
- 저장소 추가 방법
ex) redis 설치
- 저장소 키 추가
$ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archivekeyring.gpg
- 리포지토리 정보 추가
$ echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb
$(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
- 저장소 / 패키지 정보 업데이트
$ sudo apt update
$ sudo apt install redis