先说背景:
龙芯3a3000,中标麒麟linux,因为编译程序需要,卸载了好几个系统自带的关键组件,如automake,autoconf,libtool等等一大堆gcc编译需要的依赖库,这些库都是源码方式手动编译安装后使用了,用起来一点问题都没有,但是在想安装其他组件的时候,发现组件依赖检查失败,linux检测不到我以源码形式编译安装的这些程序包,所以yum程序安装依赖检查失败无法安装我需要用到的组件。
查过来查过去,最终发现一个解决方案是借助checkinstall这个开源项目自己在编译程序源码的时候自己打包一个rpm包进行安装使用,这样yum 在线安装其他程序的时候就可以正确的知道了你本机里面是有高版本的依赖程序的。
既然知道了checkinstall可以干这事,那就直接yum install checkinstall去用不就行了?很遗憾,国产软件应用环境就是这么恶劣,在线仓库里面没有checkinstall,没办法直接在线安装,需要手动编译安装。
那就下载checkinstall源码去编译安装吧,拖下来一个.tar.gz文件,解压缩以后发现没有像其他开源程序一样的configure程序,倒是有个makefile,那就直接输入make && make install编译安装吧?不好意思,事情要是这么简单我也不会写博客记录了,不行!估计是作者偷懒,在网站里面提供的checkinstall源码压缩包并不能直接在龙芯3a3000+gcc 4.9.3这样的环境下直接编译,只能这样干:
git clone http://checkinstall.izto.org/checkinstall.git
用git把仓库里面最新的源码下载回来,然后再
make && make install
看到这里,是不是就觉得也没啥,一般linux编译源码安装不都是make && make install么?这么想的话还是太轻敌了,后边的使用还有坑在等着我们填。
checkinstall程序底层依赖rpmbuild程序,要想让checkinstall正常可用,还需要安装以下几个组件:
yum install gcc rpm-build pcre-devel rpmdevtools
安装完成以后啊,心急火燎想去运行checkinstall还不行,还得TMD先执行rpmdev-setuptree这个命令,在/root路径里面自动创建打包程序用一系列空目录结构才行。
到这应该没坑了吧?我们就是想借助checkinstall把软件复制到特定路径下面,把软件信息记录到rpm数据库里面去啊,这都近似于要造个木头轮子我的先把锯木头的锯先造出来了啊!别高兴的太早,还有坑!!!
当你想用checkinstall创建自己的安装包的时候,在其他源码,比如automake的源码目录内执行checkinstall,它会自动生成一个缺省的配置参数文件,长话短说就是里面的11 - Recommends: [ ]和12 - Suggests: [ ]你不能空着待着,要不会创建rpm包失败!在配置参数信息设置界面输入对应的数字后修改为空的内容后才可以编译rpm成功!
看到这就没坑了,懒得自己编译checkinstall的,可以去这里下载,我上传到csdn了,在这里javascript:void(0)