linux软件包依赖关系:是一个软件的安装,需要安装另外一个软件进行支持的一种现象。在windows也存在,但因为很多基础dll都被windows集成了,所以并不明显。但在linux体系中,因为多个开源软件开发者并不成为一个体系,因而依赖关系向来比较复杂,解决依赖关系也是让很多人比较头疼的问题。
linux中,采用apt或者yum等常常能自动解决依赖关系,但往往我们也需要一些软件源里不存在的软件进行安装。LD源自ubuntu,而ubuntu又基于debian,故LD中,这些无法用apt来安装的软件我们一般用dpkg来安装,dpkg可以提示是否符合依赖关系,但不会自动解决。“dpkg ”是“Debian Package ”的简写。为 “Debian” 专门开发的套件管理系统,方便软件的安装、更新及移除。
安装这类软件,首先我们先看是否存在适用于ubuntu 32位的deb包(比如virtualbox,我们不想装ose版,就可以去http://www.virtualbox.org/下载ubuntu的32位版,注意扩展名,文件名应为*.deb)。
下载后,用dpkg进行安装:
dpkg -i package.deb ###安装包
dpkg -r package ###删除包
dpkg -P package ###删除包(包括配置文件)
dpkg -L package ###列出与该包关联的文件
dpkg -l package ###显示该包的版本
dpkg --unpack package.deb ###解开 deb 包的内容
dpkg -S keyword ###搜索所属的包内容
dpkg -l ###列出当前已安装的包
dpkg -c package.deb ###列出 deb 包的内容
dpkg --configure package ###配置包
dpkg-reconfigure package ###重新配制一个已经安装的包裹
dpkg-reconfigure --frontend=dialog debconf ###如果安装时选错了配置信息,这里可以改回来.
dpkg --force-all --purge ###有些软件很难卸载,而且还阻止了别的软件的应用,就可以用这个,不过有点冒险.
更多选项可通过 dpkg -h 查询,有些指令需要超级用户权限才能执行,故执行时,一般需 在dpkg 前加sudo (例:sudo dpkg -i package.deb)。
dpkg配置及缓存信息:系统中所有的包信息都在/var/lib/dpkg下.其中/var/lib/dpkg/info目录中保存了各个软件包的信息及管理文件. 提供这些信息仅供了解,一般不需要更改。
每个文件的作用如下:
".conffiles" 文件记录软件包的配置列表.
".list" 文件记录了软件包的文件列表,用户可在文件当中找到软件包文件的具体安装位置.
".md5sums" 文件记录了md5信息,用来进行包的验证的.
".config" 文件是软件包的安装配置脚本.
".postinst" 脚本是完成Debian包解开之后的配置工作,通常用来执行所安装软件包相关的命令和服务的重新启动.
".preinst" 脚本在Debain解包之前运行,主要作用是是停止作用于即将升级的软件包服务直到软件包安装或和升级完成.
".prerm" 脚本负责停止与软件包关联的daemon服务,在删除软件包关联文件之前执行.
".postrm" 脚本负责修改软件包链接或文件关联,或删除由它创建的文件.
/var/lib/dpkg/available是软件包的描述信息.
包括当前系统中所有使用的Debian安装源中所有的软件包,还包括当前系统中已经安装和未安装的软件包.