06. Ubuntu Server에서 소프트웨어 설치 및 관리: 완전 가이드

소프트웨어 관리는 모든 Ubuntu Server 관리자에게 기본적인 기술입니다. Azure, AWS, GCP와 같은 클라우드 환경에서 작업하든 온프레미스 인프라를 관리하든, APT 와 같은 패키지 관리 도구를 이해하는 것은 안전하고 최적화된 시스템을 유지하는 데 필수적입니다.

이 가이드에서는 소프트웨어 설치, 업데이트, 관리의 기초를 다루고, 클라우드별 시나리오를 살펴보고, 일반적인 문제를 해결하고, Ubuntu Server 관리를 익히는 데 도움이 되는 실제 예제를 제공합니다.


이전 글:

01. Ubuntu Server 소개 – SysOSX: AI & Cloud

02. 첫 Ubuntu 서버 설정 방법: 초보자 가이드 – SysOSX: AI & Cloud

03. Ubuntu Server용 Linux 명령줄 익히기 – SysOSX: AI & Cloud

04. Ubuntu Server에서 사용자 및 권한 관리: 종합 가이드 – SysOSX: AI & Cloud

05. Ubuntu Server 네트워킹 기초: 종합 가이드 – SysOSX: AI & Cloud



1. Ubuntu에서 APT 및 패키지 관리 이해

Ubuntu Server는 APT (Advanced Package Tool)를 기본 패키지 관리자로 사용합니다. APT는 종속성을 자동으로 처리하고 리포지토리를 패키지의 신뢰할 수 있는 소스로 사용하여 소프트웨어 관리를 단순화합니다.

APT의 주요 구성 요소:

  • apt: 패키지를 관리하기 위한 명령줄 도구입니다.
  • dpkg: .deb 파일용 하위 수준 패키지 관리자입니다.
  • 리포지토리: Ubuntu 패키지가 저장되고 검색되는 온라인 소스입니다.

2. APT를 사용한 소프트웨어 설치

Ubuntu Server에 소프트웨어를 설치하려면 apt install 명령을 사용합니다.

예: Apache 웹 서버 설치

  • 패키지 목록을 업데이트합니다.
sudo apt update 

출력:

Hit:1 http://azure.archive.ubuntu.com/ubuntu noble InRelease
Get:2 http://azure.archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]
Get:3 http://azure.archive.ubuntu.com/ubuntu noble-backports InRelease [126 kB]
Get:4 http://azure.archive.ubuntu.com/ubuntu noble-security InRelease [126 kB]
Get:5 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages [922 kB]
Get:6 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 Components [151 kB]
Get:7 http://azure.archive.ubuntu.com/ubuntu noble-updates/universe amd64 Components [364 kB]
Get:8 http://azure.archive.ubuntu.com/ubuntu noble-updates/restricted amd64 Components [212 B]
Get:9 http://azure.archive.ubuntu.com/ubuntu noble-updates/multiverse amd64 Components [940 B]
Get:10 http://azure.archive.ubuntu.com/ubuntu noble-backports/main amd64 Components [7076 B]
Get:11 http://azure.archive.ubuntu.com/ubuntu noble-backports/universe amd64 Components [21.3 kB]
Get:12 http://azure.archive.ubuntu.com/ubuntu noble-backports/restricted amd64 Components [212 B]
Get:13 http://azure.archive.ubuntu.com/ubuntu noble-backports/multiverse amd64 Components [212 B]
Get:14 http://azure.archive.ubuntu.com/ubuntu noble-security/main amd64 Components [9024 B]
Get:15 http://azure.archive.ubuntu.com/ubuntu noble-security/universe amd64 Components [51.9 kB]
Get:16 http://azure.archive.ubuntu.com/ubuntu noble-security/restricted amd64 Components [208 B]
Get:17 http://azure.archive.ubuntu.com/ubuntu noble-security/multiverse amd64 Components [208 B]
Fetched 1907 kB in 1s (2778 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
15 packages can be upgraded. Run 'apt list --upgradable' to see them.
  • Apache를 설치합니다.
sudo apt install apache2

3. 소프트웨어 제거

패키지가 더 이상 필요하지 않으면 apt remove 또는 apt purge 명령을 사용하여 제거할 수 있습니다.

예: Apache 제거

sudo apt remove apache2

출력:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  apache2
...
After this operation, 2 MB disk space will be freed.
Do you want to continue? [Y/n]

구성 파일을 포함하여 완전히 제거하려면:

sudo apt purge apache2


4. 패키지 업데이트 및 업그레이드

정기적인 업데이트는 시스템 보안과 안정성에 매우 중요합니다.

명령어:

  • 패키지 목록 업데이트
sudo apt update 
  • 설치된 패키지 업그레이드
sudo apt upgrade
  • 전체 업그레이드(커널 업데이트 포함)
sudo apt full-upgrade

출력:

The following packages will be upgraded:
  linux-image-5.4.0-91-generic linux-headers-5.4.0-91-generic ...
Do you want to continue? [Y/n]

5. 리포지토리 관리

리포지토리는 패키지 관리에 필수적입니다. 기본적으로 Ubuntu는 공식 리포지토리를 사용하지만 필요에 따라 추가 리포지토리를 추가, 수정, 제거할 수 있습니다.

Deb822 형식으로 리포지토리 관리

최근 Ubuntu 버전은 Deb822 형식 을 사용한 리포지토리 관리로 전환했습니다. 기존의 /etc/apt/sources.list 파일 대신, 리포지토리는 이제 .sources 파일을 통해 관리됩니다. 이러한 파일은 /etc/apt/sources.list.d/ 디렉터리에 위치합니다.

현재 리포지토리 보기

현재 리포지토리를 보려면 .sources 파일을 확인합니다. 위치는 /etc/apt/sources.list.d/:

ls /etc/apt/sources.list.d/

예를 들어:

cat /etc/apt/sources.list.d/ubuntu.sources

 .sources 파일의 Deb822 형식은 다음과 같습니다.

Types: deb
URIs: http://archive.ubuntu.com/ubuntu/
Suites: noble-security
Components: main universe restricted multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

리포지토리 추가

Deb822 형식으로 새 리포지토리를 추가하려면 .sources 파일을 다음 디렉터리에 만듭니다. /etc/apt/sources.list.d/. 예를 들어, 사용자 지정 PPA 리포지토리를 추가하려면:

sudo nano /etc/apt/sources.list.d/custom.sources

원하는 사용자 지정 콘텐츠를 추가합니다.

Types: deb
URIs: http://customizedurl/
Suites: noble
Components: main
Signed-By: /usr/share/keyrings/repository-name.gpg

파일을 저장하고 패키지 목록을 업데이트합니다.

sudo apt update

리포지토리 제거

리포지토리를 제거하려면 다음 디렉터리에서 해당 .sources 파일을 삭제합니다. /etc/apt/sources.list.d/:

sudo rm /etc/apt/sources.list.d/custom.sources
sudo apt update

Deb822 형식의 이점

  • 구조화된 구성: 리포지토리 유형, URI, 제품군, 구성 요소를 명확히 구분합니다.
  • 향상된 보안: 리포지토리 서명을 위해 GPG 키를 지정할 수 있습니다. 사용하는 필드는 Signed-By 입니다.
  • 더 나은 호환성: 클라우드 및 컨테이너화된 환경에서 여러 리포지토리를 더 쉽게 관리할 수 있습니다.

자세한 내용은 sources.list(5) 매뉴얼 페이지를 참조하세요.


6. 패키지 캐시 관리

APT는 다운로드한 패키지 파일과 메타데이터를 로컬에 저장하기 위해 캐시 시스템을 사용합니다. 이 캐시는 소프트웨어 설치 및 업데이트와 같은 작업을 가속화하는 데 도움이 되지만 시간이 지남에 따라 커져 디스크 공간을 차지할 수 있습니다. 캐시를 관리하는 방법을 이해하는 것은 시스템 성능을 유지하고 리소스를 확보하는 데 필수적입니다.

캐시 크기 확인

캐시가 사용 중인 공간을 확인하려면:

sudo du -sh /var/cache/apt/

출력 예:

126M    /var/cache/apt/

캐시 정리

  1. 패키지 캐시 지우기
     apt clean 명령을 사용하여 캐시된 모든 패키지 파일을 제거합니다.sudo apt clean 이렇게 하면 /var/cache/apt/archives 디렉터리가 비워집니다. 이 디렉터리에는 다운로드한 .deb 파일이 저장됩니다.
  2. 부분 다운로드 제거
    다운로드가 중단되거나 손상된 경우 다음을 사용하여 부분 파일을 제거합니다.sudo apt autoclean 이렇게 하면 오래된 파일과 부분 다운로드만 제거됩니다.

캐시 정리 예제 출력

sudo apt clean
sudo apt autoclean

출력:

Cleaning up /var/cache/apt/archives...
Removing unused files...
Done.

캐시 다시 빌드

캐시 메타데이터가 손상된 것으로 의심되면 패키지 목록을 업데이트하여 캐시를 다시 빌드합니다.

sudo apt update 

이렇게 하면 리포지토리의 최신 메타데이터로 로컬 캐시가 새로 고쳐집니다.


7. 클라우드 시나리오: Azure, AWS, GCP에서의 소프트웨어 관리

클라우드 환경에서 Ubuntu Server의 소프트웨어 관리는 온프레미스 설정과 비슷하게 작동합니다. 다만 추가로 고려할 사항이 있습니다.

Azure

  • Azure는 사용자 지정 스크립트 확장 을 제공하여 VM 배포 시 소프트웨어 설치를 자동화합니다.
  • 예: 스크립트를 사용한 Nginx 설치:
az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name CustomScript \
  --publisher Microsoft.Azure.Extensions \
  --settings '{"commandToExecute":"sudo apt update && sudo apt install -y nginx"}'

AWS

  •  사용자 데이터 스크립트 를 사용하여 인스턴스 시작 시 소프트웨어를 설치합니다.
  • 예: EC2 인스턴스에 Docker 설치:
#!/bin/bash
sudo apt update
sudo apt install -y docker.io

GCP

  •  시작 스크립트 를 사용하여 VM 인스턴스에서 소프트웨어 설치를 관리합니다.
  • 예: MySQL 설치:
#!/bin/bash
sudo apt update
sudo apt install -y mysql-server

8. 설치 또는 제거 중 일반적인 문제 해결

1. 패키지를 찾을 수 없음

패키지를 찾을 수 없으면 리포지토리가 활성화되어 있는지 확인하세요.

sudo apt update 
sudo apt update

2. 종속성 오류

누락된 종속성을 수정합니다.

sudo apt --fix-broken install

3. 리포지토리 문제

리포지토리 오류를 확인합니다.

sudo apt update 

출력 예:

Err:1 http://ppa.launchpad.net/repository-name/ubuntu noble Release
  404 Not Found

해결 방법: 다음 파일에서 리포지토리 항목을 제거하거나 수정합니다. /etc/apt/sources.list.

4. 제거 후 잔여 파일이 남음

남은 파일을 정리합니다.

sudo apt autoremove
sudo apt purge package-name

5. 권한 거부됨

루트 권한이 있는지 확인하세요.

sudo apt install package-name


9. 패키지 관리 모범 사례

  • 소프트웨어를 설치하기 전에 항상 업데이트
sudo apt update 
  • 시스템을 정기적으로 업그레이드
     apt upgrade 또는 apt full-upgrade 를 사용하여 시스템을 안전하게 유지합니다.
  • 불필요한 패키지 제거
sudo apt autoremove
  • 신뢰할 수 있는 리포지토리 사용
    필요하지 않은 경우 타사 리포지토리는 피하세요.
  • 클라우드 환경에서 패키지 변경 사항 모니터링
    Ansible과 같은 스크립트나 구성 관리 도구를 사용하여 업데이트를 자동화합니다.
  • 캐시를 주기적으로 지우기
    디스크 공간을 확보하기 위해 캐시를 정기적으로 지우세요.
sudo apt clean

결론

온프레미스 서버를 관리하든 클라우드에서 작업하든, Ubuntu Server에서 소프트웨어 설치 및 관리를 마스터하는 것은 안전하고 효율적인 시스템을 유지하는 데 중요합니다. 이 가이드에 설명된 모범 사례를 따르면 서버를 최적화된 상태로 유지하고 모든 워크로드에 대비할 수 있습니다.

자세한 내용은 Ubuntu 공식 문서를 참조하세요. 항목은 APT.

다음은?

다음 문서에서는 Ubuntu Server 패치 및 업데이트에 대해 더 깊이 다룰 예정입니다. 이는 보안과 안정성을 유지하기 위한 중요한 작업입니다. 배울 내용은 다음과 같습니다.

  • 패치 적용이 보안과 안정성에 중요한 이유 와 취약성을 방지하는 방법.
  •  apt 를 사용하여 서버를 효과적으로 업데이트하고 업그레이드하는 방법.
  •  apt update, apt upgrade, 그리고 apt full-upgrade 간의 차이점과 일반적인 실수를 피하는 방법.
  • 업데이트 자동화  unattended-upgrades 를 통한 시간 절약 및 일관성 보장.
  •  커널 업데이트 처리 방법과 reboot-required 알림을 사용한 서버의 원활한 재시작.

Ubuntu Server를 안전하고 최신 상태로 유지하기 위한 실행 가능한 인사이트를 기대해 주세요!

4 thoughts on “06. Installing and Managing Software on Ubuntu Server: A Complete Guide”

댓글 남기기