制作本地源,减轻对网络的依赖,降低重装系统后下载软件的痛苦!

2007-01-26 08:18

收藏自:http://forum.ubuntu.org.cn/viewtopic.php?t=32554


执行过sudo apt-get update && sudo apt-get disk-upgrade && sudo apt-get install XXX操作后,在系统光盘里面没有的更新包和软件包都会保存在









代码:
/var/cache/apt/archives/

里面,我们将以这些包为基础来制作本地安装源。本贴中所进行的操作建议新手在自己的根目录里进行,以避免权限的麻烦。以下为制作本地源的实现过程:
1.安装必要的软件包dpkg-dev









代码:
sudo apt-get install dpkg-dev


2.备份已经下载到本机的软件包和更新









代码:
mkdir ~/ packs? ?#在根目录建立packs文件夹,该目录可选
sudo cp -a /var/cache/apt/archives/*? ?~/packs


3.建立包列表及依赖信息文件









代码:
cd ~/
sudo dpkg-scanpackages packs /dev/null |gzip > packs/Packages.gz


该命令执行完成后,将在~/packs目录下生成一个Packages.gz文件,里面记录了所有本地包的列表及包依赖信息,sudo apt-get update命令就是为了获取该文件中的信息
4.建立本地源里的目录结构
先讲一点题外话,大家在加网络源的时候应该可以看到类似下面的结构









代码:
deb http://XXXX/edgy main restricted universe multiverse


上面的源地址里面edgy指的是系统的版本,main restricted universe multiverse这四个参数对应的为不同类型的软件包,使用不同的参数必须建立相对应的目录结构,如果建立自已专用的源,只使用main一个参数就够 了,下面是各个参数对应的目录结构









代码:
main? “…..DIR”/packs/dists/edgy/main/binary-i386/
restricted? “…..DIR”/packs/dists/edgy/restricted/binary-i386/
universe? “…..DIR”/packs/dists/edgy/universe/binary-i386/
multiverse? “…..DIR”/packs/dists/edgy/multiverse/binary-i386/


以使用main参数为例要建立的目录结构即为:(建议将该目录建在不常进行格式化的分区里面,以长期使用)









代码:
“…..DIR”/packs/dists/edgy/main/binary-i386/


而我的电脑上建立的目录完整路径就是









代码:
/media/hda6/soft/linux/packs/dists/edgy/main/binary-i386/


建立另一个重要的目录









代码:
“…..DIR”/packs/packs/


源里面不同目录存放不同类型的包,而这个目录主要是用于保存系统更新的包和一些依赖包(基本上是一些以lib开头的包)
最终本地源的目录结构为









代码:
/media/hda6/soft/linux/packs/dists/edgy/main/binary-i386/
/media/hda6/soft/linux/packs/packs


由于系统将所有自动下载的包不分类别统一放于









代码:
/var/cache/apt/archives/


目录里面,需要人为区分每个包所属的类别,极为费时,所以如果硬盘空间不是问题的话,将所有的包分别复制一份到这两个目录里面即可,完成复制后可删除~/packs目录了.









代码:
sudo cp ~/packs/* /media/hda6/soft/linux/packs/dists/edgy/main/binary-i386/
sudo cp ~/packs/* /media/hda6/soft/linux/packs/packs/
rm -rf ~/packs


5.至此,本地源就基本建好了,下面是添加源









代码:
sudo vim /etc/apt/sources.list


加入下面的源地址









代码:
deb file:///media/hda6/linux/soft/packs/ edgy main


保存退出vim,然后在终端里执行:









代码:
sudo apt-get update && sudo apt-get dist-upgrade


接下来就是正常的apt-get install了,一个意外的惊喜,安装本地源上的包时,该包不会再下载到









代码:
/var/cache/apt/archives/


里面,而是直接安装,所以不用担心会多浪费硬盘空间。
6.关于第三方软件
将第三方软件加到本地源对部份软件适用,比如freemind,将它的包和依赖包用alien -d转为deb格式后放到本地源里,再重建Packages.gz,即可通过apt-get install 安装,但像gnome这类的大型软件则没有成功
原贴————————————————————————————————————————————————–
新手重新系统的概率很高,至少我是这样,每次重装系统后都要经过漫长的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
file:///media/hda6/linux/soft/packs/ edgy main ,注意,这里只是我电脑上的路径,请依实际位置修改edgy 是我的ubuntu版本,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


0 条回复

说两句