防止依赖与APT一起安装

我有这个脚本行来安装一个新的服务器的所有包。

apt-get install mysql-server openjdk-7-jre-headless tomcat7 tomcat7-admin jsvc apache2 ntp subversion

正如你可以看到它安装Java 7,但也安装了Java 6,因为tomcat7 (间接)依赖于它。 我敢肯定,我可以运行Java 7的Tomcat 7,所以我不想安装两个JRE。 我怎样才能防止安装Java 6?

更新:更仔细的检查表明

  • tomcat7 ,通过tomcat-common ,取决于default-jre-headless | java6-runtime-headless | java6-runtime | java-6-runtime default-jre-headless | java6-runtime-headless | java6-runtime | java-6-runtime default-jre-headless | java6-runtime-headless | java6-runtime | java-6-runtime (假设pipe道是指“其中之一”)。
  • openjdk-7-jre-headless提供了java6-runtime-headless ,所以依赖性应该被满足。
  • 相反,安装了default-jre-headless ,它将安装Java 6。

为什么会发生? 是因为我一次安装它们吗? 我应该把它分成2个电话吗?

(Ubuntu 12.04服务器,64位)

使用--nodeps选项与apt-get来忽略正在安装的依赖关系。

还有另一种方法是,你下载一个软件包,并用--ignore-depends= package,把它与dpkg一起安装…

像Synaptic这样的GUI软件包pipe理器将使您能够在安装所选软件包之前select取消select依赖关系。

实际上,上面的代码并没有安装Java 6.在脚本的开发过程中,我有openjdk-7-jre-lib ,而不是openjdk-7-jre-headless ,而且依赖于openjdk-6-jre-lib ,出于某种原因。

创build一个“提供:”你不想安装的依赖关系的debian包。 安装它。