使用IPFS搭建Ubuntu apt 鏡像站點

使用IPFS搭建Ubuntu apt 鏡像站點

Ubuntu apt安裝和更新軟件包太慢,考慮使用IPFS創建一個鏡像站點。使用IPFS創建軟件倉庫源能夠將版本永久保存,防止軟件包滅失和版本錯誤。並且能夠在任何地方創建存儲,經過使用P2P機制傳輸,從而有可能大大加快安裝過程。git

須要這幾個步驟:github

一、下載鏡像包

第一次下載的Ubuntu鏡像包將近一個TB,須要較長的時間。json

具體方法參見:ubuntu

二、添加到IPFS存儲中

須要啓用file store特徵(目前仍是體驗階段,不穩定),以下:服務器

ipfs config --json Experimental.FilestoreEnabled true

而後,運行:ionic

ipfs add -r mirror --nocopy

加了--nocopy參數後,再也不復制文件內容,能夠減小存儲空間和加入IPFS  repo的時間。spa

不過,在運行到這裏時,出錯。再次運行,仍是出錯。反饋IPFS開發組後,只能暫時等等了。.net

added Qmety5wAXby6LRpfki6cTHsBuho643x32Ye49NyN6bW1Gc mirror/ubuntu/dists/bionic/main/installer-i386/20101020ubuntu529/images/netboot/mini.iso
 7.28 GB / 856.61 GB [==>-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------]   0.85% 4h3m11spanic: interface conversion: interface {} is cmdkit.Error, not *coreunix.AddedObject

goroutine 37 [running]:
github.com/ipfs/go-ipfs/core/commands.glob..func7.2(0xc4201600c0)
	/go/src/github.com/ipfs/go-ipfs/core/commands/add.go:405 +0xa60
created by github.com/ipfs/go-ipfs/core/commands.glob..func7.3
	/go/src/github.com/ipfs/go-ipfs/core/commands/add.go:467 +0xc7

三、客戶端apt訪問

apt主要依據/etc/apt/source.list的配置進行訪問安裝包的源。須要:設計

  • 將具體IPFS地址(如:http://127.0.0.1/ipfs/HashIDXXXX,或者http://ipfs.io/ipfs/HashIDXXXX)替換source.list中的地址。可是,內容變化了之後,哈希地址也會發生改變。

四、加入名稱解析

由於IPFS是設計爲永久保存的版本化存儲系統,而Ubuntu的鏡像庫天天都有更新,每一次更新後再加入IPFS後,主目錄的HashID會發生變化,從而致使客戶端訪問地址發生改變。所以,須要將這個動態的IPFS地址映射到一個不變的域名地址上去,以免每次修改客戶端的apt訪問地址。unix

方法主要有:

  • 直接使用IPNS,可是目前的解析速度比較慢。IPNS能夠將本地目錄映射到主站ID,而主站ID是創建後就不變的。
  • 使用DNS服務器記錄映射到最終的IPFS服務,每次更新後同時去更新DNS服務器記錄。可是天天都更新的話,就比較煩了。
  • 直接將IPFS存儲放在外網服務器,更新後直接Update Web服務器的解析地址配置表。這個由於須要比較大的存儲和帶寬,比較費銀子。也沒有發揮出IPFS泛在存儲、P2P傳輸的優點。
  • 在外網創建一個Web服務器,每一次從新定向到新的地址。在每次更新後,須要將變動後的地址寫入Web服務器的配置表中。但這須要每次變動後登陸服務器進行修改,有一些麻煩(固然也能夠寫個腳原本幹這個事)。
  • 每次產生一個新的source.list列表,上傳到給定外網服務器地址。每次apt運行以前,先下載最新的source.list文件,而後再鏈接安裝包的源進行正常的更新。或者只是上傳這個HashID,客戶端寫個腳本,自動產生新的source.list,而後再進行apt的更新。這種方法比較簡單有效,後面有時間再去嘗試。

五、總結

  • 目前的實驗不算成功,後續還需努力。
  • Ubuntu安裝軟件源的第一次同步是成功的,花費了接近十天,雖然中間rsync數次自動終止而後手動重啓。
  • 添加到IPFS存儲,若是使用複製模式則須要耗費雙倍的存儲空間、每次更新後都須要花費大量時間再次加入。但若是使用--nocopy選項,不復制內容,目前版本(4.14-dev)中間退出,不成功。
  • 爲了每次更新後,Apt都能使用,須要將動態地址IPFS地址映射到固定域名和訪問地址。目前的IPNS還須要大力改進,源於底層的DHT更新機制改進或者建立新的機制。一個可行的方案是主動更新source.list列表,創建apt倉庫的二級更新機制。
相關文章
相關標籤/搜索