设为首页 收藏本站
查看: 793|回复: 0

[经验分享] Linux基础之软件源码包的安装(Tarball的安装)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-8-26 08:55:37 | 显示全部楼层 |阅读模式
软件源码包安装背景
    接触过Linux的人都知道要在Linux上安装软件通常使用rpm或yum,这两种工具的出现确实大大减少我们在Linux系统上安装软件的工作量,但是rpm及yum的安装的软件都是基于某种平台事先编译好的成品,这个成品中制作者考虑种种因素可能会对这个软件的功能进行一定程度的剪裁,也就是说现成的rpm包或yum包不是最全的软件包。而如果我们想要添加这个软件的rpm或yum中未包含的功能该怎么办?为了解决这个问题,我们就要使用软件源码包进行安装。






什么是软件源码包?
    Linux软件的源代码分发是指提供了该软件所有程序源代码的发布形式,需要用户自己编译成可执行的二进制码并进行安装。其优点是配置灵活,可以随意去掉或保留某些功能/模
块,适应多种硬件/操作系统平台及编译环境缺点是难度较大,一般不适合初学者使用


源码包格式有两种:
1.*.src.rpm形式的源代码软件包
2.*.tar.gz/*.xz/*.bz2形式的源代码软件包





软件源码包的安装
1.*.src.rpm形式的源代码软件包
    (该类型由于还是以rpm功能实现的软件安装,这里只是简单介绍下其方法,具体如何实验就不再演示。
    假设此*.src.rpm文件在/usr/local/src下,在该目录下执行rpmbuild --rebuild  *.src.rpm,若命令顺利执行则会在/usr/src/dist/RPMS下出现*.rpm
大致过程如下:
安装
  rpm -rebuild *.src.rpm会自动根据所在平台转换成相应的平台rpm包

  cd /usr/src/dist/RPMS

  rpm -ivh *.rpm
卸载
  rpm -e packagename

2.*.tar.gz/*.xz/*.bz2形式的源代码软件包

    以tar.gz或tgz或tar.bz2等格式结尾的软件包一般都是以源代码方式发布的软件,安装这类软件首先需要对软件进行解压:

  # tar -zxvf filename.tar.gz

  # tar -Jxvf filename.tar.xz

  # tar -jxvf filename.tar.bz2

  解压以后,就可以进入解压后的目录:

  # cd filename/

  对于这类文档,常见的安装步骤是:配置、编译和安装3步,其中最麻烦的就是配置,因为所有和软件安装相关的配置都是在这一步指定的:比如软件安装位置等。

  配置./configure

  编译make

  安装make install

  卸载make uninstall 或手动删除

  说明:建议解压后先阅读说明文件(ReadMe和Install),了解安装的需求,有必要时还需改动编译配置。有些软件包的源代码在编译安装后可以用make uninstall命令来进行卸载,如果不提供此功能,则软件的卸载必须手动进行。由于软件可能将文件分散地安装在系统的多个目录中,往往很难把它删除干净,那你应该在编译前进行配置,指定软件将要安装到目标路径:./configure --prefix=目录名,这样可以使用“rm -rf 软件目录名”命令来进行干净彻底的卸载。




Tarball形式的源代码软件包安装实验详解

该实验以httpd-2.2.29.tar.bz2为例进行实验
实验环境CentOS 7.2
实验准备
1、确认httpd-2.2.29.tar.bz2已下载,通常会把源码包保存在/usr/local/src路径下
2、确认make工具存在,rpm -q make检查即可,若不存在安装之。
3、为确保编译环境没有问题,我们最好使用yum groupinstall "Development Tools"将开发环境部署好,新手建议安装Development Tools,不过事实上该包的安装只需要gcc这个组件系统中存在即可,因此也可以只进行yum install gcc。至于yum仓库如何设置本文在此不介绍。
wKiom1e-ovKwfoBmAAAckf9DEXI841.jpg
……………………………………………………………………………………………………………………
实验步骤
1、解压httpd-2.2.29.tar.bz2,查看源文件夹的文件及其个数

wKioL1e-o7HQQ3mbAABCxzion4Y424.jpg
刚加压过的httpd-2.2.29有40个文件。


2、我们先看看INSTALL、README文件
1
[iyunv@localhost httpd-2.2.29]# cat INSTALL | less





wKiom1e-pKfxiyxhAABDh3a9K88085.jpg
该文件主要介绍此源码包的安装步骤
1
[iyunv@localhost httpd-2.2.29]# cat README | less





wKioL1e-pQahONsgAABEG28bAIg262.jpg
该文件主要介绍个这个软件,是什么,作用,功能等信息。


3、./configure --help查看配置的使用帮助信息
这里面的信息涉及软件安装位置,配置文件存放位置等等。根据需要进行选择,这里面比INSTALL安装文件要全。
wKioL1e-pnHSRnw1AABSp_QGL7I394.jpg


4、设置软件安装路径/usr/local/apache2配置文件路径/etc/apache2,因为是实验这里就不再指定其他额外设置。现实工作中根据实际情况进行选择。
1
[iyunv@localhost httpd-2.2.29]# ./configure --prefix=/usr/local/apache2 --sysconfdir=/etc/apache2





等待几分钟,环境检测结束。

wKiom1e-qCujIz-aAAA-r8ijuck674.jpg
首先我们echo $?可以知道第一步的命令成功执行,在命令成功执行后,源文件多了5个文件分别为:config.logconfig.niceconfig.statusMakefilemodules.c
.c结尾的为原始码config.log是在检测过程中产生的日志,config.niceconfig.status均为检测后产生的成功及状态信息。
其中Makefile对于下一步的编译至关重要,它里面包含了编译工作的预设行为,(比如程序之间的链接顺序,哪个先执行哪个后执行)make的编译过程就是按照Makefile文件进行的
wKioL1e-qs6jGVRYAABRL-fJpNM258.jpg
以上为截取的Makefile文件的部分内容。

5、编译,以 make 这个程序并使用该目录下的 Makefile 做为他的参数配置文件,来进行 make (编译或其他)的动作。
直接键入make命令即可,等待几分钟直至编译结束。

wKioL1e-xAeRL2fuAAA-rAOMbCU843.jpg
这步进行结束后,又多了4个文件modules.lo、modules.o、httpd、buildmark.o
.lo或.o结束的文件是源码经gcc编译后产生的目标文件
httpd这个文件的作用是为产生httpd的链接库的暂时性脚本,其英文解释如下图。
wKiom1e-sMSiHkZpAABU6KbbLu0711.jpg

6、make install 这就是最后的安装步骤了,make 会依据 Makefile 这个档案里面关亍 install 的项目,将上一个步骤所编译完成的数据给他安装到预定的目录中。

安装到这里源码包安装已经结束,只不过现在还有些问题:1)我们无法man apachectl这个命令2)apachectl这个命令没法使用tab补全。怎么办?
看来我们虽然安装了,但是做的还不够完善


下面我们来解决上面的两个问题。
安装后的配置
先按我们指定的安装路径找到已安装的软件
wKiom1e-sp-AfxRpAAASlsM7aMQ452.jpg
要解决man问题,我们需要将该软件中的man目录及其所在路径加入/etc/man_db.conf文件。
1、man apachectl问题
编辑/etc/man_db.conf,并将软件man目录的路径加入该文件
wKiom1e-s1_jP7OTAABZSn3CsLc035.jpg
之后我们需要重读/etc/man_db.conf文件

source /etc/man_db.conf即可

之后man apachectl成功显示其帮助文档。


2、解决tab补全命令问题
编辑文件/etc/profile.d/NAME.sh
在此文件中添加如下内容export PATH=$PATH:/PATH/TO/BIN/
wKioL1e-tIqBLQIOAAARF7dhYQg989.jpg
之后重读此文件即可解决tab补全命令问题。

看样子,我们的安装到此已经圆满结束,不过还有一点的小缺憾,不过对于现在这种实验环境确实无关紧要,如果是在实际工作中,我们还要考虑库文件,及头文件问题。因为实际工作中这个服务并不是以个体出现的而是与很多服务协同工作,因此免不了会涉及开发问题,及函数库读取效能问题。


有关开发的配置
如何提升函数库读取效能?
将常用的动态函数库先加载至内存当中可以解决函数库读取效能问题,不过如何将其加载到内存中?这两步就涉及到ldconfig命令及/etc/ld.so.conf.d/目录
编辑/etc/ld.so.conf.d/NAME.conf,将需要模块的库文件所在目录添加至此文件中,之后让系统重新生成缓存,使用ldconfig命令即可。
1
2
3
4
[iyunv@localhost ld.so.conf.d]# vim apache2.conf
[iyunv@localhost ld.so.conf.d]# ldconfig
[iyunv@localhost ld.so.conf.d]# cat apache2.conf
/usr/local/apache2/lib



对于开发人员他们会用到各种各样的头文件,系统为了方便期间会将头文件统一到一个目录便于程序员调用,这个目录一般为/usr/include
所以为了今后开发方便,我们还会将软件的头文件夹给映射至该目录
1
2
[iyunv@localhost ld.so.conf.d]# ln -sv /usr/local/apache2/include/ /usr/include/
"/usr/include/include" -> "/usr/local/apache2/include/"



wKiom1e-uWfSnUorAAAoxjYp9RM292.jpg
源码包的安装至此已经结束,整个安装过程,其实只要前期准备完善,制定好相应的安装策略,比如安装路径,配置文件路径等问题,整个安装过程其实挺简单。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-263108-1-1.html 上篇帖子: CentOS7 firewalld XML 定义策略 下篇帖子: linux抓包工具之tcpdump Linux 软件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表