欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

CentOS下的编译源代码安装软件( 以安装python3为例 )

程序员文章站 2022-03-14 18:33:44
在 CentOS 下安装软件,可以使用 rpm软件包、yum工具、自行下载源代码进行编译安装,其中编译安装的定制性较高 对于一些在软件,自行下载源代码进行编译安装较为方便 程序:源代码 --> 编译 --> 链接 --> 运行 执行编译安装步骤: 获取源代码并解压 在解压完的源代码目录下执行 con ......

在 CentOS 下安装软件,可以使用 rpm软件包、yum工具、自行下载源代码进行编译安装,其中编译安装的定制性较高

对于一些在软件,自行下载源代码进行编译安装较为方便

程序:源代码 --> 编译 --> 链接 --> 运行

 

执行编译安装步骤:

  • 获取源代码并解压
#tar xf xxx.tar.gz
//或者:
#tar xf xxx.tar.bz2
  • 在解压完的源代码目录下执行 configure 脚本
#./configure [options]
选项:
  --help            查看该脚本帮助信息,各个软件的选项存在差异,下面是通常情况下
    --prefix=PATH     定义应用程序的安装路径,--prefix=/usr/local/APP_NAME
    --sbin-path=PATH  定义应用程序的二进制命令的路径
    --conf-path=PATH  定义应用程序配置文件路径,--conf-path=/etc/APP_NAME
    --enable-XXXX     开启某项功能(XXXX),应用程序支持该功能,但默认不安装
    --disable--XXXX   关闭某项功能(XXXX),应用程序支持该功能,默认安装,但用户不需要
    --with--XXXX      开启某项功能(XXXX),应用程序支持该功能,但默认不安装
    --without--XXXX   关闭某项功能(XXXX),应用程序支持该功能,默认安装,但用户不需要

    如果 ./configure 时遇到依赖性的错误信息,可以用下列方法解决

      1. 用 without 关闭该项功能(不推荐)
      2. 安装所需的环境,安装所需的环境的 devel 
  • make:定义 Makefile 按照哪种顺序去编译源程序  
make -j N      多个线程一起编译,N为线程数量,make会自动按照当前目录下makefile文件中的编译顺序对文件进行编译
  • make install:安装应用程序
make install

 

编译安装完成后的工作:

  • 添加所安装的应用程序命令文件到系统路径:(把应用程序的命令文件添加的 PATH 变量中)

    第一种方法:在 /etc/bin 目录下做命令文件( bin 文件)的链接

#ln -s /usr/local/APP_NAME/bin/* /usr/bin                        //为所有文件做链接,会产生大量的inode节点,不推荐
//或者:
#ln -s /usr/local/APP_NAME/bin  /usr/bin/APP_ANME                //为目录做链接

    第二种方法:修改 /etc/profile 文件中的PATH变量( /etc/profile 文件在 shell 启动时会自动执行)

#vim /etc/profile
  export PATH="$PATH:/APP_PATH"             //在文末后面加上该行语句
#source /etc/profile                               //重新加载该文件,使修改生效

    第三种方法:在 /etc/profile.d/ 目录中建立 .sh 文件(在 /etc/profile.d 目录中存放的是一些应用程序所需的启动脚本,会被自动执行)

#vim /etc/profile.d/APP_NAME.sh
  PATH=$PATH:/usr/local/APP_NAME/bin
//重启,使修改生效
  • 添加所安装的应用程序库文件到系统库文件路径( /usr/lib/usr/lib64 )中

    第一种方法:为库文件做链接文件( lib对于32bits系统,lib64对应64bits系统 )

#ln -s /usr/local/APP_NAME/lib/* /usr/lib
//或:
#ln -s /usr/local/APP_NAME/lib  /usr/lib/APP_NAME

    第二种方法:在 /etc/ld.so.conf.d 目录下建立 APP_NAME.conf,把应用程序的库文件位置添加进去( /etc/ld.so.conf.d 用来加载 Linux 系统中的动态库文件的 )

#ldconfig
  -v:          加载修改后的配置,使之生效,并显示加载库文件过程,可以查看添加的应用程序库文件能否被成功加载
  • 添加应用程序的头文件到系统头文件路径( /usr/include ):

    做链接文件

#ln -s /usr/local/APP_NAME/include/* /usr/include
//或:
#ln -s /usr/local/APP_NAME/include /usr/include/APP_NAME   
  • 添加应用程序的帮助信息

    第一种方法:使用 man 时指定帮助信息文件的路径

man -M APP_PATH bin_name        //-M指定帮助信息的位置

    第二种方法:修改man配置文件( CentOS7 man配置文件:/etc/amn_db.conf )

#vim /etc/man_db.conf
   MANPATH_MAP  APP_PATH(命令所在的路径) HELP_PATH(帮助信息文件的路径)    //在对应的位置添加该行信息  

      重启,使修改生效

 

 

举例:在CentOS7下安装Python3

在CentOS7下预装的Python版本还是python2

#python -V   //查看python版本

下载wget工具

#yum -y install wget

下载python3源代码包( wget download_url,即可以把down_url链接对应的资源下载到当前目录下)

在Python官网源代码包下载页面( https://www.python.org/downloads/source/ )可以找对应源代码包的下载链接

#wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0b3.tgz

对python3的源代码包进行解压

#tar xf Python-3.7.0b3.tgz 

如果tar文件没有报错,就进入解压得到的源代码目录里;如果报错,可能是python源代码包下载不完整导致的,建议重新下载,或者更换下载链接

#cd Python-3.7.0b3
# ls
//      aclocal.m4      configure.ac        install-sh          Mac                Objects         Programs           setup.py
//      config.guess    Doc                 Lib                 Makefile.pre.in    Parser          pyconfig.h.in      Tools
//      config.sub      Grammar             LICENSE             Misc               PC              Python
//      configure       Include             m4                  Modules            PCbuild         README.rst

//可以看到有可执行文件configure,没有makefie文件

//可以通过./configure --help查看该软件源代码configure的帮助信息

安装编译

#./configure --prefix=/usr/local/python3          //把python3安装到/usr/local/python3目录下
//执行./configure后可以ls,发现在当前目录下已经生成Makefile文件

#make -j 20                       //可以省略Makefile,因为make会自动寻找该目录下的Makefile或makefile文件进行编译
#make install                     //安装python3

//发现报错:
// zipimport.ZipImportError: can't decompress data; zlib not available
// make: *** [install] Error 1
//原因是依赖性问题,下载zlibr软件包和zlib的devel包
#yum -y install zlib zlib-devel

#make install                     //重试
//发现又报错:
//ModuleNotFoundError: No module named '_ctypes'
//原因是3.7版本需要一个新的包libffi-devel
#yum install libffi-devel -y  
#make install                     //重试
//successfully installed pip-9.0.3 setuptools-39.0.1    成功安装

 

安装完后的配置

bin文件:

#vim /etc/profile.d/python3.sh
  PATH=$PATH:/usr/local/python3/bin
//重启,使修改生效

库文件:

#vim /etc/ld.so.conf.d/python.conf
        /usr/local/python

#ldconfig -v    //加载修改后的配置,并检查python3库文件是否被加载进去

头文件:

#ln  -s  /usr/local/python3/include  /usr/include/python3     //为库文件做链接

帮助信息:

#vim /etc/man_db.conf
  MANPATH_MAP /usr/local/python3/bin /usr/local/python3/share/man
//重启,使修改生效

 

检测:

#vim test.py
    #!/usr/bin/env python3
    print("test successful!")
#chmod +x test.py
#./test.py
>>>test successful!