2013-11-01

arch 離線安裝之下載所需要的完整套件

如果你有時候需要在沒網路的地方想安裝或升級,那就需要先把所需要的套件抓回來。但是你可能會碰到一個問題,你在A電腦抓要給B電腦裝,兩者的資料庫並不相同,沒另外處理/下載有依賴關係的套件,那麼到B電腦在安裝/升級時會缺東缺西套件的。

之前在關於本地源那篇文章我是用pactree來下載處理。今天在此G+受到 +Nox Dot  +Yushin Huang啟發直接用類似構件新的chroot方式來處理。

此篇著重在下載套件,離線安裝還需要處理資料庫這一塊,目前還沒有想到,如果說你所去的地方只是網路較慢,那你在A電腦下載到B電腦將快取指向你的隨身碟位置,這樣只需要下載少量的套件就可以囉。


此shell script會在你指定的newsys位置構件一個新的系統,每次啟動前都會將舊的newsys砍掉,這樣就能保持在全新的狀態,全新裝態下載就不用額外處理依賴相關套件。

此shell script並不會影響你原生的系統,因為他只會執行下載,下載的套件會放在downlad位置中。

P.S newsys位置千萬不要只設定成/呀!記得要指定其它位置哦

Save this code too foo

#!/bin/bash
typeset -A newsys download
newsys=/tmp/newsys
download=/tmp/download
test -d $newsys && sudo rm -r $newsys
sudo mkdir -p $newsys/var/lib/pacman $download
sudo pacman -r $newsys/ -Syy
sudo pacman -r $newsys/ --cachedir $download -Sw $@
  • modify newsys:you new system path
  • modify download:you downlad cache path

Now

chmod +x foo

Usa

./foo fooNAME

Pacman所用到的指令如下:
pacman -S --help
用法: pacman {-S --sync} [選項] [軟體包]
選項:
 -y, --refresh        從伺服器下載新的軟體包資料庫

-r, --root <路徑> 指定另外的安裝根目錄
--cachedir <目錄> 指定另外的軟體包快取位置