Vagrant Ubuntu Trusty64虚拟机中安装OpenJDK 8失败,无法部署ELK的解决方案求助
解决Ubuntu Trusty虚拟机中Java安装失败的问题
看起来你在给Ubuntu 14.04(Trusty)的Vagrant虚拟机装Java时踩了个坑——不管是Ansible Playbook还是直接用apt,都找不到openjdk-8-jdk包。我来帮你拆解问题并给出可行的解决方案:
问题根源
- Ubuntu 14.04默认源不含OpenJDK 8:Trusty是比较老的版本,它的官方软件源里并没有OpenJDK 8的包,这是直接导致"无法定位包"错误的核心原因。
- 错误的PPA选择:你添加的
ppa:webupd8team/java是用来安装Oracle官方JDK的源,和OpenJDK无关,所以这个PPA帮不上找OpenJDK包的忙。 - Trusty已停止官方支持:Ubuntu 14.04早就过了EOL(生命周期结束),默认的apt源可能已经无法访问,这也会加剧包下载失败的问题。
解决方案
根据你的需求,我提供两种可行方案:
方案一:安装OpenJDK 8(推荐,开源免费)
要在Trusty上装OpenJDK 8,得添加专门维护旧版本OpenJDK的社区PPA。修改你的Ansible Playbook里的Java相关步骤即可:
- hosts: all become: yes tasks: # 先替换EOL的默认源,避免源访问失败 - name: Replace Trusty's default repos with archive sources copy: content: | deb http://old-releases.ubuntu.com/ubuntu/ trusty main restricted universe multiverse deb http://old-releases.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://old-releases.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse deb http://old-releases.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse dest: /etc/apt/sources.list mode: '0644' - name: Update apt repo and cache apt: update_cache: yes force_apt_get: yes cache_valid_time: 3600 # 添加OpenJDK 8的专用PPA - name: Add OpenJDK 8 PPA for Trusty apt_repository: repo: 'ppa:openjdk-r/ppa' state: present - name: Install OpenJDK 8 JDK apt: name: openjdk-8-jdk state: present update_cache: yes # 以下保持你原来的ELK部署步骤不变 - name: Add apt key for Elastic shell: curl -s https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add - - name: Adding Elasticsearch repo apt_repository: repo: deb https://artifacts.elastic.co/packages/6.x/apt stable main state: present filename: elastic-6.x.list update_cache: yes - name: Install Elasticsearch apt: name: elasticsearch state: latest update_cache: yes
方案二:安装Oracle Java 8(如果确实需要Oracle版本)
如果你原本的意图是装Oracle的JDK而不是OpenJDK,那你之前的Playbook有两个小错误:
- 包名写错了:Oracle Java 8的包名是
oracle-java8-installer,不是openjdk-8-jdk - 要确保添加PPA后更新了缓存
修改后的Java安装段:
- name: Add Oracle Java Repository apt_repository: repo='ppa:webupd8team/java' - name: Accept Java 8 License Agreement debconf: name='oracle-java8-installer' question='shared/accepted-oracle-license-v1-1' value='true' vtype='select' - name: Install Oracle Java 8 apt: name: oracle-java8-installer state: present update_cache: yes
⚠️ 注意:Oracle Java 8现在需要登录Oracle账号才能下载,这个PPA可能已经无法正常工作(因为Oracle改变了下载策略),所以优先推荐方案一。
验证安装成功
不管用哪种方案,安装完成后在虚拟机里执行以下命令验证:
java -version javac -version
如果输出显示Java 8的版本信息,就说明安装成功了,接下来可以继续你的ELK部署流程。
内容的提问来源于stack exchange,提问作者Yael
相关产品推荐
相关产品推荐

