검색 엔진의 방문이 늘어나고 있군...

Posted
Filed under 프로그램과 명령어/서버와 서비스
참조 원문 : Create a Local Repository on Ubuntu 13.04 Server
참조 원문 : Create a Local Ubuntu Repository using Apt-Mirror and Apt-Cacher

  로컬 네트워크에 있는 다수의 시스템에 소프트웨어, 보안 업데이트를 자주 설치해야 한다면 로컬 우분투 저장소를 두는 것이 효율적입니다. 필요한 모든 패키지를 LAN을 통해 받을 수 있어 인터넷 대역폭을 아낄 수 있기 때문입니다. 이 글에서는 우분투 13.04 서버에 로컬 저장소를 설치하는 두 가지 방법을 소개합니다.

방법 1: APT-Mirror
  이 방법은 공인 저장소(우분투 메인 서버)로부터 모든 패키지를 끌어와 우리 서버의 로컬 하드 드라이브에 저장하는 방법입니다. 먼저 Apache 서버를 설치합니다. 이는 네트워크를 통해 패키지를 공유하기 위해 필요합니다. 그 후 APT-Mirror를 설치합니다.
$ sudo apt-get install apache2
$ sudo apt-get install apt-mirror
  최소 50GB 이상의 빈 공간이 필요합니다. 이 글에서는 /myrepo라는 디렉토리를 생성하여 모든 패키지를 그 디렉토리 안에 저장할 것입니다.
$ sudo mkdir /myrepo
  /etc/apt/mirror.list 파일을 열어서 아래에서 설명하고 있는 부분들을 변경합니다.
############# config ##################
#

## 주석을 해제하고 저장소 디렉토리를 설정 ##
set base_path    /myrepo

#
# 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 raring main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu raring-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu raring-updates main restricted universe multiverse [...]
  위 설정 파일에서 우분투 소스 목록을 추가할 수 있습니다. 이 글에서는 디폴트 13.04 소스 리스트를 사용합니다.

  32비트와 64비트를 모두 사용한다면 위 파일에서 저장소를 지정할 때 관련 내용을 넣어야 합니다. 32비트와 관련된 줄은 deb-i386로 시작해야 하며, 64비트와 관련된 줄은 deb-amd64로 시작해야 합니다. 수정을 마치면 아래 명령어로 저장소를 생성합니다.
$ sudo apt-mirror
[sudo] password for mirashi:
Downloading 2028 index files using 20 threads...
Begin time: Wed May 29 23:23:09 2013
[20]...
  이제 공인 저장소의 패키지가 로컬 저장소에 저장됩니다. 당연히 이 작업에는 상당한 시간이 소요됩니다. 참고로 중간에 중단했다가 후에 다시 실행하면 중단했던 부분부터 다시 재개하므로 부담없이 중간에 중단할 수 있습니다.

  위 명령어는 새로운 소프트웨어와 업데이트를 받기 위해 주기적으로 실행할 필요가 있습니다. /etc/cron.d/apt-mirror 파일을 열어서 아래 줄의 주석을 제거합니다.
0 4 * * *   apt-mirror      /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log
  이제 클라이언트가 http를 통해 패키지를 가져갈 수 있도록 만들어야 합니다. Apache의 DocumentRoot에 가서 아래와 같이 심볼릭 링크를 생성합니다. 기본적으로 Apache의 DocumentRoot는 FollowSymLinks 옵션을 가지고 있기 때문에 이것으로 해결할 수 있지만 보안을 강화하기 위해 해당 옵션을 제거한 상태라면 다시 추가하거나 Apache의 Alias 기능을 사용하는 등 다른 방법을 찾아야 합니다.
$ cd /var/www/html
$ sudo ln -s /myrepo/mirror/us.archive.ubuntu.com/ubuntu/ ubuntu

클라이언트 설정
  클라이언트에서 /etc/apt/sources.list 파일을 열어서 로컬 저장소 경로를 추가합니다.
[...]
deb http://192.168.1.200/ubuntu raring universe
deb http://192.168.1.200/ubuntu raring main restricted
deb http://192.168.1.200/ubuntu raring-updates main restricted
[...]


방법 2: APT-Cacher
  APT-Cacher는 이름처럼 클라이언트가 요청한 적이 있었던 패키지들을 보관했다가 클라이언트가 해당 패키지를 요구할 때 제공하는 방식입니다.

  이 방식도 Apache 서버를 설치해야 합니다. 그 후 APT-Cacher를 설치합니다.
$ sudo apt-get install apache2
$ sudo apt-get install apt-cacher
  이때 데몬(스탠드얼론)과 inetd 중 어느 방식으로 운영할지를 묻는데 원하는 방식을 선택합니다. 설치가 끝나면 /etc/default/apt-cacher 파일을 열어 AUTOSTART가 0으로 되어 있으면 1로 수정합니다.

  원한다면 /etc/apt-cacher/apt-cacher.conf 파일의 allowed_hosts와 denied_hosts 항목으로 캐시에 접근 가능/불가 호스트를 지정할 수 있습니다. 만약 해당 항목을 수정했다면 apt-cacher를 재시작합니다.
sudo /etc/init.d/apt-cacher restart
  이제 모든 클라이언트에서 /etc/apt/apt.conf.d/90-apt-proxy.conf 파일을 만들어 아래 내용을 넣습니다.
Acquire::http::Proxy "http://서버IP:3142";
2013/07/15 16:40 2013/07/15 16:40