2013年10月31日 星期四

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 <目錄> 指定另外的軟體包快取位置



沒有留言:

張貼留言