본문 바로가기
Linux

apt-mirror(Ubuntu Local Repository) 구축하기

by worldcenter 2025. 6. 19.

 

보통 배포판 리눅스의 경우 서버에서 자주 사용되는 유용한 패키지들을 저장하는 중앙 저장소(Repository)가 존재합니다. 그리고 apt, dnf 와 같은 패키지 관리도구를 이용하여 중앙 저장소에서 필요한 소프트웨어들을 설치합니다.

이 때 중앙 저장소는 온라인에 존재하기에 서버가 인터넷망과 접속되어 있지 않은 경우 해당 저장소에 접근이 불가합니다. 이와같이 보안적인 이유로 서버가 외부와 접속이 불가할 경우에도 패키지 관리도구를 이용하여 저장소에서 필요한 패키지를 설치할 수 있는 방법을 소개합니다.

 

 

APT-Mirror

apt-mirror는 Ubuntu에서 운영하는 온라인 패키지 저장소를 로컬에 복사할 수 있도록 도와주는 툴 입니다. 해당 도구를 통해 내부망 서버에 APT Mirror Local Repository를 구축할 수 있습니다. 내부망에 존재하는 서버들은 온라인 저장소 대신 APT Mirror Local Repository로부터 패키지를 다운로드 할 수 있어 회사 내부 보안 정책 상 외부에 접근할 수 없는 서버들도 해당 로컬 저장소를 통해 패키지를 관리할 수 있습니다.

 

 

APT-Mirror Local Repository 구축하기

본문에서는 apt-mirror를 사용하여 Azure Blob에 Local Repository를 구축하고 사용하는 방법을 소개합니다. 

 

1) 사전 환경 설정

  • 저장소를 미러링 할 Ubuntu 22.04 LTS
  • 패키지가 저장될 수 있는 충분한 SSD 용량 확보 필요(약 240GB)
  • Azure Blob 생성

 

2) Ubuntu Repository Mirroring

1. apt-mirror 패키지를 설치합니다.

sudo apt-get update
sudo apt-get install apt-mirror

 

2. apt-mirror 설정파일은 /etc/apt/mirror.list에 저장되어 있습니다. 기존 mirror.list 파일을 백업하고 새로운 설정 파일을 추가하여 사용자 환경에 맞게 수정 합니다.

sudo cp /etc/apt/mirror.list /etc/apt/mirror.list.origin
sudo vi /etc/apt/mirror.list
############# config ##################
# 미러 서버의 기본 경로를 설정
# 이 디렉토리에 미러 서버의 모든 데이터가 저장
set base_path    /var/spool/apt-mirror/mirror
#
# set mirror_path  $base_path/mirror
# set skel_path    $base_path/skel
# set var_path     $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch  <running host architecture>
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0
set nthreads     20
set _tilde 0
#
############# end config ##############
 
#deb http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu jammy-security main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse
 
#AzureRepo
deb http://azure.archive.ubuntu.com/ubuntu/ jammy universe multiverse main restricted
deb http://azure.archive.ubuntu.com/ubuntu/ jammy-updates universe multiverse main restricted
deb http://azure.archive.ubuntu.com/ubuntu/ jammy-backports universe multiverse main restricted
deb http://azure.archive.ubuntu.com/ubuntu/ jammy-security universe multiverse main restricted
deb [arch=amd64,arm64,armhf] https://packages.microsoft.com/ubuntu/22.04/prod jammy main
 
#AzureCLI
deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ jammy main
 
#Docker
deb http://download.docker.com/linux/ubuntu/ jammy stable
 
#deb http://archive.ubuntu.com/ubuntu jammy-proposed main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse
 
#deb-src http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu jammy-security main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu jammy-proposed main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse
 
#clean http://archive.ubuntu.com/ubuntu

 

3. 설정 파일 변경이 완료된 후 apt-mirror를 실행합니다.

sudo apt-mirror

 

4. 미러링이 완료되면 /var/spool/apt-mirror 경로에 패키지들이 다운로드 됩니다. 이제는 해당 패키지들을 blobfuse를 사용하여 Blob에 업로드 합니다.

sudo wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install libfuse3-dev fuse3
sudo apt-get install blobfuse2
sudo blobfuse2 mount /var/spool/blob --config-file=./config.yaml
rsync -avhP /var/spool/apt-mirror/mirror/ /var/spool/blob/

 

5. 업로드가 완료되면 다음과 같이 Blob Storage에서 확인 할 수 있습니다.

 

3) 클라이언트 구성

apt-mirror 서버 구성이 완료된 후 각 클라이언트에서 이제 외부에 존재하는 Ubuntu Repository가 아닌 apt-mirror 서버(여기서는 blob storage)를 바라보도록 해야 합니다.

 

1. 클라이언트 서버에 접속한 뒤 기존의 /etc/apt/sources.list 파일을 백업합니다.

sudo mv /etc/apt/sources.list /etc/apt/sources.list.origin

 

2. 새로운 sources.list 파일을 생성하고 저장합니다.

cat > /etc/apt/sources.list <<EOF
deb https://<Blob URL>/mirror/azure.archive.ubuntu.com/ubuntu/ jammy universe multiverse main restricted
deb https:///<Blob URL>/mirror/azure.archive.ubuntu.com/ubuntu/ jammy-updates universe multiverse main restricted
deb https:///<Blob URL>/mirror/azure.archive.ubuntu.com/ubuntu/ jammy-backports universe multiverse main restricted
deb https:///<Blob URL>/mirror/azure.archive.ubuntu.com/ubuntu/ jammy-security universe multiverse main restricted
deb https:///<Blob URL>/mirror/packages.microsoft.com/ubuntu/22.04/prod/ jammy main
EOF

 

3. repository를 update 합니다.

sudo apt update

 

 

결과

해당 작업은 금융권 프로젝트(2024) 당시 진행했던 작업으로 apt-mirror의 경우 ubuntu에서 공식적으로 제공하는 소프트웨어가 아니라 커뮤니티에서 개발된 소프트웨어 입니다. 또한 공식 github 문서를 확인해보니 현재(2025)는 유지보수를 진행하지 않는 프로젝트기에 지속적으로 사용하실 경우 이를 유의하고 사용해야 합니다.

 

참고 링크

https://github.com/apt-mirror/apt-mirror.git

 

GitHub - apt-mirror/apt-mirror: Official apt-mirror source.

Official apt-mirror source. Contribute to apt-mirror/apt-mirror development by creating an account on GitHub.

github.com

 

https://www.linuxtechi.com/setup-local-apt-repository-server-ubuntu/

 

How to Setup Local APT Repository Server on Ubuntu 22.04

The step-by-step guide on this page will show you how to setup local apt repository server on Ubuntu 22.04 with apt-mirror command.

www.linuxtechi.com

 

 

 

 

 

 

'Linux' 카테고리의 다른 글

Disk Migration(Mirror LV)  (0) 2025.06.19
Ubuntu에서 APT(Advanced Package Tool) 이란?  (0) 2025.06.18
[Linux] systemd 초기화 데몬  (0) 2025.05.14
[Linux] 부트로더 설정 이해하기  (0) 2025.05.14
[Linux] 리눅스 부팅 프로세스  (0) 2025.05.09