Linux系统监控命令和软件安装(2)

源码编译经典的三部曲configure, make, make install。如果不出问题,一步步执行下来就安装好了。但出了问题,就不是比较容易解决的。如果知道这背后的机制,对解决问题会有很大帮助的。

 

configure是检查系统的库文件、类文件、依赖软件是否存在以及它们的版本是否满足需求,并根据实际检测结果生成Makefile的工具。一般是一堆bash命令的组合。通常也需要在这一步配置一些参数。最常用的就是指定软件的安装目录--prefix=/home/ct/soft/specific_name。

 

make则是具体的编译过程。编译的语句都写在了Makefile中。make默认编译Makefile中出现的第一个target,也可以指定target编译,并根据Makefile的设置方式依次编译所有依赖的东西。

 

Makefile通常的格式和布局如下

# 假设当前文件夹下Makefile文件中内容如下

# first: target名字

# echo "compile first": target对应的命令,任何Linux命令都可以

$ cat Makefile

first:

    echo "compile first"

all: first second

    echo "compile all"

second:

    echo "compile second"

  

# 直接运行make,会make第一个出现的target

$ make

echo "compile first"

compile first

# make first与直接make相同,因为它出现在第一个

$ make first

echo "compile first"

compile first

# all依赖于first, second,因此make all会先执行make first, make second

# 然后才是自己所代表的命令

$ make all

echo "compile first"

compile first

echo "compile second"

compile second

echo "compile all"

compile all

有些软件的安装,在执行完make后就获得了可执行程序,可以跳过make install的过程,只需要放入环境变量就可以运行了。但部分软件还需要一些依赖关系,所以需要执行make install才算完成了完整的安装。

make install通常是拷贝make编译出来的可执行文件或者依赖的库文件(如果有的话)到configure时的--prefix指定的目录下。

安装好的软件放入环境变量, 就可以快乐的运行了。

两点注意:

从源码编译最难解决的问题就是依赖的库文件、头文件、依赖软件的缺失或版本不匹配,没有统一的解决办法,原则就是缺啥补啥。后面提到的Anaconda,会对库文件的依赖提供一个简便的解决办法。

三部曲每一步的执行,屏幕上都会输出比较多的信息,一定仔细看最后有没有ERROR类的字样,对判断软件有无安装成功和下一步要怎么解决问题会很有帮助。

Linux包的安装通用方式主要是这些,后面还会提到两种虚拟安装方式,都是为了简化安装而提出的。

 

Python包的安装

在没有Anaconda(或其前身canopy)出现之前,Python包以其管理混乱、安装困难著称。有了Anaconda后,不只python包的安装简单了,其它软件的安装也都方便了 (详见后面Anaconda的两个福利)。

首先下载Anaconda的安装包 https://www.continuum.io/downloads。

Anaconda的安装包做的很人性化,一个bash脚本,只要运行bash Anacond*x86_64.sh,然后按照提示操作就可以了。

安装好后,设置或刷新下环境变量就可以使用了。

此后再安装python的包只需要执行pip install pakcage_name或conda install pakckage_name就可以了。

这里唯一需要注意的就是确认使用的python或pip确实是Anaconda安装的python或pip。

which python查看使用的python命令。

如果使用的还是系统默认的python,则需要检查下环境变量的设置。

Anaconda的两个福利

1、头文件和库文件库

这是Anaconda安装后的目录结构

bin   envs  Examples  imports  lib    LICENSE.txt  pkgs     share  var

conda-meta  etc   gcc include  lib64  mkspecsplugins  ssl

其中lib目录下,一部分是依赖的动态链接库, .so文件;这也是在源码编译时最常见的拦路虎。通常,只需要把这个目录放入环境变量LD_LIBRARY_PATH里面比如export LD_LIBARY_PATH=${LD_LIBARY_PATH}:anaconda_path/lib就可以解决问题。

cairo                    libitm.a              libQtScript.so.4

cmake                    libitm.la             libQtScript.so.4.8

engines                  libitm.so             libQtScript.so.4.8.7

gcc                      libitm.so.1           libQtScriptTools.la

gcj-4.8.5-14             libitm.so.1.0.0       libQtScriptTools.prl

glib-2.0                 libitm.spec           libQtScriptTools.so

libargtable2.a           libjpeg.a             libQtScriptTools.so.4

libargtable2.la          libjpeg.la            libQtScriptTools.so.4.8

libargtable2.so          libjpeg.so            libQtScriptTools.so.4.8.7

libargtable2.so.0        libjpeg.so.8          libQtSql.la

libargtable2.so.0.1.8    libjpeg.so.8.4.0      libQtSql.prl

libasan.a                libmkl_avx2.so        libQtSql.so

libasan.la               libmkl_avx512_mic.so  libQtSql.so.4

libasan_preinit.o        libmkl_avx512.so      libQtSql.so.4.8

libasan.so               libmkl_avx.so         libQtSql.so.4.8.7

2、bioconda

bioconda提供了一个虚拟环境,方便软件的编译安装。

 

R包的安装

需要注意的也是依赖的软件或库文件的版本,同样的Anaconda提供的lib库也可以直接拿来用。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/13518.html