Ubuntu 16.04 建立 APT Mirror site

2017-01-20 Ubuntu

最近因為配合工作所以建立了一個 APT Mirror site,順手記錄一下安裝步驟

 

由於是 Mirror site,所以要準備一個硬碟至少 300GB 的空間,因為光是 Ubuntu 官方源 amd64、i386、src .. 加一加就 200 多 GB 了

 

環境:

  • Ubuntu 16.04 xenial
  • 預備存放 packages 的空間:/deb

 

 

安裝 APT Mirror site

Step.1 先更新你的 packages database

$ apt-get update

 

Step.2 安裝 apt-mirror

$ apt-get install apt-mirror

 

Step.3 設定 apt-mirror 的 mirror list,由於我希望 apt-mirror 安裝在 /deb,所以必須修改 base_path

$ vim apt-mirror /etc/apt/mirror.list

set base_path    /deb
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 postmirror_script $var_path/postmirror.sh
set nthreads     20
set _tilde       0
  • base_path 是 apt-mirror 的根目錄路徑
  • mirror_path 是存放 packages 的地方,這裡必須硬碟空間夠大,否則會悲劇
  • cleanscript 這個是在 apt-mirror 在向外更新 packages 後會清除暫存檔,打開 clean.sh 不要懷疑,他就是沒有任何程式碼。
  • postmirror_script 這個是在 apt-mirror 向外更新完後會執行的 script,可以在這邊寫一些想要執行的動作。

大致上的設定重點在這邊

 

Step.4 mirror.list 加入 repo 源,主要分為 amd64、i386、src 三種,其中軟體分類 main, universe .. 參考 Ubuntu 套件管理

$ vim /etc/apt/mirror.list

..
..

# Ubuntu 16.04
deb http://archive.ubuntu.com/ubuntu xenial main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu xenial-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu xenial-updates main restricted universe multiverse

deb-src http://archive.ubuntu.com/ubuntu xenial main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu xenial-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu xenial-updates main restricted universe multiverse


# Nginx
deb http://nginx.org/packages/mainline/ubuntu xenial nginx
deb-src http://nginx.org/packages/mainline/ubuntu xenial nginx

# clean
clean http://archive.ubuntu.com/ubuntu
clean http://nginx.org/packages/mainline/ubuntu

 

deb repo 的 url 組成是有意義的舉例 nginx 來說

deb http://nginx.org/packages/mainline/ubuntu xenial nginx

  • http://nginx.org/packages/mainline/ubuntu  根目錄:裡面必須由 conf, db, dists, pool 組成
  • xenial nginx 從 dists 後的目錄到 binary-amd64, binary-i386, source

 

如果要新加一個 apt-mirror 路徑為 http://shazi.info/packages/mainline/ubuntu/dists/xenial/release/apache/binary-amd64

那我的設定就會是 deb-amd64 http://shazi.info/packages/mainline/ubuntu xenial release apache

 

如果沒加 amd64, i386,就會依照 apt-mirror 這台 Server 的位元自動選擇。

apt-mirror 可以選擇就近的 free.nchc.org.tw 國網中心,也可以選擇官方的 archive.ubuntu.com (官方會替你備援這個網址)

 

Step.5 開始從鏡像 apt-mirror,如果是第一次更新,大概需要跑 3~4 個小時吧?!

$ apt-mirror

 

Step.6 安裝 apache2 提供 http 介面給 Client Server 獲取 packages

$ apt-get install apache2

 

Step.7 將鏡像回來的資料連結到網站目錄

$ mkdir -p /var/www/packages/{ubuntu,nginx}

# softlink nginx
$ ln -fs /deb/mirror/nginx.org/packages/mainline/ubuntu /var/www/packages/nginx

# softlink ubuntu
$ ln -fs /deb/mirror/archive.ubuntu.com/ubuntu /var/www/packages/ubuntu

 

Step.8 設定 apache

$ vim /etc/apache2/site-enabled/apt-mirror.conf

<VirtualHost *:80>
  ServerAdmin shazi7804@gmail.com
  DocumentRoot /var/www/packages

  <Directory /var/www/packages>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
  </Directory>

  LogLevel warn
  CustomLog ${APACHE_LOG_DIR}/apt-mirror_access.log combined
  ErrorLog ${APACHE_LOG_DIR}/apt-mirror_error.log
</VirtualHost>

 

Step.9 重啟生效

$ /etc/init.d/apache2 restart

 

Step.10 使用 Client Server 加入 source.list

# in client server
$ vim /etc/apt/source.list

deb http://mirrorserver/ubuntu xenial main restricted universe multiverse
deb http://mirrorserver/nginx xenial nginx

$ apt-get update

 

還可以用 apt-cache 驗證來源

$ apt-cache madison nginx
  nginx | 1.10.0-0ubuntu0.16.04.4 | http://mirrorserver/nginx xenial nginx

 

如果要定期更新,可以將 apt-mirror 寫入 crontab

01 0 * * * apt-mirror -c '/usr/bin/apt-mirror | tee /var/log/apt-mirror.log'

 

給 Mr. 沙先生一點建議

彙整

分類

展開全部 | 收合全部

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱