[Linux] apt 명령어에 대해서 알아보자
들어가며
Linux를 이용한다면 한 번쯤 apt나 apt-get이라는 명령어를 사용해본 적이 있을 것이다.
주로 라이브러리를 다운받을 때에 사용했을 것이다.
오늘은 apt 명령어에 대해서 알아보도록 하자.
apt란
본 게시글의 카테고리를 Linux에 분류한 데는 이유가 있다.
왜냐하면 apt는 Linux에서 사용가능한 명령어이기 때문이다.
apt는 패키지의 설치, 변경, 삭제 등을 편리하게 관리해주는 패키지 매니저이다.
즉, 패키지 매니저로 설치를 명령하면 패키지가 있는 위치로 가서 패키지를 다운로드하고 설치해준다는 것이다.
그렇다면, dpkg 역시 데비안 운영체제에서 사용하는 패키지 매니저인데, 둘의 차이는 무엇일까?
apt는 원하는 패키지를 설치해주는 것에서 끝이 나지만, dpkg는 이와 다르게 의존성이 있는 추가 프로그램까지 자동으로 설치해준다는 차이가 있다.
apt와 apt-get 명령어의 차이
사실 필자가 해당 블로그를 사용하는 동기이기도 하다.
(apt와 apt-get을 번갈아가면서 사용하는 도중, 둘의 차이에 대해 의문이 들어서 자세하게 공부하게 되었다.)
결론부터 말하자면, apt-get이 좀 더 최신 패키지 매니저 명령어이며, 편의성을 제공하기 위해 탄생하였다고 보면 되겠다.
자세한 차이는 아래의 표를 참고하자.
apt-get | apt | |
릴리스 연도 및 초기 Debian 배포 | 1998, Debian 2.0(Hamm) 배포. | 2014, Debian 8(Jessie) 배포. |
검색 기능 | 불가능. 사용자는 검색 대신 apt-cache 패키지 관리 명령을 사용해야 함. | 가능 |
종속성 확인 | 종속성 확인이 간단 | 종속성 확인이 복잡하며 제안된 소프트웨어를 설치해야 함 |
파일 시스템의 패키지 버전 | apt-get upgrade를 사용하면 패키지의 이전 버전이 파일 시스템에 남음 | apt upgrade를 사용하면 패키지의 이전 버전이 파일 시스템에서 삭제됨 |
작업의 출력 결과 | 각 apt-get 명령의 기본적인 결과가 세부 정보 없이 출력됨 | 각 apt 명령의 상세한 결과가 출력되며 태스크 진행률 표시줄을 포함한 더 많은 작업 정보가 제공됨 |
apt의 원리
그렇다면, 어떻게 apt 명령어가 패키지를 다운받는 것일까?
보편적으로 사용하는 방법은 인터넷을 통해 우분투 패키지 저장소에 접속하여 패키지를 다운받는 방식이다.
/etc/apt/sources.list 경로에 우분투 패키지 저장소 주소를 아래와 같이 입력하면, apt 명령어를 실행했을 때 해당 주소로 이동하여 패키지를 다운받을 수 있다.
deb http://kr.archive.ubuntu.com/ubuntu/ bionic main
해당 주소를 하나하나 분석해보자면, 아래와 같다.
deb: 미리 컴파일된 바이너리를 포함한 패키지 관리 저장소를 지정한다는 뜻
http://kr.archive.ubuntu.com/ubuntu/: 우분투 패키지 저장소 주소이다. 국내에는 크게 세 가지가 있는데, 카이스트와 카카오 그리고 네오위즈에서 제공하는 패키지 저장소가 있다. (속도는 카카오가 가장 빠르다고 한다.)
bionic: 우분투 버전
main: 우분투 저장소 종류(main은 우분투에서 공식적으로 지원하는 무료 패키지)
위의 방법은 인터넷 연결이 있을 때만 사용할 수 있다.
인터넷이 없는 경우는 패키지를 USB와 같은 이동장치에 담아서 USB를 패키지 관리 저장소로 지정하면 된다.
이 때는 /etc/apt/sources.list를 삭제하고 /etc/apt/sources.list.d에 내가 원하는 이동장비 경로를 설정하면 가능하다.
두 방법은 차이가 있지만, 패키지 저장소를 지정하여 이를 통해 패키지를 다운받는다는 점은 동일하다.
해당 과정을 그림으로 보면 아래와 같다.
- apt-get install 패키지명 명령 프롬프트에 입력.
- /etc/apt/sources.list 파일의 URL 주소를 확인.
- 확인된 우분투 패키지 저장소로 설치와 관련된 패키지 목록을 요청.
- 설치에 필요한 패키지 파일 요청.
- 설치할 패키지 파일을 다운로드해서 설치
이렇게 apt를 이용해서 설치된 deb패키지는 /var/cache/apt/archive 경로에 다운된다.
마치며
오늘은 이렇게 apt에 대해서 알아보고, apt를 통해서 패키지를 다운받는 과정에 대해서 알아보았다.
학생일 때는 비록 몰랐었지만, 하나하나 작동 원리를 알아야 버그를 수정하거나 더 나은 아키텍쳐를 설계하는 데 큰 도움이 되는 것 같다.
평소에 사소하게 많이 사용하는 명령어라도 궁금증을 가지고 깊게 살펴보려는 노력이 필요해보인다.