📦 우분투에서 프로그램은 어떻게 설치할까? apt 패키지 관리 이해하기
✨ 리눅스 패키지 관리의 기본 구조를 이해해보세요!
👉 apt update, apt install이 실제로 어떤 작업을 하는지
👉 패키지는 어디에서 다운로드되는지
👉 apt와 dpkg는 무엇이 다른지
리눅스를 사용하다 보면 가장 자주 만나게 되는 명령어 중 하나가 바로 apt입니다.
sudo apt update
sudo apt install apache2
단순히 명령어를 외우기보다 APT가 내부적으로 어떻게 동작하는지 이해하면 리눅스 패키지 관리가 훨씬 쉬워집니다.
📱 1. 스마트폰의 앱스토어와 비슷한 리눅스 패키지 관리
스마트폰에서 프로그램을 설치할 때는 App Store나 Google Play를 사용합니다.
📱 스마트폰
↓
🏪 App Store
↓
🌐 앱스토어 서버
리눅스도 비슷한 구조를 가지고 있습니다.
다만 리눅스에서는 프로그램을 일반적으로 패키지(Package)라는 단위로 관리합니다.
🐧 Ubuntu Linux
↓
📦 패키지 관리자
↓
🌐 패키지 저장소(Repository)
우분투에서 대표적으로 사용하는 패키지 관리자가 바로 APT입니다.
🔹 Ubuntu / Debian → apt
🔹 RHEL / Rocky Linux → dnf, yum
즉,
📌 스마트폰에서 앱스토어가 프로그램을 관리한다면, 리눅스에서는 패키지 관리자가 프로그램 설치와 업데이트를 관리합니다.
🌐 2. 패키지는 어디에서 다운로드할까?
apt 프로그램 자체가 Apache나 MariaDB를 가지고 있는 것은 아닙니다.
실제 프로그램은 인터넷에 존재하는 Repository(패키지 저장소)에서 다운로드합니다.
대표적인 Ubuntu Repository는 다음과 같습니다.
http://archive.ubuntu.com/ubuntu/
예를 들어 다음 명령어를 실행하면,
sudo apt install apache2
APT가 Repository에서 Apache 패키지를 찾아 다운로드합니다.
🐧 Ubuntu
│
│ apt install apache2
▼
📦 APT
│
│ 패키지 요청
▼
🌐 Ubuntu Repository
│
│ apache2 다운로드
▼
💻 Ubuntu 시스템에 설치
🗂️ 3. APT는 Repository 주소를 어떻게 알고 있을까?
APT는 인터넷 전체에서 프로그램을 무작정 검색하지 않습니다.
미리 설정되어 있는 Repository 주소를 이용합니다.
APT 관련 설정은 주로 다음 위치에 있습니다.
ls /etc/apt/
대표적으로 다음과 같은 파일과 디렉터리를 확인할 수 있습니다.
apt.conf.d
auth.conf.d
keyrings
preferences.d
sources.list
sources.list.d
trusted.gpg.d
특히 Repository 설정과 관련해서 중요한 부분은 다음입니다.
📁 /etc/apt/sources.list
📁 /etc/apt/sources.list.d/
예를 들어 다음과 같이 확인할 수 있습니다.
cat /etc/apt/sources.list
즉,
🔎 APT는 미리 등록된 Repository 서버를 확인하여 필요한 패키지를 검색하고 다운로드합니다.
🔄 4. sudo apt update는 무엇을 하는 명령어일까?
APT에서 가장 많이 사용하는 명령어 중 하나입니다.
sudo apt update
많은 분들이 처음에는 이 명령어를
"설치되어 있는 프로그램을 모두 업데이트하는 명령어"
라고 생각할 수 있습니다.
하지만 정확히는 다릅니다.
apt update는 Repository에서 최신 패키지 목록을 가져오는 명령어입니다.
🌐 Repository
↓
📋 최신 패키지 목록 다운로드
↓
💻 Ubuntu 로컬 패키지 정보 갱신
실제로 명령어를 실행하면 다음과 같은 형태의 메시지를 볼 수 있습니다.
Get:1 http://archive.ubuntu.com/ubuntu ...
Get:2 http://archive.ubuntu.com/ubuntu ...
Get:3 http://security.ubuntu.com/ubuntu ...
Reading package lists... Done
즉 apt update는 프로그램 자체를 업데이트하는 것이 아니라,
📌 "현재 Repository에는 어떤 패키지가 있고, 최신 버전은 무엇인지"에 대한 정보를 업데이트하는 작업입니다.
📋 5. 다운로드한 패키지 목록은 어디에 저장될까?
Repository에서 가져온 패키지 목록은 로컬 시스템에도 저장됩니다.
대표적인 위치는 다음과 같습니다.
/var/lib/apt/lists/
확인해보겠습니다.
ls /var/lib/apt/lists/
다음과 같이 Repository와 관련된 파일들을 확인할 수 있습니다.
archive.ubuntu.com_ubuntu_...
security.ubuntu.com_ubuntu_...
즉 다음 명령어를 실행하면,
sudo apt update
APT가 Repository의 최신 정보를 가져와 /var/lib/apt/lists/ 영역의 패키지 정보를 갱신합니다.
🔬 동작 원리를 확인하는 실습에서는 기존 목록을 삭제한 뒤 다시 다운로드해볼 수도 있습니다.
sudo rm -rf /var/lib/apt/lists/*
sudo apt update
⚠️ 단, 이 명령은 APT 동작 원리를 확인하기 위한 실습 용도로 사용하는 것이 좋습니다.
일반적인 서버 운영에서는 특별한 이유 없이 삭제할 필요는 없습니다.
🚀 6. Apache 웹서버 설치하기
이번에는 실제 패키지를 설치해보겠습니다.
Apache 웹서버를 설치합니다.
sudo apt install -y apache2
각 옵션의 의미는 다음과 같습니다.
🔐 sudo
→ 관리자 권한으로 명령어 실행
📦 apt install
→ 패키지 설치
✅ -y
→ 설치 과정의 질문에 자동으로 Yes 응답
🌐 apache2
→ 설치할 패키지 이름
APT의 중요한 기능 중 하나는 의존성(Dependency) 관리입니다.
Apache가 동작하기 위해 다른 패키지가 필요하다면 APT가 이를 확인하여 같이 설치합니다.
apache2
│
├── apache2-bin
├── apache2-data
├── apache2-utils
└── 기타 Dependency
👉 사용자가 필요한 패키지를 하나하나 찾아 설치하지 않아도 된다는 것이 패키지 관리자의 큰 장점입니다.
🗄️ 7. MariaDB 서버 설치하기
Database 서버인 MariaDB도 같은 방식으로 설치할 수 있습니다.
sudo apt install -y mariadb-server
APT가 Repository를 확인하고,
🔎 MariaDB 패키지 검색
⬇️ 패키지 다운로드
🔗 의존성 확인
📦 관련 패키지 설치
과정을 자동으로 처리합니다.
결국 사용자는 기본적으로 다음 구조만 알고 있어도 프로그램을 쉽게 설치할 수 있습니다.
sudo apt install 패키지명
🔎 8. 설치된 패키지 확인하기
프로그램을 설치했다면 정말 설치되었는지 확인해볼 수 있습니다.
Apache 관련 패키지를 확인해보겠습니다.
apt list --installed | grep apache2
apt list --installed는 현재 시스템에 설치되어 있는 패키지를 보여줍니다.
여기에 grep을 연결하면 필요한 내용만 확인할 수 있습니다.
apache2
apache2-bin
apache2-data
apache2-utils
Apache 하나를 설치했지만 여러 관련 패키지가 함께 설치된 것을 확인할 수 있습니다.
💡 이것 역시 패키지 의존성 관리 때문입니다.
🆚 9. apt와 dpkg는 무엇이 다를까?
apt와 dpkg는 모두 패키지를 관리하지만 역할이 조금 다릅니다.
📦 APT
- Repository와 통신
- 패키지 검색
- 패키지 다운로드
- Dependency 분석
- 필요한 패키지 자동 설치
🔧 dpkg
- Debian 패키지 자체를 직접 관리
.deb패키지 설치- 설치된 패키지 상태 관리
전체 구조를 단순하게 표현하면 다음과 같습니다.
👤 사용자
│
▼
📦 APT
│
├─ 🌐 Repository 검색
├─ 🔎 Dependency 분석
├─ ⬇️ 패키지 다운로드
│
▼
🔧 dpkg
│
▼
💻 실제 패키지 설치
따라서 일반적인 프로그램 설치에서는 apt를 사용하는 것이 편리합니다.
sudo apt install apache2
패키지 상태를 조금 더 직접적으로 확인할 때는 dpkg를 사용할 수도 있습니다.
dpkg -l
🔄 10. apt update → apt install 흐름 이해하기
우분투에서 프로그램을 설치할 때 전체적인 흐름을 정리해보겠습니다.
① 📋 패키지 목록 업데이트
sudo apt update
⬇️
Repository에서 최신 패키지 정보를 가져옵니다.
② 📦 필요한 패키지 설치
sudo apt install -y apache2
또는
sudo apt install -y mariadb-server
⬇️
APT가 패키지와 Dependency를 다운로드하고 설치합니다.
③ 🔎 설치 결과 확인
apt list --installed | grep apache2
또는
dpkg -l | grep mariadb-server
전체 과정을 한 번에 보면 다음과 같습니다.
🌐 Repository
│
│ 최신 패키지 목록
▼
🔄 apt update
│
▼
📋 로컬 패키지 목록
│
│ 패키지 검색
▼
📦 apt install apache2
│
├─ Dependency 확인
├─ 패키지 다운로드
▼
🔧 dpkg
│
▼
💻 Ubuntu 시스템 설치 완료
🎯 핵심 정리
우분투의 패키지 관리 구조는 스마트폰의 앱스토어와 비교하면 쉽게 이해할 수 있습니다.
📱 스마트폰
App Store
↓
앱 검색
↓
다운로드
↓
설치
🐧 Ubuntu
Repository
↓
패키지 검색
↓
다운로드
↓
설치
✨ 핵심 명령어를 다시 정리하면 다음과 같습니다.
# 🔄 패키지 목록 최신화
sudo apt update
# 🌐 Apache 웹서버 설치
sudo apt install -y apache2
# 🗄️ MariaDB 서버 설치
sudo apt install -y mariadb-server
# 🔎 Apache 설치 확인
apt list --installed | grep apache2
# 🔧 MariaDB 설치 확인
dpkg -l | grep mariadb-server
💡 가장 중요한 핵심
apt update는 프로그램 자체를 업데이트하는 명령어가 아닙니다.
🌐 Repository에서 최신 패키지 정보를 가져와 로컬 패키지 목록을 갱신하는 명령어입니다.
apt, Repository, Dependency, dpkg의 관계를 이해해두면 이후 리눅스에서 패키지를 설치하고 관리하는 과정도 훨씬 쉽게 이해할 수 있습니다. 🐧
추가적으로 리눅스 네트워크를 더 공부하고싶다면 왕초보를 위한 리눅스 기초를 참고하세요. https://reallinux.co.kr/course/linux_beginner