歡迎您光臨本站 註冊首頁

Ubuntu自動備份軟體包和製作本地源

←手機掃碼閱讀     火星人 @ 2014-03-26 , reply:0

轉自Deepwhite http://hi.baidu.com/yangyingchao
Ubuntu
之所以成為眾多Linux發行版裡面最受歡迎的版本之一,除了可以免費申請安裝光碟以外,另外一個影響很大的原因在於:軟體豐富、速度快。比如想要安裝媒體播放器mplayer,確保聯網以後只要一個命令:apt-get install mplayer以後,所有的工作(解決依賴關係,下載和安裝軟體等等)計算機都會自動進行;系統有了更新以後,只要輸入:apt-get dist-upgrade就可以全面更新系統。這種「類傻瓜(真正傻瓜的是Window$,但它的「傻」和Linux的又有明顯不同,不多討論)似的」安裝和升級方法給用戶帶來了極大的方便。

但伴隨這種方便的軟體安裝和升級而來的,是網路的速度和流量問題。比如,在用了很長一段時間以後,某人的機器因為個人操作不當而導致崩潰,那麼重裝以後想要執行系統更新,那麼很可能會耗費幾百兆的流量,即便有些寬頻服務提供者並不按照流量計費,但是如果網速不快的話這些更新的下載所耗費的時間也會讓人惱火。又比如,如果一個實驗室或者一個區域網內,如果有多個Ubuntu(或者其他的Linux)用戶,如果每個人都各自去從外網上安裝或者更新軟體,這對網路流量和時間來講會有很大的浪費。

解決這一問題的方法其實很簡單,就是──備份安裝或者更新時候下載的軟體包,並添加本地源。這樣可以節省很多的流量和時間,尤其是對於網速不高或者對網路流量有限制的人來講,好處無疑是很大的。本文分為了兩個部分,第一部分講了如何手動製作和添加本地源;第二部分針對手動方法帶來的幾個不便進行了修正,給出了自動解決方案。


一、手動製作和添加本地源 每一次install時系統下載的軟體包,包括各個軟體所依賴的包都會保存在/var /cache/apt/archives/目錄下,選定某一次通過網路安裝完自己所常用到的所有軟體之後,將該文件夾下的所有文件都複製到一個不常格式化的分區裡面,即可作為以後重裝系統時的本地源,具體步驟如下。
1、在某個系統重裝時候不會被格式化的磁碟分區下建立一個目錄,用於放所有下載的軟體包,另外建立一個目錄用於存放Packages.gz包,比如我的:
mkdir -p /media/sda7/Backup/Ubuntu/Pakcages
mkdir -p /media/sda7/Backup/Ubuntu/dists/hardy/main/binary-amd64
其中的binary-amd64根據自己的系統類型會有所變化,比如binary-i386等等,根據自己的機器酌情更改。
2、複製文件到前面建立的文件夾下:
sudo cp /var/cache/apt/archives/* /media/sda7/Backup/Ubuntu/Pakcages
3、將建立Packages.gz包,裡面記錄了packs文件夾下面的軟體包信息,包括依賴信息。
dpkg-scanpackages Packages hardy | gzip > dists/hardy/main/binary-amd64/Packages.gz
4、加本地源
sudo gedit /etc/apt/sources.list
加入 deb file:///media/sda7/Backup/Ubuntu/ hardy main ,注意,這裡只是我電腦上的路徑,請依實際位置修改。如果出錯,請按照系統的出錯提示進行相應設置。
5、設置完成
完成以上設置和文件複製之後,就可以開始正常使用本地的源了和使用網路上的源一樣操作。
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install XXX
這樣就完成了本地源的手動配置。

二、自動備份軟體包和製作本地源
手動備份軟體包時卻常常會出現另外一個問題,即新舊軟體包的重複。比如:原來最初備份的是
kdesktop_4%3a3.5.8-0ubuntu7.3_amd64.deb,現在更新以後有了其更新版本:kdesktop_4%3a3.5.9-0ubuntu7.3_amd64.deb,將他們放在同一個備份文件夾的話,浪費磁碟空間,而且在用dpkg-scanpackages生成本地源的時候還會產生大量、煩人的警告信息。當然我們可以手動其刪除老闆本的包,但如果一次更新了幾十幾百個包的話,這個刪除工作恐怕就讓人為難了。以下是一個腳本,更新完之後執行一下,就可以實現軟體包備份、陳舊包刪除、新軟體添加進本地源這一系列工作,省了不少事情,嘿嘿。
#! /bin/sh
SOURCE=/var/cache/apt/archives
DEST=/media/sda7/Backup/Ubuntu/Packages
cd $SOURCE
for name in $(ls *.deb);
do
cd $DEST
rm $(dpkg --info $SOURCE/$name | grep Package: | sed 's/Package://')_*
mv $SOURCE/$name $DEST/
cd $SOURCE
done

cd $DEST
cd ..
dpkg-scanpackages Packages hardy | gzip > dists/hardy/main/binary-amd64/Packages.gz


[ 本帖最後由 deepwhite 於 2008-8-4 14:53 編輯 ]

[火星人 ] Ubuntu自動備份軟體包和製作本地源已經有447次圍觀

http://coctec.com/docs/linux/show-post-177540.html