原文地址:https://chenjiehua.me/linux/ubuntu-16-04.html

Ubuntu 16.04 LTS正式版刚发布,就迫不及待的要来重装系统了。虽然新系统不错,但是部分软件跟系统之间却出现了一些小坑……

update-rc.d

在安装 supervisor 时候采用 apt-get 方式正常安装,配置管理其他进程也都一切正常。然而,重启系统之后却发现 supervisor 里面的程序都没有启动,仔细一看,就连 supervisord 也没有随系统正常启动。挺郁闷的,14.04 中 apt-get 安装supervisor后都没出现过这个问题。

查看 /etc/init.d/supervisor 正常,可以通过 sudo service supervisor start 正常启动;再查看 /etc/rcX.d 各个目录,也发现有 S/KNNsupervisor ,不过却发现 NN=01,这里就有点异常了。

查看 update-rc.d 文档,对比 14.04 发现了一些区别:

可以看到 update-rc.d name defaults 命令发生了变化,同时 start/stop 也没有了。继续查看文档:

也就是说 update-rc.d 默认根据 /etc/init.d 中脚本内定义的依赖和 runlevel 来进行设置,而不再提供 NN让我们手动指定启动顺序,查看 /etc/init.d/supervisor:

Required-Start和 Required-Stop 两项应该是有点问题,具体不懂,参考了 redis-server 的启动脚本:

这里应该是缺少了 syslog,在 /etc/init.d/supervisor 中添加上 $syslog,然后再设置开机启动:

java

折腾kafka时候需要依赖java环境,一看 Ubuntu 16.04 提供了 openjdk-9-jre,那就 apt-get 安装一个。安装完成后启动 kafka,却报错:

难道 jre 安装有问题?

看起来也没什么问题呀,难道是openjdk的问题?那我就安装一下 oracle jre:

安装完成后,运行kafka还是报错。。。Google了一下 “PrintGCDateStamps”参数,发现有人遇到类似的问题,作者的解决方案是直接注释掉了kafka目录下的 ./bin/kafka-run-class.sh:

虽然总感觉有点别扭,但是总得让kafka跑起来先。

然后要跑 Apache Spark,执行 ./bin/pyspark,却又是java报错:

看了一下 java 的版本号:

略蛋疼,竟然会是版本号字符串问题。。。想想要不就装 jdk-8 的试试看:

看看现在系统里面已经安装的jdk:

选择不同版本的java:

选择 openjdk-8:

选择 oracle-java-8:

然后测试了 Spark,运行正常。再回头看看一开始 kafka 的问题,openjdk version 是 “9-internal”,看来一切都是jdk-9导致的坑爹。


Logo

更多推荐