1. 程式人生 > >apt-mirror建立本地ubuntu倉庫源

apt-mirror建立本地ubuntu倉庫源

首先,我們要安裝apt-mirror
$sudo apt-get install apt-mirror

假設我們將映象等檔案放在 /service/Ubuntu資料夾下:

請事先新建以下資料夾(mirror.list裡面提示要我們事先新建資料夾的):

/service/ubuntu
/service/ubuntu/mirror
/service/ubuntu/skel
/service/ubuntu/var

配置apt-mirror:

$sudo vi /etc/apt/mirror.list
--------------------------------------------------------------
############# config ##################
#
# set base_path /var/spool/apt-mirror
#
# if you change the base path you must create the directories below with write privlages
#
# 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 base_path /service/ubuntu

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 nthreads    20
set _tilde 0
#
############# end config ##############

#我們把常用的軟體同步過來就夠用了
deb-i386 http://archive.Ubuntu.com/ubuntu hardy main restricted universe multiverse
deb-i386 http://archive.ubuntu.com/ubuntu hardy-updates main restricted universe multiverse
deb-i386 http://archive.ubuntu.com/ubuntu hardy-backports main restricted universe multiverse
deb-i386 http://archive.ubuntu.com/ubuntu hardy-security main restricted universe multiverse
deb-i386 http://archive.ubuntu.com/ubuntu hardy-proposed main restricted universe multiverse

#當某些軟體包在伺服器端進行了升級,或者伺服器端不再需要這些軟體包時,我們使用了 apt-mirror與伺服器同步後,會在本地的$var_path/下生成一個clean.sh的指令碼,列出了遺留在本地的舊版本和無用的軟體包,你可 以手動執行這個指令碼來刪除遺留在本地的且不需要用的軟體包
clean http://archive.ubuntu.com/ubuntu

-----------------------------------------------------------------------------

如果用amd64位架構下的包,可以加上deb-amd64的標記
如果什麼都不加,直接使用deb http.....這種格式,則在同步時,只同步當前系統所使用的架構下的軟體包。比如一個64位系統,直接debhttp....只同步64位的軟體 包。如果還嫌麻煩,直接去改set defaultarch  <running hostarchitecture>這個引數就好,比如改成set defaultarch i386,這樣你使用debhttp.....這種格式,則在同步時,只同步i386的軟體包了。

如果你還想要原始碼,可以把原始碼也加到mirror.list裡面同步過來,比如加上deb-src這樣的標記。想要其他的東西也可以追加相應的標記來完成。

配置好後我們就可以和指定的映象進行同步了
$sudo apt-mirror

如果是第一次同步,官方映象可能需要幾天時間才能同步完整,如果與國內源進行同步,只同步常用軟體,平均1秒鐘網速1MB(Byte)要同步30G左右的資料,大概需要5-8小時的時間才能同步完整。

同步完成後,我們可以利用clean.sh清理無用軟體包(本文件以set base_path /server/ubuntu為例):
$sudo sh /service/ubuntu/var/clean.sh

更新完畢後,可以使用apache釋出源映象了。

以上摘錄 我下載了68個G的 64位源 同步的是mirrors.163.com

下面配置apache2

進入httpd.conf修改
#<Directory />
#    AllowOverride none
#    Require all denied
#</Directory>

改成
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    allow from all
</Directory>

在<IfModule alias_module> 節點中增加虛擬目錄
<IfModule alias_module>
    Alias /ubuntu /workspace/ubuntu/mirror/mirrors.163.com/ubuntu
</IfModule>
新增虛擬目錄的許可權
<Directory "/workspace/ubuntu/mirror/mirrors.163.com/ubuntu">
      Options Indexes FollowSymLinks
      AllowOverride None
        Require all granted
</Directory>

由於有opengrok 做了個tomcat的埠轉發
ProxyPass /source http://localhost:8081/source
ProxyPassReverse /source http://localhost:8081/source

重啟apache即可

客戶端配置source.list

sudo vim /etc/source.list

deb [arch=amd64] http://192.168.19.184/ubuntu/ trusty main restricted
deb [arch=amd64] http://192.168.19.184/ubuntu/ trusty-updates main restricted
deb [arch=amd64] http://192.168.19.184/ubuntu/ trusty universe
deb [arch=amd64] http://192.168.19.184/ubuntu/ trusty-updates universe
deb [arch=amd64] http://192.168.19.184/ubuntu/ trusty multiverse
deb [arch=amd64] http://192.168.19.184/ubuntu/ trusty-updates multiverse
deb [arch=amd64] http://192.168.19.184/ubuntu/ trusty-backports main restricted universe multiverse
deb [arch=amd64] http://192.168.19.184/ubuntu/ trusty-security main restricted
deb [arch=amd64] http://192.168.19.184/ubuntu/ trusty-security universe
deb [arch=amd64] http://192.168.19.184/ubuntu/ trusty-security multiverse

sudo apt-get update 即可