软件包的依赖性关系定义

ubuntu@ubuntu-desktop:~$ sudo apt-cache depends dpkg-dev
dpkg-dev
依赖: dpkg
依赖: <perl5>
perl
依赖: perl-modules
依赖: cpio
依赖: bzip2
依赖: lzma
依赖: patch
依赖: make
依赖: binutils
依赖: libtimedate-perl
建议: gnupg
建议: debian-keyring
|推荐: gcc
推荐: <c-compiler>
bcc
gcc
gcc-3.4
gcc-4.1
gcc-4.2
gcc-4.3
tcc
推荐: build-essential
冲突: devscripts
冲突: dpkg-cross
替换: manpages-pl
=================================================

From ubuntu 标准教程 人民邮电出版社

依赖:depends 要运行的软件包A必须安装软件包B,甚至还依赖于B 的某些特殊版本,通常依赖版本有最低限制

推荐:recommeds 软件包A 的某些必要功能需要软件包B 来提供。

建议:suggests B能增强软件包A 的功能

替换:replaces B安装的文件被A 中的文件删除或者覆盖了

冲突:confilcts 如果系统安装了B ,那么软件包A 将无法运行

提供:provides A中包含了B 中的所有文件功能

===========================================================

From baidu

为什么会依赖:

        编写软件的人不想自己一个人做完所有的事情,就像寻求外援,于是就找上了各种各样的软件包。
        举个例子,我只是想写一个QQ,但是如果没有图形界面库(或者说我不用图形界面库),我就得自己想办法怎么在屏幕上画一个窗口,怎么显示按钮,怎么显示列表,怎么……
        好了,现在我们知道有GTK库,Qt库,在编写程序的时候,我们只要调用他,告诉他我要在哪里哪里创建一个窗口,然后有什么控件,映射什么信号,等等等等,等我们描述完了,图形界面库就开始在屏幕上绘图,这个过程就不需要我们管了。
       实际上,linux上的大多数图形程序不是依赖GTK,就是依赖Qt,所以要是这些基本的库不安装的话,依赖关系肯定出问题,但不幸的是,一般发行版只装一种库,而你两种库的程序都用,就得自己装另一种库了(通常APT-GET给你解决)。
        你要想安装这些东西,就必须解决依赖关系,否则软件无法运行。

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...