리눅스 패키지 관리
□ 패키지 파일의 종류(.deb / .rpm) 을 설치 ⇒ /usr/bin/etc, /use/share ....
□ 패키지 관리자
■ high-level: dnf, yum, apt
■ low-level: rpm, dpkg
소프트웨어 패키지 관리자 | 설명 |
dnf (Dandified YUM) | Fedora와 CentOS 같은 rpm 기반 시스템에서 사용됨 yum의 다음 세대로 성능과 사용자 경험을 개선함 High-Level 패키지 관리자 |
yum (Yellowdog Updater Modified) | rpm 기반의 시스템에서 패키지를 관리하는데 사용됨 자동 의존성 해결과 업데이트 기능을 제공 High-Level 패키지 관리자 |
rpm (Redhat Pacakage Manager) | 레드햇 배포판 기반 시스템에서 사용됨 소프트웨어 패키지를 설치, 업데이트, 제거하는데 사용됨 yum 또는 dnf 와 함께 사용됨 Low-Level 패키지 관리자 |
apt (Advanced Package Tool) | Debian 및 Ubuntu와 같은 데비안 계열 시스템에서 패키지를 관리하는데 사용됨 저장소에서 소프트웨어 패키지를 검색하고, 설치하고, 업데이트하고, 제거하는 작업을 수행함 High-Level 패키지 관리자 apt ⇒ apt-get, apt-cache |
dpkg (Debian Package) | Debian 패키지 관리 시스템의 핵심 .deb 파일 형식의 패키지를 직접 설치 및 제거함 일반적으로 apt와 함께 사용됨 Low-Level 패키지 관리자 |
□ 패키지 관리자 설치와 버전 업그레이드 동작원리
0. 공식적인 외부 패키지 저장소인 repository 서버로부터 정보(url)를 가져옴
1. 패키지 정보 ⇒ 저장 (캐시: 미리 읽어 놓은 데이터)
2. 패키지 파일(.deb, .rpm) 다운로드 ⇒ 임시저장 ⇒ 설치 후 삭제된다
3. 패키지 설치(install) ⇒ rom, dpkg 통해서 설치된다
ex) nginx 패키지를 설치 ⇒ 의존성 A, B, C, D 패키지 ⇒ nginx 설치 완료
○ 후에 nginx 패키지를 삭제하면 A, B, C, D 는 어떻게 되는가: 다른 곳에서 참조할 수도 있기 때문에 삭제되지 않음
○ 아무도 의존하지 않은 C, D 패키지가 남았으면 어떻게 비우는가: apt autoremove
○ 인터넷이 안되는 환경에서 패키지를 설치하려면 따로 패키지 파일( .deb, .rpm)을 가져와 dpkg, rpm 으로 따로 설치해야함
■ 패키지 버전 업그레이드
○ yum update
○ apt upgrade
■ 필요없는 의존성 패키지를 삭제
○ yum update --obsoletes
○ apt autoremove
■ 패키지 업데이트와 업그레이드 동작원리
0. 패키지 저장소 서버 URL 설정파일
○ /etc/yum.repo.d/*.repo → 레드햇 계열
○ /etc/apt/source.list → 패키지, 저장소, 리포지터리의 url 주소가 적혀있음, 우분투에서 sudo apt update 했을 때 여기서 가져온다
/etc/apt/source.list.d/*.list → 요 두개가 우분투 계열인듯
1. 패키지 정보를 저장하는 폴더
○ /var/cache/yum → 레드햇 계열
○ /var/lib/apt/lists → 우분투 계열
2. 패키지 조회
3. 패키지 파일을 다운로드
4. 패키지 파일을 dpkg 명령어를 통해서 설치
5. 설치된 패키지를 확인
○ dpkg -l apache2
○ dpkg -L apache2
○ l의 대소문자 옵션 차이는 ???
6. 패키지 삭제
○ 그냥 싹 다 지우기 (purge)
○ 설정파일은 제외하고 지우기 (remove)
○ 실습 명령어
watch -m 1 ls tree /var/lib/apt/list //다른 터미널에서 채워지는것을 볼 수 있음
sudo rm -rf /var/lib/apt/lists/* //파일을 지워주고
sudo apt update //새로 채워준다
sudo watch -n 1 tree /var/cache/apt/archives //
sudo apt install -y apache2 //
■ 패키지 삭제
○ CentOS 기반
○ Ubuntu 기반
1) purge: 그냥 싹 다 지우기
2) remove: 설정파일은 제외하고 지우기
○ 다시 실습하려면?
sudo apt install -y apache2 //다시 apache2를 깐다
sudo apt remove apache2
ls /etc/apache2 //남아있는지 확인함, 패키지를 remove 명령어로 지웠는데 설정파일이 남아있음을 알 수 있다
sudo apt purge apache2
ls /etc/apache2 //purge 명령어로 지우니까 설정파일도 싹 지원진다.
□ 동작과정
0. 네트워크 동작 + DNS 서버 설정
1. 우분투(레드햇) 소프트웨어 패키지 저장소 서버 URL 설정파일
/etc/apt/sources.list 우분투
/etc/apt/sources.list.d*/.list 우분투?
/etc/yum.repo.d/*.repo …. 레드햇?
2. 패키지 메타 정보(패키지 이름, 버전, ..., 리스트 등)가 저장되는 폴더는 무엇인가
/var/lib/apt/lists/ … 우분투
/var/cache/yum/ 레드햇
/var/cache/dnf/ 레드햇?
3. 패키지 조회 → apt search / yum, dnf search
패키지 조회가 안되는 이유
- 정보가 없어서
- 정보는 있는데 옛날꺼라서
- 정보도 있고 최신이지만 추가 패키지 저장소 URL 설정이 안되어 있어서 // .repo 파일 또는 .list 파일 (URL 설정파일)이 없기 때문에
4. 패키지 파일(.rpm 또는 .deb) 임시 다운로드를 받는다 어디에??
/var/vache/apt/archive/ 우분투
/var/cache/yum 레드햇
/var/cache/dnf/ … 레드햇
5. 패키지 파일( .rpm 또는 .deb)들을 dpkg, rpm 명령어를 통해 설치함 (install)
6. 패키지 파일 삭제할 때 (우분투)
apt purge
apt remove → 설정파일은 제외하고 삭제한다