1、制作软件源
使用Ubuntu一段时间的人都应该知道,所有从软件仓库中安装的软件包都会在本地的。
/var/cache/apt/archives
中进行缓存。并且每次安装完Ubuntu,重新上网安装中文语言包是个非常麻烦的事情,并且每次都要安装MP3等音频视频程序的版权驱动,十分麻烦。所以,本地源的制作就非常必要了。
言归正传,首先需要安装软件包dpkg-dev
#sudo apt-get install dpkg-dev
等配置好后,在/下建立一个目录software作为软件包的存放地点,或者放在硬盘中任意位置。
将/var/cache/apt/archives中的所有软件包拷贝到这个文件夹里。
执行以下命令,进行软件源的制作
#sudo dpkg-scanpackages /software /dev/null | gzip>/software/Packages.gz
等待系统扫描完所有的软件包后,会返回命令行,并且在software文件夹中生成一个名为Packages.gz的压缩文件,存有这个文件夹中的软件包信息及其依赖关系。
2、使用软件源
接上文
#sudo gedit /etc/apt/sources.list
删除所有内容,添加
deb file:/// software/
保存。
打开终端,输入
#sudo apt-get update
以更新本地的软件包列表
然后可以用apt-get命令安装本地源中含有的软件包或者像我一样直接执行
#sudo apt-get dist-upgrade
命令更新系统。一旦再懒一点,可以输入以下命令
#sudo apt-get update;sudo apt-get dist-upgrade
来直接进行以上工作。
3、维护软件源
一旦软件源只是你在本地备份的软件包,以便给其他电脑安装系统时候所用,而平时你都是上网更新系统。那么维护你的软件源就显得比较重要了。过去我的做法是,一旦网上更新了系统,就把本地缓存文件夹中的更新软件包拷贝到本地源文件夹中,然后执行dpkg-scanpackages命令制作索引文件。但是久而久之问题也凸显出来,有些程序的更新文件,却不被索引到文件中去,还占用着巨大的空间。于是网上搜索发现有一个命令apt- get autoclean,于是乎试验之,发现收效甚微,却又苦于不了解依赖关系而不敢手动删除多余的软件包。更加郁闷的是,我的本地源已经有4.1G之巨,手动删除乃费力之举,并且一旦错删,后果可想而知。联想到制作本地源过程中出现在终端的警告信息,和Bash的IO重定向功能。本人今日做了如下试验:
#sudo dpkg-scanpackages /software 2>/home/kernel/桌面/errors
此命令意思为,将dpkg-scanpackages命令的标准错误输出重定向到桌面的errors文件中去,这样就可以在错误输出信息中找出重复的软件包并加以删除了。
在此引用以下此错误文件的部分内容
*********以下为内容*********
dpkg-scanpackages: 警告: Package acroread (filename /media/localsources/software/acroread_9.3.3-1lucid1_i386.deb) is repeat but newer version;
dpkg-scanpackages: 警告: used that one and ignored data from /media/localsources/software/acroread_9.3.2-lucid1_i386.deb!
dpkg-scanpackages: 警告: Package adobe-flashplugin (filename /media/localsources/software/adobe-flashplugin_10.1.53.64-1lucid1_i386.deb) is repeat but newer version;
dpkg-scanpackages: 警告: used that one and ignored data from /media/localsources/software/adobe-flashplugin_10.0.45.2-1lucid1_i386.deb!
dpkg-scanpackages: 警告: Package apache2-utils (filename /media/localsources/software/apache2-utils_2.2.14-5Ubuntu8_i386.deb) is repeat;
dpkg-scanpackages: 警告: ignored that one and using data from /media/localsources/software/apache2-utils_2.2.14-5Ubuntu8.2_i386.deb!
dpkg-scanpackages: 警告: Package apt-transport-https (filename /media/localsources/software/apt-transport-https_0.7.25.3Ubuntu9.1_i386.deb) is repeat but newer version;
dpkg-scanpackages: 警告: used that one and ignored data from /media/localsources/software/apt-transport-https_0.7.25.3Ubuntu8_i386.deb!
dpkg-scanpackages: 警告: Package apt-transport-https (filename /media/localsources/software/apt-transport-https_0.7.25.3Ubuntu9.3_i386.deb) is repeat but newer version;
dpkg-scanpackages: 警告: used that one and ignored data from /media/localsources/software/apt-transport-https_0.7.25.3Ubuntu9.1_i386.deb!
dpkg-scanpackages: 警告: Package apt-transport-https (filename /media/localsources/software/apt-transport-https_0.7.25.3Ubuntu9_i386.deb) is repeat;
dpkg-scanpackages: 警告: ignored that one and using data from /media/localsources/software/apt-transport-https_0.7.25.3Ubuntu9.3_i386.deb!
*********以上为内容*********
然后分析提示信息,得出什么软件包是需要留下的,什么软件包是需要删除的,再通过一系列的替换等命令,将此文件作成一个Shell脚这篇文章件,赋予脚这篇文章件可执行权限即可了。
脚这篇文章件如下内容(举例)
*********以下为内容*********
#! /bin/sh
rm /media/localsources/software/acroread_9.3.2-lucid1_i386.deb
rm /media/localsources/software/adobe-flashplugin_10.0.45.2-1lucid1_i386.deb
rm /media/localsources/software/apache2-utils_2.2.14-5Ubuntu8_i386.deb
rm /media/localsources/software/apt-transport-https_0.7.25.3Ubuntu8_i386.deb
rm /media/localsources/software/apt-transport-https_0.7.25.3Ubuntu9.1_i386.deb
rm /media/localsources/software/apt-transport-https_0.7.25.3Ubuntu9_i386.deb
*********以上为内容*********
执行后,即可见到本地源目录中不需要的文件已经被删除掉!
说明:这篇文章只是笔者今天突发奇想的一种方法,实际会有更简洁的解决办法,希望大家能够对笔者的方法进行批评和指正。
声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。