当我尝试在 amazon ec2 上的 ubuntu(10.10) 服务器上使用 JRE 的 update-alternatives”安装包时,apt-get 不再响应。
我已经在这个电话上等了 20 分钟,电话里出现了这样一行文字:
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/lib/jexec to provide /usr/bin/jexec (jexec) in auto mode.
如果我尝试停止它并重新启动系统,下次我以任何方式使用 apt-get 或 aptitude 时,它都会给我
E: dpkg was interrupted, you must manually run 'dpkg --configure -a' to correct the problem.
该命令没有解决问题,导致 apt-get 损坏。
答案1
修复 dpkg:http://lydonchandra.com/content/failure-installing-jre-java-runtime-env-ec2-ubuntu-10
我也遇到了同样的问题,ami-00067852 ap-southeast-1a zone。到底发生了什么?
答案2
有一种方法可以让你 dpkg 再次运行。唉,我仍然不知道如何在我的 debian 上安装 jre,因为每次尝试安装 jre 时都会发生完全相同的事情。
简而言之,您需要在终止 dpkg 和 java 进程(我的机器上的 java 进程消耗了 100% 的 CPU)后清除未完全安装的软件包。然后您的 dpkg 应该可以再次运行。
以下是详细说明。这些说明可以作为遇到同样问题的其他人的指南。
- 打开另一个控制台/ssh 会话,并终止 java 和 dpkg 进程(用来
ps -A |grep -E "(java|dpkg)"
找到它们) - 运行
dpkg -l |grep -v -E "^ii"
- 这将列出所有未处于完美安装状态的软件包;安装不完整,或者卸载后残留配置文件(或其他变体)。您可以通过第一列中的值来区分它们。(rc = 已移除 & conf-files;iU = 安装 & 已解压)。请参阅列表标题(dpkg -l | head
了解详细含义)。 - 运行
dpkg -P package_name [package_name2] [package_name3 ...]
以清除那些不完整的软件包。就我个人而言,我删除了所有列出的软件包(因为它们都与损坏的 jre 安装有关),然后 dpkg 正在运行。 - 或者,重新启动系统以摆脱该已停止的 Java 进程(在我终止它之后,它仍然挂在进程列表中)
更新:经过进一步研究后发现,这个错误仅与在 Amazon EC2 上运行基于 debian 的发行版 AMI 的 32 位 t1.micro 实例有关。
对我有用的解决方案(归功于 DanielDaniel- 谢谢,@Yuval),是:
- 停止(或暂停)正在运行的实例(在此之前您需要确保它不会因暂停而终止)
- 将实例类型更改为 m1.small(使用 EC2 控制台或使用 CLI)
- 启动实例
- 安装所需的 Java 包
- (再次)停止一个实例
- 将实例类型改回 t1.micro
- 再次启动实例
这大概只花费您运行 m1.small 实例 1 小时的费用。应该很快就能启动并运行。
更新 2:经过所有这些麻烦之后,Java 似乎根本无法在 t1.micro 实例上运行。运行任何基于 Java 的东西都会对系统产生与运行 jre/jdk 安装相同的影响。因此,为了在 t1.micro 上使用 Java,要么使用其他非基于 Debian 的发行版(但是,我也不能 100% 确定它是否能正常工作),要么将实例升级到 m1.small 或更高版本。
更新 3:截至 2011 年 8 月 11 日,问题尚未解决。请参阅https://bugs.launchpad.net/ubuntu/+source/linux-ec2/+bug/634487以获取进一步的更新。现在由亚马逊来审查提议的补丁……基本上,他们会在审查时修复它……
答案3
您是否dpkg --configure -a
按照吩咐跑步了?如果是,结果如何?
更新:
然后运行:strace -s100 -f -o /tmp/debug.out dpkg --configure -a
等待几分钟,然后将文件上传到某个地方。或者在此处附加最后 200 行。
更新2:
文件名为/tmp/debug.out是需要的。控制台上的输出没有变化。
答案4
我使用的是 32 位 ami-ccf405a5,它导致 jre 出现问题。然后我使用了 64 位 ami (ami-cef405a7),它解决了我的问题。