2014年5月22日 星期四

自建 Debian 鏡像站

2019/10/14 修改

目的:自建 Debian 鏡像站 (MIRROR)

在安裝 Debian Linux 的過程中,常常需要使用網路進行遠端連線來下載套件 (packages), 如果網路連線有問題的話,我們經常無法進行套件下載或更新的操作。這對執行專案是項極大的困擾,為了不讓網路干擾我們進行下載,因此必須自行建立 Debian 鏡像站。

Debian 支援相當多硬體架構,因此官方鏡像站需要相當多的容量才可以儲存所有套件,我們的計畫僅需要底下架構:

X86_64 (amd64)
i386 (i386)
EABI ARM (armel)
Hard Float ABI ARM (armhf)
ARM64 (arm64)

其它架構的檔案無需下載,以節省硬碟空間。要自建 Debian 鏡像站的流程如下:

1. 建立 ftp 伺服器

2. 下載 Debian 套件

3. 啟動服務

4. 設定 /etc/apt/sources.list

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

如果我們希望所下載的 Debian 鏡像站可以提供給 pxeserver 使用的話,還必須

利用 NFS 的方式將 Debian 鏡像站的目錄分享給 pxeserver。

=========================================

1. 建立 ftp 伺服器

請以 root 權限執行:

# apt-get install proftpd-basic

安裝完畢後,請修改 /etc/proftpd/proftpd.conf 這個檔案,將底下部份移除行首之 #
(註解),移除完之結果如底下所述:

---------
 <Anonymous ~ftp>
   User                         ftp
   Group                                nogroup
   # We want clients to be able to login with "anonymous" as well as "ftp"
   UserAlias                    anonymous ftp
   # Cosmetic changes, all files belongs to ftp user
   DirFakeUser  on ftp
   DirFakeGroup on ftp

   RequireValidShell            off

   # Limit the maximum number of anonymous logins
  MaxClients                    70

   # We want 'welcome.msg' displayed at login, and '.message' displayed
   # in each newly chdired directory.
   DisplayLogin                 welcome.msg
   DisplayChdir         .message

   # Limit WRITE everywhere in the anonymous chroot
   <Directory *>
     <Limit WRITE>
       DenyAll
     </Limit>
   </Directory>

   # Uncomment this if you're brave.
   # <Directory incoming>
   #   # Umask 022 is a good standard umask to prevent new files and dirs
   #   # (second parm) from being group and world writable.
   #   Umask                            022  022
   #            <Limit READ WRITE>
   #            DenyAll
   #            </Limit>
   #            <Limit STOR>
   #            AllowAll
   #            </Limit>
   # </Directory>

 </Anonymous>
--------

接著請修改 /etc/passwd 將 ftp 的家目錄由 /srv/ftp 改至 /home/ftp

修改完成後,請執行 proftpd-basic 服務,指令如下:


# /etc/init.d/proftpd restart
[ ok ] Stopping ftp server: proftpd.
[ ok ] Starting ftp server: proftpd.

啟動完畢後,我們可以使用 iceweasel 或是 gftp 來驗證自己的 ftp 站是否已完成架設。

=========================================

2. 下載 Debian 套件

由於 Debian 套件所佔之容量極為龐大,要下載 Debian 套件前請先確定自己的 /home/ftp 目錄是否有至少 150 GB 的容量,以免硬碟容量不足。


接下來請安裝 debmirror 套件,以便下載 Debian 鏡像站,接著請撰寫底下 script:

#HOST=ftp.tw.debian.org
HOST=debian.nctu.edu.tw
#HOST=opensource.nchc.org.tw
#HOST=ftp.twaren.net

debmirror \
        --arch=i386,amd64,armel,armhf \
        --dist=buster,buster-updates,buster-backports \
        --di-arch=i386,amd64,armel \
        --di-dist=stable \
        --host=$HOST \
        --root=":debian" \
        --diff=none -p \
        --nosource \
        --method=rsync \
        --section main,contrib,non-free \
        --i18n \
        --ignore-release-gpg /home/ftp/debian/ ;


此 script 請放在 /home/ftp 目錄下,執行:

# sh getdeb.sh

接著此 script 就會自動進行 Debian 套件下載的工作,我們也可以使用 crontab

讓此工作定期 (每日凌晨 2 點) 執行。




4. 設定 /etc/apt/sources.list

請修改 /etc/apt/sources.list

加上以下兩行:


deb file:/home/ftp/debian/ buster main contrib non-free

deb ftp://127.0.0.1/debian buster main contrib non-free
deb ftp://localhost/debian buster main contrib non-free


其中第一行是指在本機端下載套件時,可以不經由 ftp 傳輸協定,直接使用檔案複製的方式來進行套件下載。

第二行則是透過 ftp 傳輸協定,自 127.0.0.1 下載套件,請注意 lo 介面要打開,否則沒有 ftp://localhost 或 ftp://127.0.0.1。因此我們新的 /etc/apt/sources.list 可以只保留底下這幾行:

deb file:/home/ftp/debian/ buster main contrib non-free

deb ftp://127.0.0.1/debian buster main contrib non-free
#deb ftp://localhost/debian buster main contrib non-free

deb http://security.debian.org/ stable/updates main contrib

修改完畢後,可以在本機端使用

apt-get update
apt-get upgrade

apt-get install 套件

來進行安裝測試,以確認自己所架設之 Debian 鏡像站可以正常運轉。

沒有留言:

張貼留言