Home » OS » 리눅스 » apt get no-install-recommands 로 최소 설치를 해 봅시다.

apt get no-install-recommands 로 최소 설치를 해 봅시다.

우분투에서 apt get으로 프로그램을 깔다 보면, 생각보다 패키지들이 상당히 많이 깔리는 것을 볼 수 있습니다. 이는, 추천되는 패키지들까지 설치되기 때문입니다. apt get no-install-recommands 옵션으로 최소한의 패키지만 설치하실 수 있습니다.


옵션 알아보기

먼저 apt-get은 우분투에서 사용하는 패키지 관리 툴입니다. 그리고 apt-get install은 패키지를 설치하기 위한 명령어입니다. 예를 들어, apt-get install python3-pip는 파이썬에서의 패키지 관리 툴인 pip가 설치됩니다.

밑에서 간단하게 실습해 볼 거에요.

[그림 1] no-install-recommands 옵션

man으로 옵션들을 쭉 살펴보다 보면, 이 옵션이 있는데요. 추천되어지는 package들을 고려하지 않는다고 되어 있습니다. 무슨 이야기인지, 직접 명령어를 사용해 보겠습니다.

[그림 2] 최소 설치 없이 python3-pip 설치 시도해 보기

먼저, 아무런 옵션 없이 python3-pip를 apt-get으로 설치하려고 했습니다. 밑에 보시면, dpkg-dev, fakeroot, 등의 여러 패키지들이 보입니다. 이들 말고도 23개의 패키지들이 새로 설치됩니다.

[그림 3] –no-install-recommends 옵션 적용 후

해당 옵션을 적용해 보겠습니다. 그러면, python3-pip와 python3-wheel만 설치됩니다. 설치되는 패키지들이 줄면, 설치를 위해 쓰는 디스크 공간도 줄 겁니다. 이는 docker 등에서 이미지를 build 할 때도 유용하게 쓸 수 있습니다.


docker 빌드해 보기

간단한 fastapi 프로젝트가 있습니다. 그냥, /health를 입력하면, json 응답을 떨어트리는 아주 단순한 서버입니다.

[그림 4] build에 쓰일 간단한 프로젝트

poetry로 패키지 관리를 합니다. 여기에, uvicorn이랑 fastapi 정도만 설치하였습니다. app 폴더 밑에 있는 main.py랑, 루트에 있는 .dockerignore, Dockerfile 정도만 보면 됩니다.

[그림 5] main.py

main.py에는, /health 경로로 왔을 때, “ok”라는 메세지를 리턴합니다. 이게 전부입니다.

[그림 6] .dockerignore

다음에 .dockerignore에는 build를 할 때 무시해야 하는 파일을 정의합니다. __pycache__ 정도만 무시하고 있습니다.

[그림 7] Dockerfile

Dockerfile을 봅시다. 2번째 줄에 apt-get 명령어를 썼다는 것을 볼 수 있는데요.

  • update를 하고
  • python3-pip를 apt-get으로 설치합니다.

여기서 중요한 것은, 최소 설치 옵션을 쓰지 않았다는 점입니다. 이것 저것 한 뒤에, uvicorn 으로 fastapi 서버를 실행합니다.

[그림 8] 생성된 image의 크기

생성된 이미지의 크기를 보면 1.11GB임을 알 수 있습니다. 만약에, -no-install-recommends 옵션으로 최소 설치를 했다면 어떨까요?

[그림 9] 수정된 Dockerfile

Dockerfile을 수정했습니다. 앞에 해당 옵션을 붙였는데요. 이 경우, python3-pip를 설치할 때, 어마무시하게 많은 추가 패키지들이 설치되지 않고 최소 설치를 하게 됩니다. 이 파일을 build 해 보겠습니다.

[그림 10] 줄어든 이미지 크기

1.11GB에 비해서, 1.08GB로 꽤 줄었습니다. 이는 불필요한 추천 패키지들을 설치하지 않았기 때문입니다. 이렇게 설치하고도 잘 동작이 될까요? 컨테이너 안에 들어가서 테스트를 해 보겠습니다.

[그림 11] curl로 테스트 해 보기

uvicorn으로 실행시킬 때, 포트는 8080번으로 실행시켰습니다. 그리고 router에는 /health만 있었습니다. 제가 의도했던 것은, localhost:8080/health를 입력하면 “ok”라는 메세지가 출력되는 것이였습니다. 제대로 수행이 되었나요?

curl 명령어를 쳐 보니, 제대로 수행되었음을 볼 수 있어요. apt get no-install-recommands 옵션으로 깔아도 문제가 없었던 것은, 필요한 패키지들은 설치가 되었기 때문입니다.

Leave a Comment

18 − 17 =