[Linux] 패키지 설치 명령어 apt 원리와 사용법
리눅스운영 체제는 패키지와 패키지매니저가 있다. 패키지는 여러 파일이 한데 모인 하나의 압축파일인데 이 안에는 패키지가 잘 실행될 수 있도록 하는 파일들이 들어가 있다.
패키지 매니저는 패키지의 설치, 삭제등을 관리하게 해주는 도구이다. 패키지 매니저로 설치를 명령하면 패키지 매니저는 패키지가 있는 위치로가서 패키지를 다운로드하고 설치를 한다.
패키지 매니저는 패키지의 설치, 변경, 삭제 등을 편리하게 관리할 수 있도록 해주는 도구이다. 사용자가 패키지 매니저를 통해 특정 프로그램의 설치를 요청하면, 패키지 매니저는 패키지가 저장된 위치에서 패키지를 다운로드하여 설치 프로그램을 실행한다. 이런 패키지 매니저는 대표적으로 Debian 계열 리눅스 배포판에는 apt, Redhat 계열 리눅스 배포판에는 rpm이 있다.
apt(Advanced Packaging Tool)은 리눅스 계열 배포판에서 패키지를 설치하고 제거하는데 도움을 주는 command line tool이다.
dpkg(debian package)와 차이점
리눅스에서 패키지를 설치하는데 쓰는 명령어는 dpkg와 apt가 있다.
그러나 dpkg는 패키지를 설치하면 그 패키지만 설치하고 의존성있는 다른 패키지는 설치해주지 않는다.
apt는 dpkg와 달리 우분투가 제공하는 deb파일 저장소에서 deb 파일을 찾아 설치하고 의존성있는 추가 프로그램까지 자동으로 설치해준다.
apt 원리
- apt-get install 패키지명 명령 프롬프트에 입력.
- /etc/apt/sources.list 파일의 URL 주소를 확인.
- 확인된 우분투 패키지 저장소로 설치와 관련된 패키지 목록을 요청.
- 설치에 필요한 패키지 파일 요청.
- 설치할 패키지 파일을 다운로드해서 설치
우분투 패키지 저장소
패키지 저장소는 서버에서 관리하는데 /etc/apt/sources.list에 저장소 주소를 적어서 해당 저장소에서 패키지를 다운받을 수 있다.
deb http://site.http.org/debian xenial main
아카이브 형태 | URL | 우분투 버전 | 저장소 종류 |
deb | http://kr.archive.ubuntu.com/ubuntu/ | bionic | main |
아카이브 형태
- deb: 미리 컴파일된 바이너리를 포함해서 패키지 관리 저장소
- deb-src: 컴파일 하지 않은 소스코드를 포함한 패키지 저장소
저장소 종류
- main: 우분투에서 공식적으로 지원하는 무료 패키지
- universe: 우분투에서 지원하지 않는 무료 패키지
- restricted: 우분투에서 공식적으로 지원하는 유료 패키지
- multiverse: 우분투에서 지원하지 않는 유료 패키지
apt 명령어
우분투 내에는 기본적으로 apt 명령어가 내장되어 있다.
명령어 | 설명 |
apt update | 지정한 저장소의 최신정보를 업데이트한다. |
apt upgrade | 모든 패키지를 업그레이드한다. |
apt install 패키지 | 패키지를 설치하거나 로컬deb파일을 설치한다. |
apt remove 패키지 | 패키지를 삭제한다. 일부 구성 파일이 남을 수 있다. |
apt purge 패키지 | 남은 구성파일 포함해서 모두 삭제한다. |
apt autoremove | 사용되지 않는 패키지를 자동으로 삭제한다. |
apt list | 사용 가능한 모든 패키지를 나열한다. |
apt list --upgradable | 업그레이드 가능한 패키지를 나열한다. |
apt list --installed | 설치된 패키지를 나열한다. |
apt search 패키지 | 사용 가능한 패키지 목록에서 패키지를 검색한다. |
apt show 패키지 | 패키지 정보를 출력한다. |
apt-get과 apt
apt뿐만 아니라 apt-get이라는 명령어도 있다. 둘은 큰차이점은 없지만 apt-get에서는 옵션이 많기때문에 사람들이 많이 쓰는 옵션들만 apt로 만들어서 사용하는 것이다.
Reference
i https://velog.io/@broccoliindb/apt-get-%EC%99%80-dpkg%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90
i https://lazycoding.tistory.com/92
i https://jjeongil.tistory.com/1672