我有此脚本行来为新服务器安装所有软件包。
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 包,其中包含“提供:”您不想安装的依赖项。安装它。