防止使用 APT 安装依赖项

防止使用 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(假设管道表示“其中之一”)。
  • openjdk-7-jre-headless提供java6-runtime-headless,以便满足依赖性。
  • 相反,default-jre-headless安装的是 Java 6。

为什么会发生这种情况?是因为我一次安装了所有程序吗?我应该将其分成两次调用吗?

(Ubuntu 12.04 服务器,64 位)

答案1

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

另一种方法是下载一个包并使用dpkg包进行安装--ignore-depends=......

图形用户界面 (GUI) 包管理器(例如 Synaptic)可让您在安装选定的包之前选择或取消选择依赖项。

答案2

实际上上面这一行并没有安装 Java 6。在脚本开发的某个阶段,我使用了openjdk-7-jre-lib而不是,并且由于某种原因,openjdk-7-jre-headless那个依赖于。openjdk-6-jre-lib

答案3

创建一个 Debian 包,其中包含“提供:”您不想安装的依赖项。安装它。

相关内容