sudo apt-get update와 sudo apt-get upgrade는 데비안(Debian) 또는 데비안 기반 리눅스 배포판에서 모든 패키지를 최신 상태로 유지하기 위해 사용하는 두 가지 명령어입니다.
이 명령어들은 리눅스 관리자나 DevOps 담당자에게는 익숙한 기본 명령이지만, 커맨드 라인을 자주 사용하지 않는 사용자에게도 알아두면 매우 유용합니다.
이 글에서는 두 명령어가 각각 어떤 역할을 하는지, 실제로 어떻게 사용하는지, 그리고 자주 묻는 질문까지 자세히 살펴보겠습니다.
sudo apt-get update와 sudo apt-get upgrade의 차이점
가장 핵심적인 차이는 다음과 같습니다. sudo apt-get update는 배포판의 소프트웨어 저장소와 설정된 서드파티 저장소에서 최신 패키지 목록만 가져옵니다. 즉, 각 패키지와 의존성의 최신 버전이 무엇인지 파악할 뿐, 실제로 다운로드하거나 설치하지는 않습니다.
반면 sudo apt-get upgrade는 시스템에 설치된 오래된 패키지와 의존성의 업데이트를 실제로 다운로드하고 설치합니다. 단, sudo apt-get upgrade만 실행한다고 해서 자동으로 업그레이드가 진행되지는 않습니다. 변경 사항을 검토하고 업그레이드를 확정하는 절차를 거치게 됩니다.
sudo apt-get update 명령어 사용 방법
데비안 기반 리눅스 배포판(데비안, 우분투, 리눅스 민트, 칼리 리눅스, 라즈비안 등)에서 터미널 창을 엽니다.
배포판에 따라 터미널 앱의 이름은 조금씩 다를 수 있습니다. 예를 들어 우분투나 리눅스 민트에서는 기본 터미널이 GNOME Terminal이지만, 응용 프로그램 메뉴에는 '터미널(Terminal)'로 표시됩니다.
터미널에 sudo apt-get update를 입력하고, 관리자 비밀번호를 입력한 후 Enter 키를 누릅니다.
업데이트할 내용이 있다면 다음과 비슷한 출력 결과를 볼 수 있습니다:
kris@pihole:~ $ sudo apt-get update
Hit:1 https://ftp.harukasan.org/raspbian/raspbian bullseye InRelease
Get:2 https://download.docker.com/linux/raspbian bullseye InRelease [26.7 kB]
Get:3 https://archive.raspberrypi.org/debian bullseye InRelease [23.7 kB]
Get:4 https://packages.azlux.fr/debian buster InRelease [3,989 B]
Get:5 https://archive.raspberrypi.org/debian bullseye/main armhf Packages [282 kB]
Get:6 https://packages.azlux.fr/debian buster/main armhf Packages [3,418 B]
Fetched 340 kB in 4s (94.8 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
3 packages can be upgraded. Run 'apt list --upgradable' to see them.업그레이드 가능한 패키지가 무엇인지 확인하려면 apt list --upgradable을 실행하세요:
kris@pihole:~ $ apt list --upgradable
Listing... Done
libcamera0/stable 0~git20220426+18e68a9b-1 armhf [upgradable from: 0~git20220303+e68e0f1e-1]
raspi-config/stable 20220425 all [upgradable from: 20220419]
rpi-eeprom/stable 13.13-1 armhf [upgradable from: 13.12-1]반면 저장소에 더 이상 새로운 버전의 패키지나 의존성이 없다면 다음과 같은 출력이 나타납니다:
kris@pihole:~ $ sudo apt-get update
Get:1 https://download.docker.com/linux/raspbian bullseye InRelease [26.7 kB]
Hit:2 https://ftp.harukasan.org/raspbian/raspbian bullseye InRelease
Hit:3 https://packages.azlux.fr/debian buster InRelease
Hit:4 https://archive.raspberrypi.org/debian bullseye InRelease
Fetched 26.7 kB in 3s (8,789 B/s)
Reading package lists... Done출력에 업그레이드 가능한 패키지에 대한 언급이 없고, apt list --upgradable 안내 문구도 나타나지 않습니다.
다만 이것이 반드시 시스템에 오래된 소프트웨어가 없다는 의미는 아닙니다. 단지 이미 최신 패키지 목록을 받아왔을 뿐일 수 있습니다. sudo apt-get update를 여러 번 실행한 경우에도 이런 결과가 나타날 수 있습니다.
언제든 apt list --upgradable을 다시 실행해 업그레이드 가능한 항목이 있는지 확인할 수 있습니다.
또는 더 현대적인 sudo apt update 명령어를 사용하는 것도 좋습니다. 이 명령어는 업그레이드 가능한 패키지 수를 항상 보여주거나, 모든 것이 최신 상태라는 안내 메시지를 표시합니다.
apt와 apt-get의 차이점에 대한 자세한 내용은 아래 FAQ 섹션을 참고하세요.
sudo apt-get upgrade 명령어 사용 방법
sudo apt-get update를 실행한 후, 같은 터미널 창에서 sudo apt-get upgrade를 입력하고 필요하면 비밀번호를 입력한 뒤 Enter 키를 누릅니다.
그러면 다음과 비슷한 출력이 나타납니다:
kris@pihole:~ $ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.
Do you want to continue? [Y/n] 출력 하단에서는 업그레이드될 패키지 목록을 확인할 수 있습니다:
The following packages will be upgraded:
libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.다운로드해야 할 데이터 용량과, 업그레이드된 패키지가 설치된 후 추가로 사용될 디스크 공간도 함께 표시됩니다:
Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.마지막으로 업그레이드를 계속 진행할지 묻는 프롬프트가 나타납니다:
Do you want to continue? [Y/n] y, Y, 또는 yes를 입력하면 업그레이드가 계속되고, n, N, 또는 no를 입력하면 upgrade 명령이 종료됩니다.
종료를 선택하면 다음과 같은 출력이 나타납니다:
kris@pihole:~ $ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.
Do you want to continue? [Y/n] n
Abort.업그레이드를 계속 진행하면 다음과 같이 긴 출력 결과가 나타납니다:
kris@pihole:~ $ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 https://archive.raspberrypi.org/debian bullseye/main armhf libcamera0 armhf 0~git20220426+18e68a9b-1 [548 kB]
Get:2 https://archive.raspberrypi.org/debian bullseye/main armhf raspi-config all 20220425 [30.3 kB]
Get:3 https://archive.raspberrypi.org/debian bullseye/main armhf rpi-eeprom armhf 13.13-1 [2,037 kB]
Fetched 2,616 kB in 3s (1,019 kB/s)
Reading changelogs... Done
(Reading database ... 43496 files and directories currently installed.)
Preparing to unpack .../libcamera0_0~git20220426+18e68a9b-1_armhf.deb ...
Unpacking libcamera0:armhf (0~git20220426+18e68a9b-1) over (0~git20220303+e68e0f1e-1) ...
Preparing to unpack .../raspi-config_20220425_all.deb ...
Unpacking raspi-config (20220425) over (20220419) ...
Preparing to unpack .../rpi-eeprom_13.13-1_armhf.deb ...
Unpacking rpi-eeprom (13.13-1) over (13.12-1) ...
Setting up rpi-eeprom (13.13-1) ...
Setting up libcamera0:armhf (0~git20220426+18e68a9b-1) ...
Setting up raspi-config (20220425) ...
Processing triggers for man-db (2.9.4-2) ...
Processing triggers for libc-bin (2.31-13+rpt2+rpi1+deb11u2) ...이 과정이 완료되면 오래된 패키지와 의존성이 모두 업데이트됩니다.
sudo apt-get upgrade 명령어에 대해 꼭 기억해야 할 중요한 점은, 이 명령은 아무것도 삭제하지 않고 업그레이드 가능한 것만 처리한다는 사실입니다.
예를 들어 업그레이드에 새로운 의존성이 필요하다면 upgrade 명령이 이를 다운로드해 설치하지만, 기존의 오래된 의존성은 제거하지 않습니다. 불필요한 의존성을 제거하려면 별도의 명령이 필요합니다. 새 커널 버전으로 업그레이드할 때 특히 자주 볼 수 있는 상황입니다.
업그레이드 후 다음과 비슷한 메시지가 표시된다면:
The following packages were automatically installed and are no longer required:
g++-8 gir1.2-mutter-4 libapache2-mod-php7.2 libcrystalhd3
Use 'sudo apt autoremove' to remove them.메시지의 안내대로 sudo apt autoremove를 사용해 불필요한 패키지를 제거할 수 있습니다.
sudo apt-get upgrade 명령어의 특수 옵션 활용법
sudo apt-get upgrade 명령에는 다양한 특수 옵션이나 파라미터를 사용할 수 있지만, 그중에서도 --dry-run과 --yes 두 가지가 특히 유용합니다.
--dry-run 옵션 사용 방법
--dry-run(-s 또는 --simulate로도 사용 가능) 옵션은 업그레이드 과정에서 일어날 일을 시뮬레이션해 보여주지만, 실제로 시스템에는 아무런 변화도 주지 않습니다:
kris@pihole:~ $ sudo apt-get upgrade --dry-run
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Inst libcamera0 [0~git20220303+e68e0f1e-1] (0~git20220426+18e68a9b-1 Raspberry Pi Foundation:stable [armhf])
Inst raspi-config [20220331] (20220425 Raspberry Pi Foundation:stable [all])
Inst rpi-eeprom [13.12-1] (13.13-1 Raspberry Pi Foundation:stable [armhf])
Conf libcamera0 (0~git20220426+18e68a9b-1 Raspberry Pi Foundation:stable [armhf])
Conf raspi-config (20220425 Raspberry Pi Foundation:stable [all])
Conf rpi-eeprom (13.13-1 Raspberry Pi Foundation:stable [armhf])데비안 및 데비안 계열 배포판은 매우 안정적이지만, 업그레이드 중 충돌이 발생하지 않을지 미리 확인하고 싶다면 이 옵션이 유용합니다.
--yes 옵션 사용 방법
--yes(-y 또는 --assume-yes로도 사용 가능) 옵션은 안전하다고 판단되는 프롬프트에 자동으로 'yes'로 응답합니다:
kris@pihole:~ $ sudo apt-get upgrade --yes
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.
Get:1 https://archive.raspberrypi.org/debian bullseye/main armhf libcamera0 armhf 0~git20220426+18e68a9b-1 [548 kB]
Get:2 https://archive.raspberrypi.org/debian bullseye/main armhf raspi-config all 20220425 [30.3 kB]
Get:3 https://archive.raspberrypi.org/debian bullseye/main armhf rpi-eeprom armhf 13.13-1 [2,037 kB]
...
Processing triggers for libc-bin (2.31-13+rpt2+rpi1+deb11u2) ...위 출력에서 Do you want to continue? [Y/n] 확인 단계가 생략되고 모든 패키지가 업그레이드되는 것을 볼 수 있습니다.
자주 묻는 질문(FAQ)
sudo와 apt-get이란 무엇인가요?
sudo apt-get update와 sudo apt-get upgrade에 대해 주목할 점은 두 명령 모두 sudo, apt-get, 그리고 update 또는 upgrade라는 세 부분으로 구성되어 있다는 것입니다.
sudo는 'superuser do'의 줄임말로, root(관리자) 권한으로 프로그램을 실행할 수 있게 해줍니다.
예를 들어 시스템 재부팅은 superuser/root 권한이 필요하므로, 터미널에서 reboot만 실행하면 다음과 비슷한 오류가 발생할 수 있습니다:
Failed to set wall message, ignoring: Interactive authentication required.
Failed to reboot system via logind: Interactive authentication required.
Failed to open initctl fifo: Permission denied
Failed to talk to init daemon.하지만 sudo reboot을 실행한 후 관리자 비밀번호를 입력하면, reboot 명령이 superuser 권한으로 실행되어 시스템이 즉시 재시작됩니다.
apt-get은 데비안 및 데비안 기반 리눅스 배포판에서 패키지를 설치하고 관리하는 커맨드 라인 도구입니다.
apt-get과 apt의 차이점은 무엇인가요?
apt는 데비안 및 데비안 기반 배포판에서 애플리케이션을 설치하고 관리하는 더 현대적인 도구입니다.
대체로 apt와 apt-get은 서로 바꿔 사용할 수 있습니다. sudo apt update와 sudo apt-get update는 모두 시스템의 패키지 목록을 업데이트합니다.
눈에 띄는 주요 차이점은 apt가 입력하기 더 간편하고, 출력 결과가 일반적으로 더 유용하며, 패키지 설치 시 진행률 표시줄 같은 사용자 친화적인 기능을 포함하고 있다는 점입니다.
이 글의 대부분 예제는 apt-get을 사용했지만, 앞으로는 apt를 사용하는 것을 적극 추천합니다.
sudo apt-get update와 sudo apt-get upgrade는 안전한가요?
네, 안전합니다. 데비안 및 데비안 계열 배포판은 대체로 매우 안정적이며, update와 upgrade 명령어는 안심하고 사용할 수 있습니다. 패키지/의존성의 주요 업데이트와 배포판 자체의 대규모 릴리스가 연간 한두 번만 진행되기 때문입니다.
단점은 Arch Linux처럼 최신 버전을 빠르게 제공하는 배포판과 달리, 특정 패키지의 가장 최신 버전을 사용하려면 추가 작업이 필요할 수 있다는 점입니다. PPA를 통해 서드파티 저장소를 설정하거나, Snap이나 Flatpak 같은 대체 패키징 시스템을 사용하거나, 직접 패키지를 컴파일해야 할 수도 있습니다.
하지만 약간 구버전의 소프트웨어가 주는 안정성은 그만한 가치가 있다고 생각합니다.
sudo apt-get update와 sudo apt-get upgrade를 한 줄로 연결할 수 있나요?
sudo apt-get update를 실행하고 완료될 때까지 기다린 후 다시 sudo apt-get upgrade를 실행하는 게 번거롭다고 느껴질 수 있습니다.
두 명령 모두 비교적 빠르게 실행되지만, 여러 명령을 한 번에 실행해 놓고 몇 분 뒤에 결과를 확인하는 편이 더 효율적일 때가 있습니다.
&& 연산자를 사용하면 다음과 같이 여러 명령을 연결할 수 있습니다:
sudo apt-get update && sudo apt-get upgrade&& 연산자의 핵심은 연산자 뒤의 명령이 앞선 명령이 성공한 경우에만 실행된다는 점입니다.
위 예제에서는 sudo apt-get update가 성공해야만 sudo apt-get upgrade가 실행됩니다. 패키지 목록 업데이트 중 네트워크 문제 같은 오류가 발생하면 sudo apt-get update는 건너뛰어집니다.
sudo apt-get dist-upgrade와 sudo apt full-upgrade란 무엇이며, 안전한가요?
Stack Overflow 스레드에 따르면, 이 명령들은 내부적으로 동일한 작업을 수행합니다. 오래된 패키지를 업그레이드하고, 필요할 경우 지능적으로 일부 패키지를 제거합니다.
본질적으로 sudo apt-get upgrade와 sudo apt autoremove 명령을 합친 것과 같습니다.
이 명령들은 대부분의 경우 안전하게 실행됩니다.
하지만 많은 사람들(필자 포함)은 sudo apt-get update와 sudo apt-get upgrade를 대신 사용할 것을 권장합니다. 변경 사항을 미리 검토할 기회가 더 많고, upgrade는 절대 패키지를 삭제하지 않으므로 덜 위험하기 때문입니다.
./thanks_for_reading.sh
sudo apt-get update와 sudo apt-get upgrade에 대한 정리가 도움이 되었다면, 주변 지인에게 공유해 더 많은 사람들이 혜택을 볼 수 있도록 해주세요.
또한 트위터로 의견을 전달해 주셔도 좋습니다.