背景
hue编译了很多遍,在ubuntu和centos上都安装过,联网和离线场景也都搞过,也搞坏过好多次操作系统,可以说hue是我目前为止编译踩坑最多的组件之一。不过坑多也意味着成长,所以记录下该文章一方面来加深自己的印象,另一方面也是想跟大家分享下自己的收获。
1、包管理了解
linux包管理大体上分为两类:
一类是Debian 系列,其底层基于dpkg命令管理各种deb包的安装,上层又有apt、apt-get、aptitude等操作性更友好的包管理工具;
另一类是RedHat 系列,底层基于rpm命令管理各种rpm包的安装,上层也有yum等其它操作性更好的包管理工具。
2、编译思路与准备
首先挑选编译的hue版本,这里我挑选的是hue 4.10.0版本。其次到该github上查看编译的命令。
sudo yum install ant asciidoc cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-plain gcc gcc-c++ krb5-devel libffi-devel libxml2-devel libxslt-devel make mysql mysql-devel openldap-devel python-devel sqlite-devel gmp-devel
可以看到,hue编译依赖很多,所以尽量不要拷贝那一整套命令直接执行,尽量一个一个的执行,这样即使哪个依赖出问题了,你也可以更精确的知道,这很便于后续的问题解决。
还有就是我刚开始编译的时候会报libc等库不存在或者版本不匹配的问题,这里友情提醒下,千万不要改系统库,一个失误可能就是整个系统不能用。我把系统玩坏的情况基本都是想修改系统库,不过后面也学会了如何修复系统库,但是那个操作性价比太低,而且麻烦,所以不会介绍如何修复。
对于libc或zlib等不存在或版本不匹配问题,基本上升级一遍依赖库就可以解决。因为如果需要修改系统库才能编译hue,那么hue是不可能被很好的推广的,因此不到万不得已以及知道修改系统库的可能后果,真的不建议编译时修改系统库。
3、遇到的问题
因为我已经安装过很多次,当时没有记录问题,因此这里我贴一些我还有印象的问题(centos和ubuntu的都包含),如果大家有问题也可以在下面留言一起交流。
另外,每一次编译过程如果出现问题,在重新编译前尽量make clean一下,避免上次的错误的编译安装残留影响后面的重新安装。
3.1 centos - mysql已经安装过
报错信息如下:
Error: Package: 1:mariadb-devel-5.5.68-1.el7.x86_64 (os)
Requires: mariadb-libs(x86-64) = 1:5.5.68-1.el7
You could try using --skip-broken to work around the problem
** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows:
mysql-community-server-8.0.28-1.el7.x86_64 has missing requires of mysql-community-icu-data-files = ('0', '8.0.28', '1.el7')

通过报错可以知道,系统中有更高的版本mysql 8,但是我们需要的是低版本mariadb,而且此时回过头看我们上一步安装mysql的详细信息可以知道由于mysql8已经存在,所以yum install mysql是没有安装成功的。

解决方式:
rpm -qa|grep -i mysql 查看已经安装的高版本mysql组件

rpm -ev --nodeps 组件名 卸载已经安装的组件

3.2 npm下载不下来
报错信息如下:
npm ERR! code ETIMEDOUT
npm ERR! syscall connect
npm ERR! errno ETIMEDOUT
npm ERR! network request to https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz failed, reason: connect ETIM
npm ERR! network This is a problem related to network c

最低0.47元/天 解锁文章
2631

被折叠的 条评论
为什么被折叠?



