感谢支持
我们一直在努力

Ubuntu本地源制作与本地源的维护(删除过期或者重复软件包)

1.制作软件源



使用Ubuntu Lucid Lynx(Ubuntu 10.04)一段时间的人都应该知道,所有从软件仓库中安装的软件包都会在本地的


/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命令制作索引文件。但是久而久之问题也凸显出来,有些程序的更新文件,却不被索引到文件中去,还占用着巨大的空间。于是网上Google之发现有一个命令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


*********以上为内容*********


执行后,即可见到本地源目录中不需要的文件已经被删除掉!



说明:本文只是笔者今天突发奇想的一种方法,实际会有更简洁的解决办法,希望大家能够对笔者的方法进行批评和指正。

赞(0) 打赏
转载请注明出处:服务器评测 » Ubuntu本地源制作与本地源的维护(删除过期或者重复软件包)
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏