2008年2月26日 星期二

ubuntu 使用本地套裝軟體作為安裝來源

每次重裝系統後都要經過漫長的apt-get install來裝回那些我們自己所需要的,但系統安裝光碟裏又沒有的軟體,實在是件痛苦的事。

  方法一:

  每一次install時系統下載的套裝軟體,包括各個軟體所依賴的包都會保存在/var/cache/apt/archives/目錄下,選定某一次通過網 絡安裝完自己所常用到的所有軟體之後,將該文件夾下的所有文件都複製到一個不常格式化的分區裏面,作為以後重裝系統時的本地源,可謂省時省心省力。

  以下為操作過程,為驗證,特意重裝一次系統,無語。

  一、在自己的根目錄下建立一個目錄,用於放所有下載的套裝軟體,目錄名隨自己喜歡,建議新手在自己的根目錄下進行以下操作,以避免操作許可權問題的困擾。

  mkdir ~/ packs

  二、複製文件到packs文件夾下,目錄依各人情況變化。

  sudo cp /var/cache/apt/archives/* ~/packs

  三、將建立Packages.gz包,裏面記錄了packs文件夾下面的套裝軟體資訊,包括依賴資訊。

  dpkg-scanpackages packs /dev/null |gzip > packs/Packages.gz

  完成此操作後,將packs文件夾複製到一個不常格式化的分區中,作為長久使用,比如我將它放在一個fat32的分區時面,路徑是 /media/hda6/linux/soft/packs

  四、加本地源

  sudo gedit /etc/apt/sources.list

  加入 deb linux/soft/packs/">file:///media/hda6/linux/soft/packs/ edgy main ,注意,這裡只是我電腦上的路徑,請依實際位置修改.edgy 是我的ubuntu版本(7.04's version feisty),main也不是固定的,也可以用restricted等,只是在下面第五步中的操作中對應建立的目錄結構不同而已,這裡只舉 main的例子。有興趣的同仁可以加一個試試,系統的出錯提示會有文件夾設置資訊。

  五、設置packs目錄下的目錄結構

  在packs目錄下建立這樣的結構

  packs/dists/edgy/main/binary-i386/

  packs/packs/ #也就是在packs下再建立一個packs

  以上這兩層的目錄用於放置不同類型的包,據我電腦上試驗過程中的提示,好像binary-386目錄下放的是各種軟體的安裝包, packs/packs/ 目錄下放的是各個依賴的包以及系統更新的包,基本上是以lib開頭的,最保險的辦法是把所有包都複製到這兩個文件夾下面。

  六、設置完成

  完成以上設置和文件複製之後,就可以開始正常使用本地的源了和使用網路上的源一樣操作。

  sudo apt-get update

  sudo apt-get dist-upgrade

  sudo apt-get install XXX

  方法二:

  一下更簡單的辦法,完第一個目錄結構後,把Packages.gz那個包放在binary-i386文件夾下面,然後把所有的deb包複製到/var/cache/apt/archives/下就可以了。

  估計apt-get install的工作原理是這樣的,先從Packages.gz包裏讀取軟體列表和包依賴資訊,安裝某個軟體時先掃描本地archieves目錄,如果可以找到對應的包,就開始安裝,否則從源裏下載該包。

  其實我實現這些操作的思路很簡單啊

  1、備份手上已有的套裝軟體

  2、建立這些軟體列表和依賴資訊 packages.gz

  3、建立目錄結構,可隨意在本地源地址後加上 main、 restricted之類的關鍵字,然後apt-get update,系統會給出出錯提示,裏面就包含了各個關鍵字對應的目錄結構,

  4、添加本地源 deb file:/// dir/dir/dir/……

  建議大家在碰到系統錯誤時認真看系統的提示,linux的系統出錯提示可不像比爾先生的那樣都是說廢話

  方法三:

  下載DVD版本,然後把它作為源. 有兩種方式:

  1. 可以直接放在硬盤上,然後mount到某個目錄裏,比如: sudo mount -t iso9660 -o loop xxx.iso /mnt

  然後修改sources.list,改成 deb file:///mnt edgy main …… 後面和你的原來的格式一樣.

  2. 刻盤.然後在新立得裏面用將CD Rom設置為源

  下次要是再sudo apt-get update時,有可能有新的包文件,是不是還要這樣添加呢,

  還有如果自己從別的站點下載的包,可否也加入到其中而用sudo apt-get install xxx來安裝呢?

  它的原理是從Packages.gz裏面讀取套裝軟體及依賴資訊,如果你往裏面加了新的包,就要重新執行

  dpkg-scanpackages packs /dev/null |gzip > packs/Packages.gz

  來更新里面的文件資訊了,然後再

  sudo apt-get udpate

  應該就OK了,

  如果是你自己下載的包,那必須是deb的包,而且保證把它所依賴的包都 下到本地。

  最好是在那準備重裝系統之前把/var/cache/apt/archives/下面的文件都保存下來,再建立這些文件的packages.gz

  把你下載的東西放一個地方,然後用sudo ln -s 到/var/cache/apt/archives

  一切OK!

0 意見: