开发者学堂课程【Linux 软件包安装和 yum:源码编译安装】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/590/detail/8340
源码编译安装
内容介绍:
一、程序包编译
二、编译安装
三、总结
一、程序包编译
◆程序包编译安装∶
◆Application-VERSION-release.src.rpm-->
安装后,使用 rpmbuild 命令制作成二进制格式的 rpm 包,而后再安装◆源代码-->预处理-->编译-->汇编-->链接-->执行
◆源代码组织格式∶
多文件∶
文件中的代码之间,很可能存在跨文件依赖关系
C、C++∶make 项目管理器
configure 脚本-->Makefile.in -->Makefile
java: maven
Configure 脚本是默认的脚本
源码的使用存在一个需要编译的过程,这个过程需要从预处理-->编译-->汇编-->链接-->执行,这个过程是很复杂的。
源码编译,可以通过一些官方提供的一些处理工具,将这个过程进行简化。
比如:make 项目管理器,Make 不是一个小工具,它是一个项目管理器。
美可,是将源码所提供的上几百上千的文件批量的进行管理,按照一定的逻辑批量的进行一个项目管理。Make将文件按照逻辑顺序进行逐步的编辑成一个二进制的。
Make 命令也会用到一些文件,比如说 Configure 脚本,该脚本是默认的脚本。
Configure 脚本是自动存在于你的文件包中的源代码,configure 脚本的作用很大,在这里进行安装路径的设置。
Makefile 在源代码中是没有的,需要用 Configure 脚本进行编译。还有一个作用是禁用一些功能。比如说一共有50个功能,有30个功能不会用到,就可以用 Makefile 将其进行禁用,以节约储存空间。
Makefile.in 是一个模板文件。
然后进行填充内容,就生成了 Makefile 文件。有了 Makefile 文件,Make 项目管理器就可以自动将该功能读取出来。然后 Make 就会自动的把它编写成二进制,储存在相关的路径下面。
二、编译安装
◆C语言源代码编译安装三步骤∶
>1、./configure
(1)通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及 Makefile.in 文件生成 Makefile
(2)configure 是源码中已经有的文件,不需要我们重新写,同时这个文件单位很大。
configure 脚本不仅生成 Makefile,还会检查编译过程当中使用的相关程序。
(3)检查依赖到的外部环境,如依赖的软件包源码编译前,要把这一些相关的使用的程序包提前装好,随着编译的越来越复杂,需要的包就越多。
提前安装包组:INSTALL,README。
2、make 根据 Makefile 文件,构建应用程序
第二步就是执行命令。
>3、make install 复制文件到相应路径
◆开发工具∶
autoconf∶ 生成 configure 脚本 automake∶ 生成 Makefile.in
◆注意∶安装前查看INSTALL,README
操作:
[ root@centos7 data]#tar xf httpd-2.4.25. tar .bz2
root@centos7 data]#cd httpd-2.4.25/
[ root@centos7 httpd-2.4.25]#1s
ABOUT APACHE Bui 1dBin. Dsp emacs-sty le LAYOUT NOTICE srclib
acinc1ude.m4 bui 1dconf httpd. Dep li bhttpd. Dep NWGNUmakefi le support
注意:三个步骤必须都是在这个 httpd-2.4.25 总压缩目录里进行。
下面是安装说明的代码:
$ ./configure --prefix=PREFIX
$ make
$ make install
$ PREFIX/bin/apachect1 start
首先得看一下 Makefile 在哪些功能是能用的,哪些功能是禁用的。
加上 -enable-pie 表示启用功能
加上 -disable-authz 表示禁用功能
[ root@centos7 httpd-2.4.25]#du -sh
.
43M
[ root@centos7 httpd-2.4.25] #cat README
Fine. tuning ofthe instal lation di rectories:
-bindir=DIR
user executables [EPREFIX/bin]
Instal lation di rectories:
prefix=PREFIX
instal 1 archi tecture - i ndependent fi les in PREFIXL [/usr/ loca 1apache2]
>默认目录:EPREFIX/bin
>指定的目录:--bindir=DIR
>路径不要太复杂,最后删除会很麻烦。尽量做到统一存放。
[ root@centos6]#
[root@centos6]#
[ root@centos6]#rpm -qi httpd
Name: httpd Re locations: (not relocatable)
Version: 2.2.15 Vendor: Centos
搜索可执行权限:
[ root@centos7 httpd-2.4.25]#find -perm /111
安装的文件:
[ root@centos7 httpd-2.4.25]#ls /app
nttpd
[ root@centos7 httpd-2.4.25]#cd /app/httpd/
[ root@centos7 httpd]#ls
> (3) 导入头文件
基于链接的方式实现∶
In -sV
>((4) 导入帮助手册
编辑 /etc/man.configman_db.conf 文件
添加一个 MANPATH
etc 是我们自己配置的文件。
到此我们的源码编译就做完了,但是不完美。很多功能能用了,但是用起来不方便。
man 帮助的路径是我们自己指定的路径,Make 有可能是找不到的。可以提供修改路径,告诉 Make 文件的路径在哪里。
MANDATORY_MANPATH /usr/man
MANDATORY_MANPATH /usr/share/man
MANDATORY_MANPATH /usr/local/share/man
MANDATORY_MANPATH /app/httpd/man
实验∶建立 EPEL,BASE 仓库别名启用 epel 源禁用 epel 源
关闭防火墙 centos7
systemctl disable firewalld systemctl stop firewalld
centos6
chkconfig iptables off service iptables stop
SELinux 关闭
vim /etc/selinux/config SELINUX=disabled
reboot
yum remove libvirt-daemon
yum install remove list info search groupinstall grouplist groupremove history yum clean all
四、总结:
实验:源码编译安装 httpd-2.4.25. tar.bz2
1 yum groupinstall "deve lopment tools"
yum install apr-devel apr -util -devel pcre-devel openssl-devel
2 useradd -r -u 80 -d /data/www/ -s /sbin/nologin httpd
3 tar xf httpd-2.4.25. tar .bz2cd cd httpd-2.4.25/
4 cat README
cat INSTALL
5./configure --help
./configure --prefix=/app/httpd --sysconfdir=/etc/httpd24 --enable-ssl --disable-status
6 make && make instal
l
7 PATH
echo ' PATH=/app/httpd/bin:$PATH'
> /etc/profile .d/httpd. sh/etc/profile.d/httpd.sh
8 apachectl start