编译Android 6.0源码提示需要使用openjdk-7才能编译,而我此时使用的是openjdk-8。
Your version is: openjdk version "1.8.0_292" OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~16.04.1-b10) OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode).
The required version is: "1.7.x"
我的电脑是没有openjdk-7的,安装openjdk-7踩了不少坑,所以记录一下解决过程。
sudo apt-get install openjdk-7-jdk
E: 无法定位软件包 openjdk-7-jdk
网上找到这个解决办法但是行不通
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk
sudo gedit /etc/apt/sources.list
加上这一段
deb http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
sudo apt-get update
运行命令确认是否能查找到
apt-cache search openjdk-7
openjdk-7-dbg - Java runtime based on OpenJDK (debugging symbols)
openjdk-7-demo - Java runtime based on OpenJDK (demos and examples)
openjdk-7-doc - OpenJDK Development Kit (JDK) documentation
openjdk-7-jdk - OpenJDK Development Kit (JDK)
openjdk-7-jre - OpenJDK Java runtime, using Hotspot JIT
openjdk-7-jre-headless - OpenJDK Java runtime, using Hotspot JIT (headless)
openjdk-7-source - OpenJDK Development Kit (JDK) source files
openjdk-7-tests - OpenJDK Development Kit (JDK) documentation
openjdk-7-jre-lib - OpenJDK Java runtime (architecture independent libraries)
openjdk-7-jre-zero - Alternative JVM for OpenJDK, using Zero/Shark
uwsgi-plugin-jvm-openjdk-7 - Java plugin for uWSGI (OpenJDK 7)
uwsgi-plugin-jwsgi-openjdk-7 - JWSGI plugin for uWSGI (OpenJDK 7)
再次尝试安装openjdk-7-jdk,报错提示依赖关系有问题
$ sudo apt-get install openjdk-7-jdk
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:
下列软件包有未满足的依赖关系:
openjdk-7-jdk : 依赖: openjdk-7-jre (= 7u211-2.6.17-0ubuntu0.1) 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
安装aptitude
sudo apt-get install aptitude
使用aptitude安装jdk,接下来的操作有风险,务必看完再操作!
安装报依赖问题,问题出在tzdata-java,接着输入q放弃当前解决依赖关系
$ sudo aptitude install openjdk-7-jdk
下列“新”软件包将被安装。
openjdk-7-jdk openjdk-7-jre{a} openjdk-7-jre-headless{a} tzdata-java{ab}
0 个软件包被升级,新安装 4 个, 0 个将被删除, 同时 11 个将不升级。
需要获取 55.8 MB 的存档。 解包后将要使用 77.7 MB。
下列软件包存在未满足的依赖关系:
openjdk-8-jre-headless : 破坏: tzdata-java 但是 2019a-0ubuntu0.14.04 将被安装。
破坏: tzdata-java:i386 which is a virtual package, provided by:
- tzdata-java, 但是 2019a-0ubuntu0.14.04 将被安装。 - tzdata-java, 但是 2019a-0ubuntu0.14.04 将被安装。
tzdata-java : 依赖: tzdata (= 2019a-0ubuntu0.14.04) 但是 2021a-0ubuntu0.16.04 已安装。
下列动作将解决这些依赖关系:
保持 下列软件包于其当前版本:
1) openjdk-7-jdk [未安装的]
2) openjdk-7-jre [未安装的]
3) openjdk-7-jre-headless [未安装的]
4) tzdata-java [未安装的]
是否接受该解决方案?[Y/n/q/?] q
放弃解决这些依赖关系的全部努力。
放弃。
使用aptitude卸载tzdata,它刚开始给你的解决方案是删除一大堆软件包,这会让你的电脑环境变得糟糕,千万不要同意,选择不接受,等影响最小的解决方案出现
$ sudo aptitude remove tzdata
下列软件包将被“删除”:
tzdata
0 个软件包被升级,新安装 0 个, 1 个将被删除, 同时 11 个将不升级。
需要获取 0 B 的存档。 解包后将释放 2,867 kB。
下列软件包存在未满足的依赖关系:
libtcl8.6 : 依赖: tzdata 但它将不会被安装。
libical1a : 依赖: tzdata 但它将不会被安装。
下列动作将解决这些依赖关系:
删除 下列软件包:
1) blt
2) chrome-gnome-shell
3) evolution-data-server
4) gdm3
5) gitk
6) gnome-contacts
7) gnome-shell
8) indicator-datetime
9) libecal-1.2-19
10) libedata-cal-1.2-28
11) libfolks-eds25
12) libical1a
13) libtcl8.6
14) libtk8.6
15) python-tk
16) stopwatch
17) tcl
18) tcl8.6
19) tk
20) tk8.6
21) tk8.6-blt2.5
22) unity-control-center
保留下列未解决的依赖关系:
23) printer-driver-foo2zjs-common 推荐 tk
24) unity-greeter 推荐 indicator-datetime
25) libfolks25 推荐 libfolks-eds25
26) gnome-shell 推荐 gnome-contacts
27) unity 推荐 unity-control-center
28) unity 推荐 indicator-datetime
是否接受该解决方案?[Y/n/q/?] n
下列动作将解决这些依赖关系:
保持 下列软件包于其当前版本:
1) tzdata [2021a-0ubuntu0.16.04 (now, xenial-security, xenial-updates)]
是否接受该解决方案?[Y/n/q/?] n
下列动作将解决这些依赖关系:
降级 下列软件包:
1) tzdata [2021a-0ubuntu0.16.04 (now, xenial-security, xenial-updates) -> 2016d-0ubuntu0.16.04 (xenial)]
是否接受该解决方案?[Y/n/q/?] Y
下列软件包将被“降级”:
tzdata
0 个软件包被升级,新安装 0 个, 1 个被降级, 0 个将被删除, 同时 11 个将不升级。
需要获取 168 kB 的存档。 解包后将释放 31.7 kB。
您要继续吗?[Y/n/?] Y
读取: 1 http://mirrors.aliyun.com/ubuntu xenial/main amd64 tzdata all 2016d-0ubuntu0.16.04 [168 kB]
已下载 168 kB,耗时 0秒 (1,008 kB/s)
正在预设定软件包 ...
dpkg:警告:即将把 tzdata 从 2021a-0ubuntu0.16.04 降级到 2016d-0ubuntu0.16.04
(正在读取数据库 ... 系统当前共安装有 329542 个文件和目录。)
正准备解包 .../tzdata_2016d-0ubuntu0.16.04_all.deb ...
正在将 tzdata (2016d-0ubuntu0.16.04) 解包到 (2021a-0ubuntu0.16.04) 上 ...
正在设置 tzdata (2016d-0ubuntu0.16.04) ...
Current default time zone: 'Asia/Shanghai'
Local time is now: 2024年 04月 07日 星期日 21:27:48 CST.
Universal Time is now: Sun Apr 7 13:27:48 UTC 2024.
Run 'dpkg-reconfigure tzdata' if you wish to change it.
当前状态:12 (+1) upgradable。
再次尝试安装openjdk7,还是说tzdata依赖问题,但是tzdata版本变了
$ sudo aptitude install openjdk-7-jdk
下列“新”软件包将被安装。
openjdk-7-jdk openjdk-7-jre{a} openjdk-7-jre-headless{a} tzdata-java{ab}
0 个软件包被升级,新安装 4 个, 0 个将被删除, 同时 12 个将不升级。
需要获取 55.8 MB 的存档。 解包后将要使用 77.7 MB。
下列软件包存在未满足的依赖关系:
openjdk-8-jre-headless : 破坏: tzdata-java 但是 2019a-0ubuntu0.14.04 将被安装。
破坏: tzdata-java:i386 which is a virtual package, provided by:
- tzdata-java, 但是 2019a-0ubuntu0.14.04 将被安装。 - tzdata-java, 但是 2019a-0ubuntu0.14.04 将被安装。
tzdata-java : 依赖: tzdata (= 2019a-0ubuntu0.14.04) 但是 2016d-0ubuntu0.16.04 已被安装并且被保持不升级。
下列动作将解决这些依赖关系:
保持 下列软件包于其当前版本:
1) openjdk-7-jdk [未安装的]
2) openjdk-7-jre [未安装的]
3) openjdk-7-jre-headless [未安装的]
4) tzdata-java [未安装的]
是否接受该解决方案?[Y/n/q/?] q
放弃解决这些依赖关系的全部努力。
放弃。
再次尝试卸载tzdata,没事我们多来几次,看看它有多少解决方案
$ sudo aptitude remove tzdata
下列软件包将被“删除”:
tzdata
0 个软件包被升级,新安装 0 个, 1 个将被删除, 同时 11 个将不升级。
需要获取 0 B 的存档。 解包后将释放 2,835 kB。
下列软件包存在未满足的依赖关系:
libtcl8.6 : 依赖: tzdata 但它将不会被安装。
libical1a : 依赖: tzdata 但它将不会被安装。
下列动作将解决这些依赖关系:
删除 下列软件包:
1) blt
2) chrome-gnome-shell
3) evolution-data-server
4) gdm3
5) gitk
6) gnome-contacts
7) gnome-shell
8) indicator-datetime
9) libecal-1.2-19
10) libedata-cal-1.2-28
11) libfolks-eds25
12) libical1a
13) libtcl8.6
14) libtk8.6
15) python-tk
16) stopwatch
17) tcl
18) tcl8.6
19) tk
20) tk8.6
21) tk8.6-blt2.5
22) unity-control-center
保留下列未解决的依赖关系:
23) printer-driver-foo2zjs-common 推荐 tk
24) unity-greeter 推荐 indicator-datetime
25) libfolks25 推荐 libfolks-eds25
26) gnome-shell 推荐 gnome-contacts
27) unity 推荐 unity-control-center
28) unity 推荐 indicator-datetime
是否接受该解决方案?[Y/n/q/?] n
下列动作将解决这些依赖关系:
升级 下列软件包:
1) tzdata [2016d-0ubuntu0.16.04 (now, xenial) -> 2021a-0ubuntu0.16.04 (xenial-security, xenial-updates)]
是否接受该解决方案?[Y/n/q/?] n
下列动作将解决这些依赖关系:
保持 下列软件包于其当前版本:
1) tzdata [2016d-0ubuntu0.16.04 (now, xenial)]
是否接受该解决方案?[Y/n/q/?] n
下列动作将解决这些依赖关系:
升级 下列软件包:
1) tzdata [2016d-0ubuntu0.16.04 (now, xenial) -> 2019a-0ubuntu0.14.04 (trusty-security, trusty-updates)]
是否接受该解决方案?[Y/n/q/?] Y
下列软件包将被升级:
tzdata
1 个软件包被升级,新安装 0 个, 0 个将被删除, 同时 11 个将不升级。
需要获取 167 kB 的存档。 解包后将释放 1,252 kB。
您要继续吗?[Y/n/?] Y
读取: 1 http://mirrors.aliyun.com/ubuntu trusty-security/main amd64 tzdata all 2019a-0ubuntu0.14.04 [167 kB]
已下载 167 kB,耗时 0秒 (754 kB/s)
正在预设定软件包 ...
(正在读取数据库 ... 系统当前共安装有 329527 个文件和目录。)
正准备解包 .../tzdata_2019a-0ubuntu0.14.04_all.deb ...
正在将 tzdata (2019a-0ubuntu0.14.04) 解包到 (2016d-0ubuntu0.16.04) 上 ...
正在设置 tzdata (2019a-0ubuntu0.14.04) ...
Current default time zone: 'Asia/Shanghai'
Local time is now: 2024年 04月 07日 星期日 21:29:08 CST.
Universal Time is now: Sun Apr 7 13:29:08 UTC 2024.
Run 'dpkg-reconfigure tzdata' if you wish to change it.
这次将tzdata又升级到了(2019a-0ubuntu0.14.04),再试试安装openjdk7
$ sudo aptitude install openjdk-7-jdk
下列“新”软件包将被安装。
openjdk-7-jdk openjdk-7-jre{a} openjdk-7-jre-headless{a} tzdata-java{a}
0 个软件包被升级,新安装 4 个, 0 个将被删除, 同时 12 个将不升级。
需要获取 55.8 MB 的存档。 解包后将要使用 77.7 MB。
下列软件包存在未满足的依赖关系:
openjdk-8-jre-headless : 破坏: tzdata-java 但是 2019a-0ubuntu0.14.04 将被安装。
破坏: tzdata-java:i386 which is a virtual package, provided by:
- tzdata-java, 但是 2019a-0ubuntu0.14.04 将被安装。 - tzdata-java, 但是 2019a-0ubuntu0.14.04 将被安装。
下列动作将解决这些依赖关系:
删除 下列软件包:
1) openjdk-8-jdk
2) openjdk-8-jdk-headless
3) openjdk-8-jre
4) openjdk-8-jre-headless
是否接受该解决方案?[Y/n/q/?] n
下列动作将解决这些依赖关系:
保持 下列软件包于其当前版本:
1) openjdk-7-jdk [未安装的]
2) openjdk-7-jre [未安装的]
3) openjdk-7-jre-headless [未安装的]
4) tzdata-java [未安装的]
是否接受该解决方案?[Y/n/q/?] n
下列动作将解决这些依赖关系:
降级 下列软件包:
1) openjdk-8-jdk [8u292-b10-0ubuntu1~16.04.1 (now, xenial-security, xenial-updates) -> 8u77-b03-3ubuntu3 (xenial)]
2) openjdk-8-jdk-headless [8u292-b10-0ubuntu1~16.04.1 (now, xenial-security, xenial-updates) -> 8u77-b03-3ubuntu3 (xenial)]
3) openjdk-8-jre [8u292-b10-0ubuntu1~16.04.1 (now, xenial-security, xenial-updates) -> 8u77-b03-3ubuntu3 (xenial)]
4) openjdk-8-jre-headless [8u292-b10-0ubuntu1~16.04.1 (now, xenial-security, xenial-updates) -> 8u77-b03-3ubuntu3 (xenial)]
是否接受该解决方案?[Y/n/q/?] Y
下列软件包将被“降级”:
openjdk-8-jdk openjdk-8-jdk-headless openjdk-8-jre openjdk-8-jre-headless
下列“新”软件包将被安装。
openjdk-7-jdk openjdk-7-jre{a} openjdk-7-jre-headless{a} tzdata-java{a}
0 个软件包被升级,新安装 4 个, 4 个被降级, 0 个将被删除, 同时 12 个将不升级。
需要获取 91.3 MB 的存档。 解包后将要使用 72.1 MB。
您要继续吗?[Y/n/?] Y
读取: 1 http://mirrors.aliyun.com/ubuntu xenial/main amd64 openjdk-8-jdk amd64 8u77-b03-3ubuntu3 [381 kB]
读取: 2 http://mirrors.aliyun.com/ubuntu xenial/main amd64 openjdk-8-jre amd64 8u77-b03-3ubuntu3 [69.4 kB]
读取: 3 http://mirrors.aliyun.com/ubuntu xenial/main amd64 openjdk-8-jdk-headless amd64 8u77-b03-3ubuntu3 [8,164 kB]
读取: 4 http://mirrors.aliyun.com/ubuntu xenial/main amd64 openjdk-8-jre-headless amd64 8u77-b03-3ubuntu3 [26.9 MB]
读取: 5 http://mirrors.aliyun.com/ubuntu trusty-security/main amd64 tzdata-java all 2019a-0ubuntu0.14.04 [70.0 kB]
读取: 6 http://mirrors.aliyun.com/ubuntu trusty-security/main amd64 openjdk-7-jre-headless amd64 7u211-2.6.17-0ubuntu0.1 [39.6 MB]
读取: 7 http://mirrors.aliyun.com/ubuntu trusty-security/main amd64 openjdk-7-jre amd64 7u211-2.6.17-0ubuntu0.1 [172 kB]
读取: 8 http://mirrors.aliyun.com/ubuntu trusty-security/main amd64 openjdk-7-jdk amd64 7u211-2.6.17-0ubuntu0.1 [16.0 MB]
已下载 91.3 MB,耗时 7秒 (12.5 MB/s)
dpkg:警告:即将把 openjdk-8-jdk:amd64 从 8u292-b10-0ubuntu1~16.04.1 降级到 8u77-b03-3ubuntu3
(正在读取数据库 ... 系统当前共安装有 329541 个文件和目录。)
正准备解包 .../openjdk-8-jdk_8u77-b03-3ubuntu3_amd64.deb ...
正在将 openjdk-8-jdk:amd64 (8u77-b03-3ubuntu3) 解包到 (8u292-b10-0ubuntu1~16.04.1) 上 ...
dpkg:警告:即将把 openjdk-8-jre:amd64 从 8u292-b10-0ubuntu1~16.04.1 降级到 8u77-b03-3ubuntu3
正准备解包 .../openjdk-8-jre_8u77-b03-3ubuntu3_amd64.deb ...
正在将 openjdk-8-jre:amd64 (8u77-b03-3ubuntu3) 解包到 (8u292-b10-0ubuntu1~16.04.1) 上 ...
dpkg:警告:即将把 openjdk-8-jdk-headless:amd64 从 8u292-b10-0ubuntu1~16.04.1 降级到 8u77-b03-3ubuntu3
正准备解包 .../openjdk-8-jdk-headless_8u77-b03-3ubuntu3_amd64.deb ...
正在将 openjdk-8-jdk-headless:amd64 (8u77-b03-3ubuntu3) 解包到 (8u292-b10-0ubuntu1~16.04.1) 上 ...
dpkg:警告:即将把 openjdk-8-jre-headless:amd64 从 8u292-b10-0ubuntu1~16.04.1 降级到 8u77-b03-3ubuntu3
正准备解包 .../openjdk-8-jre-headless_8u77-b03-3ubuntu3_amd64.deb ...
正在将 openjdk-8-jre-headless:amd64 (8u77-b03-3ubuntu3) 解包到 (8u292-b10-0ubuntu1~16.04.1) 上 ...
正在选中未选择的软件包 tzdata-java。
正准备解包 .../tzdata-java_2019a-0ubuntu0.14.04_all.deb ...
正在解包 tzdata-java (2019a-0ubuntu0.14.04) ...
正准备解包 .../openjdk-7-jre-headless_7u211-2.6.17-0ubuntu0.1_amd64.deb ...
正在解包 openjdk-7-jre-headless:amd64 (7u211-2.6.17-0ubuntu0.1) ...
正在选中未选择的软件包 openjdk-7-jre:amd64。
正准备解包 .../openjdk-7-jre_7u211-2.6.17-0ubuntu0.1_amd64.deb ...
正在解包 openjdk-7-jre:amd64 (7u211-2.6.17-0ubuntu0.1) ...
正在选中未选择的软件包 openjdk-7-jdk:amd64。
正准备解包 .../openjdk-7-jdk_7u211-2.6.17-0ubuntu0.1_amd64.deb ...
正在解包 openjdk-7-jdk:amd64 (7u211-2.6.17-0ubuntu0.1) ...
正在处理用于 libc-bin (2.23-0ubuntu11.3) 的触发器 ...
正在处理用于 gnome-menus (3.13.3-6ubuntu3.1) 的触发器 ...
正在处理用于 desktop-file-utils (0.22-1ubuntu5.2) 的触发器 ...
正在处理用于 bamfdaemon (0.5.3~bzr0+16.04.20180209-0ubuntu1) 的触发器 ...
Rebuilding /usr/share/applications/bamf-2.index...
正在处理用于 mime-support (3.59ubuntu1) 的触发器 ...
正在处理用于 hicolor-icon-theme (0.15-0ubuntu1.1) 的触发器 ...
正在设置 openjdk-8-jre-headless:amd64 (8u77-b03-3ubuntu3) ...
正在安装新版本配置文件 /etc/java-8-openjdk/calendars.properties ...
正在安装新版本配置文件 /etc/java-8-openjdk/jvm-amd64.cfg ...
正在安装新版本配置文件 /etc/java-8-openjdk/management/management.properties ...
正在安装新版本配置文件 /etc/java-8-openjdk/net.properties ...
正在安装新版本配置文件 /etc/java-8-openjdk/security/blacklisted.certs ...
正在安装新版本配置文件 /etc/java-8-openjdk/security/java.policy ...
配置文件 '/etc/java-8-openjdk/security/java.security'
==> 在安装后曾被修改(您或者某个脚本修改了它)。
==> 软件包的提交者同时提供了一个更新了的版本。
您现在希望如何处理呢? 您有以下几个选择:
Y 或 I :安装软件包维护者所提供的版本
N 或 O :保留您原来安装的版本
D :显示两者的区别
Z :把当前进程切换到后台,然后查看现在的具体情况
默认的处理方法是保留您当前使用的版本。
*** java.security (Y/I/N/O/D/Z) [默认选项=N] ? N
正在设置 openjdk-8-jre:amd64 (8u77-b03-3ubuntu3) ...
正在设置 openjdk-8-jdk-headless:amd64 (8u77-b03-3ubuntu3) ...
正在设置 openjdk-8-jdk:amd64 (8u77-b03-3ubuntu3) ...
正在设置 tzdata-java (2019a-0ubuntu0.14.04) ...
正在设置 openjdk-7-jre-headless:amd64 (7u211-2.6.17-0ubuntu0.1) ...
update-alternatives: 警告: 链接组 keytool 已损坏,故强制重新安装候选项 /usr/lib/jvm/java-11-openjdk-amd64/bin/keytool
正在设置 openjdk-7-jre:amd64 (7u211-2.6.17-0ubuntu0.1) ...
正在设置 openjdk-7-jdk:amd64 (7u211-2.6.17-0ubuntu0.1) ...
正在处理用于 libc-bin (2.23-0ubuntu11.3) 的触发器 ...
当前状态:16 (+4) upgradable。
这次它提供了一个解决方案--降级openjdk8,我果断接受,然后使用update-alternatives --config java切换openjdk7成功。
要维持当前值[*]请按<回车键>,或者键入选择的编号:有 4 个候选项可用于替换 javap (提供 /usr/bin/javap)。
选择 路径 优先级 状态
------------------------------------------------------------
0 /usr/lib/jvm/java-11-openjdk-amd64/bin/javap 1111 自动模式
1 /opt/jdk1.6.0_45/bin/javap 1061 手动模式
2 /usr/lib/jvm/java-11-openjdk-amd64/bin/javap 1111 手动模式
3 /usr/lib/jvm/java-7-openjdk-amd64/bin/javap 1071 手动模式
* 4 /usr/lib/jvm/java-8-openjdk-amd64/bin/javap 1081 手动模式
要维持当前值[*]请按<回车键>,或者键入选择的编号:update-alternatives: 使用 /usr/lib/jvm/java-7-openjdk-amd64/bin/javap 来在手动模式中提供 /usr/bin/javap (javap)
链接组 javaws (提供 /usr/bin/javaws)中只有一个候选项:/opt/jdk1.6.0_45/bin/javaws
无需配置。
java version "1.7.0_201"
OpenJDK Runtime Environment (IcedTea 2.6.17) (7u211-2.6.17-0ubuntu0.1)
OpenJDK 64-Bit Server VM (build 24.201-b00, mixed mode)
问题解决。
注:每个人电脑环境不一样,使用aptitude会给你提出依赖问题的解决方案,注意不要同意删除一大堆软件包的解决方案,尽量选择影响范围小的方案。