红联Linux门户
Linux帮助
当前位置: 红联Linux门户 > Ubuntu

Ubuntu自动备份软件包和制作本地源

发布时间:2008-08-04 09:34:35来源:红联作者:deepwhite
[font=Times New Roman, serif] [/font][font=AR PL UMing CN, serif]转自[size=9pt]Deepwhite http://hi.baidu.com/yangyingchao[/size][/font][font=Times New Roman, serif]
Ubuntu
[/font]之所以成为众多[font=Times New Roman, serif]Linux[/font]发行版里面最受欢迎的版本之一,除了可以免费申请安装光盘以外,另外一个影响很大的原因在于:软件丰富、速度快。比如想要安装媒体播放器[font=Times New Roman, serif]mplayer[/font],确保联网以后只要一个命令:[font=Times New Roman, serif]apt-get install mplayer[/font]以后,所有的工作(解决依赖关系,下载和安装软件等等)计算机都会自动进行;系统有了更新以后,只要输入:[font=Times New Roman, serif]apt-get dist-upgrade[/font]就可以全面更新系统。这种“类傻瓜(真正傻瓜的是[font=Times New Roman, serif]Window$[/font],但它的“傻”和[font=Times New Roman, serif]Linux[/font]的又有明显不同,不多讨论)似的”安装和升级方法给用户带来了极大的方便。

但伴随这种方便的软件安装和升级而来的,是网络的速度和流量问题。比如,在用了很长一段时间以后,某人的机器因为个人操作不当而导致崩溃,那么重装以后想要执行系统更新,那么很可能会耗费几百兆的流量,即便有些宽带服务提供者并不按照流量计费,但是如果网速不快的话这些更新的下载所耗费的时间也会让人恼火。又比如,如果一个实验室或者一个局域网内,如果有多个[font=Times New Roman, serif]Ubuntu[/font](或者其他的[font=Times New Roman, serif]Linux[/font])用户,如果每个人都各自去从外网上安装或者更新软件,这对网络流量和时间来讲会有很大的浪费。[font=宋体][size=10pt]

解决这一问题的方法其实很简单,就是──备份安装或者更新时候下载的软件包,并添加本地源。这样可以节省很多的流量和时间,尤其是对于网速不高或者对网络流量有限制的人来讲,好处无疑是很大的。本文分为了两个部分,第一部分讲了如何手动制作和添加本地源;第二部分针对手动方法带来的几个不便进行了修正,给出了自动解决方案。
[/size][/font]

一、手动制作和添加本地源[font=宋体][size=10pt] 每一次[/size][/font][font=Times New Roman, serif]install[/font][font=宋体][size=10pt]时系统下载的软件包[/size][/font][font=Times New Roman, serif],[/font][font=宋体][size=10pt]包括各个软件所依赖的包都会保存在[/size][/font][font=Times New Roman, serif]/var /cache/apt/archives/[/font][font=宋体][size=10pt]目录下,选定某一次通过网络安装完自己所常用到的所有软件之后,将该文件夹下的所有文件都复制到一个不常格式化的分区里面,即可作为以后重装系统时的本地源,具体步骤如下。[/size][/font]
[font=Times New Roman, serif]1[/font][font=宋体][size=10pt]、在某个系统重装时候不会被格式化的磁盘分区下建立一个目录,用于放所有下载的软件包,另外建立一个目录用于存放[/size][/font][font=Times New Roman, serif]Packages.gz[/font][font=宋体][size=10pt]包,比如我的:[/size][/font]
[font=Times New Roman, serif]mkdir -p /media/sda7/Backup/Ubuntu/Pakcages[/font]
[font=Times New Roman, serif]mkdir -p /media/sda7/Backup/Ubuntu[font=Times New Roman, serif]/dists/hardy/main/binary-amd64[/font][/font]
[font=宋体]其中的[/font][font=Times New Roman, serif][font=Times New Roman, serif]binary-amd64[/font][/font][font=宋体]根据自己的系统类型会有所变化,比如[/font][font=Times New Roman, serif]binary-i386[/font][font=宋体]等等,根据自己的机器酌情更改。[/font]
[font=Times New Roman, serif]2[/font][font=宋体][size=10pt]、复制文件到前面建立的文件夹下:[/size][/font]
[font=Times New Roman, serif]sudo cp /var/cache/apt/archives/* /media/sda7/Backup/Ubuntu/Pakcages[/font]
[font=Times New Roman, serif]3[/font][font=宋体][size=10pt]、将建立[/size][/font][font=Times New Roman, serif]Packages.gz[/font][font=宋体][size=10pt]包,里面记录了[/size][/font][font=Times New Roman, serif]packs[/font][font=宋体][size=10pt]文件夹下面的软件包信息,包括依赖信息。[/size][/font]
[font=Times New Roman, serif]dpkg-scanpackages Packages hardy | gzip > dists/hardy/main/binary-amd64/Packages.gz[/font]
[font=Times New Roman, serif]4[/font][font=宋体][size=10pt]、加本地源[/size][/font]
[font=Times New Roman, serif]sudo gedit /etc/apt/sources.list[/font]
[font=宋体][size=10pt]加入 [/size][/font][font=Times New Roman, serif]deb file:///media/sda7/Backup/Ubuntu/ hardy main ,[/font][font=宋体][size=10pt]注意,这里只是我电脑上的路径,请依实际位置修改。如果出错,请按照系统的出错提示进行相应设置。[/size][/font]
[font=Times New Roman, serif]5[/font][font=宋体][size=10pt]、设置完成[/size][/font]
[font=宋体][size=10pt]完成以上设置和文件复制之后,就可以开始正常使用本地的源了和使用网络上的源一样操作。[/size][/font]
[font=Times New Roman, serif]sudo apt-get update[/font]
[font=Times New Roman, serif]sudo apt-get dist-upgrade[/font]
[font=Times New Roman, serif]sudo apt-get install XXX[/font]
这样就完成了本地源的手动配置。

二、自动备份软件包和制作本地源[size=10pt]
手动备份软件包时却常常会出现另外一个问题,即新旧软件包的重复。比如:原来最初备份的是
[/size][font=Times New Roman, serif]kdesktop_4%3a3.5.8-0ubuntu7.3_amd64.deb[/font][size=10pt],现在更新以后有了其更新版本:[/size][font=Times New Roman, serif]kdesktop_4%3a3.5.9-0ubuntu7.3_amd64.deb[/font][size=10pt],将他们放在同一个备份文件夹的话,浪费磁盘空间,而且在用[/size][font=Times New Roman, serif]dpkg-scanpackages[/font][size=10pt]生成本地源的时候还会产生大量、烦人的警告信息。当然我们可以手动其删除老板本的包,但如果一次更新了几十几百个包的话,这个删除工作恐怕就让人为难了。以下是一个脚本,更新完之后执行一下,就可以实现软件包备份、陈旧包删除、新软件添加进本地源这一系列工作,省了不少事情,嘿嘿。[/size]
[font=AR PL UMing CN, serif][font=AR PL UMing CN, serif]#! /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
[/font][/font]

[ 本帖最后由 deepwhite 于 2008-8-4 14:53 编辑 ]
文章评论

共有 13 条评论

  1. lixiaoleiyh 于 2013-04-09 12:23:17发表:

    谢谢分享。

  2. 天上的云 于 2013-03-28 15:45:05发表:

    我试试

  3. 天使也哭 于 2008-11-26 18:06:52发表:

    以前我只知道下载的东西都缓存在本地了,但不知道在哪更不知道怎么利用了,这下好了,顶了!

  4. 小熊熊 于 2008-11-26 12:40:49发表:

    不错的东东,不过现在版本更新如此这快,还没有备份可能下个版本已经出来了

  5. tianciyx 于 2008-11-26 11:11:46发表:

    太好了,这个比离线安装的说的清晰明了

  6. 藤真 于 2008-11-24 20:39:24发表:

    顶呀,怎么不顶呀?

  7. cxb6514498 于 2008-11-04 12:57:47发表:

    我试试

  8. 朗朗1号 于 2008-11-03 22:25:06发表:

    感谢lz的好帖子。收藏学习。

  9. mengkunemail 于 2008-11-03 17:05:51发表:

    恩,不错,对于不能联网的可以下下来cp到电脑里再更新嘛?

  10. free一U 于 2008-11-03 16:24:15发表:

    LZ
    好厉害 啊 (5ty(

  11. aslome 于 2008-11-02 21:41:05发表:

    顶下

  12. dyl2616 于 2008-11-02 21:19:35发表:

    非常不错的主意呀;谢谢楼主写下的强文 。顶你

  13. 无影者 于 2008-11-01 00:37:00发表:

    这么好的文章,没人顶啊