Linux平台编译安装源码包,制作rpm二进制安装包。

简介:

送给读者们一句话:

Only those who constantly retool themselves stand a chance of staying employed in the years ahead
(只有那些不断充实自己的人,才有机会在往后的日子里持续地被雇佣。)

        好,进入今天的正题:

        在了解rpm和yum后,基本可以满足大部分的程序安装了,但是有些源程序还是要自己编译安装的,在本机平台编译的程序,能更好的兼容机器的CPU,发挥更好的性能。

下面我们让一起来编译安装一个httpd服务:

当然在编译之前,请确保系统已经安装了开发包组件。如果没有安装就用yum安装即可。

# yum groupinstall -y 

'Desktop Platform Development' 'Development tools' 'Server Platform Development'

1.解压httpd源程序包

# tar xvf httpd-2.4.6.tar.bz2 

# cd httpd-2.4.6

# ls

可以看到以下文件:

wKioL1NhoXij9WtMAAGf3uLS0XU806.jpg

configure 是一个编译环境检测和让用户定制编译配置的脚本,它结合Makefile.in 创建Makefile文件。

configure --help 可查看配置的帮助信息。

直接执行# ./configure --prefix=/usr/local/apache

如果这里有报错说没有找到apr的话,就要先用以下步骤安装apr和apr-util:

# tar -xvf apr-1.4.6.tar.bz2 
# ls
# cd apr-1.4.6
# ls
# ./configure 
# make
# make install
# cd ..
# ls
# tar -xvf apr-util-1.5.2.tar.bz2 
# cd apr-util-1.5.2
# ls
# ./configure --with-apr=/usr/local/apr/
# make
# make install

完成这些回到httpd-2.4.6目录再次执行:# ./configure --prefix=/usr/local/apache

wKioL1NhrHjheST4AAI7mnKKqfA706.jpg

检测完成以后,看下Makefile是否已创建。

wKiom1NhrWeAdc4zAAMgSisDIhI811.jpg

文件已经有了吧,现在可以执行make了:

# make

完成了,没有报错,执行make install

wKioL1NhstyDG_YvAATUztaPEvo507.jpg

# make install

安装完成!

wKiom1Nhs_ugu0EVAAJZvkGJa5w782.jpg

#cd /usr/local/apache

# ls

wKioL1NhtHijjeJ7AABzMScHBoQ230.jpg

程序就安装在这里了。

接下来要做的是,包含头文件。

# ln -sv /usr/local/apache/include/ /usr/include/httpd

包含man文档

# vim /etc/man.config

加上一行MANPATH /usr/local/apache/man

wKiom1NhuEjid9-YAAGF3Pr5Itc038.jpg

修改PATH环境变量:

# vim /etc/profile.d/apache.sh

写入export PATH=/usr/local/apache/bin:$PATH

wKiom1NhuwaQuWqAAADTxUsORAg678.jpg

这步也成功了,看下能不能启动程序。

# apachectl start

wKioL1NhvFqwEdkcAAN9NaBfemM787.jpg

看到没,80端口已经处于LISTEN(侦听状态)

用本机访问试试

wKiom1NhvW-DaJkJAAEZAgzfW5M389.jpg

也可以成功访问了,编译安装apache服务完成。

任务还没完,接下来学习如何将一个rpm源程序包,编译打包成一个可以直接使用的rpm二进制包。

先安装,注意这种是rpm源程序包,安装只是把文件解开成源程序和SPEC文件。

# rpm -ivh nginx-1.0.5-1.fc16.src.rpm

wKiom1Nh3rXAlWf2AAGXQsngc2Q100.jpg

看报一大堆错咋回事,因为没有mockbuild这个用户,useradd 创建即可。

# useradd mockbuild

# rpm -ivh nginx-1.0.5-1.fc16.src.rpm

没报错了吧!wKioL1Nh3y3jbJ7_AADQnEUHicY695.jpg

# cd ~/rpmbuild/SPECS/

里面有个nginx.spec的文件就参照他进行编译打包。

# rpmbuild -ba nginx.spec

wKioL1Nh4PHz0DkgAAEyfaCcd38316.jpg

 看又报错了,不过没事,把这些需要的包装上就好。

yum install pcre-devel zlib-devel openssl-devel libxslt-devel GeoIP-devel gd-devel -y

安装完成了,我们再试试。

# rpmbuild -ba nginx.spec

这次就成功执行了,等编译完成,我们cd ../PRMS/i686就可以看到,制作好的程序包了。

wKiom1Nh4xHg074IAAGFjqMtdCI876.jpg

# cd ../RPMS/i686/

# ls

wKioL1Nh45yw5LeVAACeb7gzGUs610.jpg

看到了没,这就是我们刚刚制作好的包,直接用rpm命令安装。

# rpm -ivh nginx-1.0.5-1.el6.i686.rpm 

wKioL1Nh5FaxsvaNAADPa0S09pA037.jpg

安装成功,启动下试试?

# /etc/init.d/nginx start

wKioL1Nh5Zbj8PcmAAIoSMWm9Cc056.jpg

启动成功!!!

用本机访问下:

wKiom1Nh5gWzjC0gAAOyetCBYsE365.jpg

哈哈,忙活了我一上午,终于圆满完成。  ——以上内容纯笔者手打,亲测实验截图。

有问题欢迎与我交流QQ:1183710107



本文转自qw87112 51CTO博客,原文链接:http://blog.51cto.com/tchuairen/1405277

相关文章
|
25天前
|
缓存 Ubuntu Linux
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
通过本文,我们详细了解了 `yum`、`rpm`、`apt-get`和 `wget`的区别、常用命令以及在CentOS和Ubuntu中安装 `wget`的方法。`yum`和 `apt-get`是高层次的包管理器,分别用于RPM系和Debian系发行版,能够自动解决依赖问题;而 `rpm`是低层次的包管理工具,适合处理单个包;`wget`则是一个功能强大的下载工具,适用于各种下载任务。在实际使用中,根据系统类型和任务需求选择合适的工具,可以大大提高工作效率和系统管理的便利性。
128 25
|
4月前
|
监控 Oracle 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第8天】在 Linux 平台设置 Oracle 开机自启动有多种方法,本文以 CentOS 为例,介绍了两种常见方法:使用 `rc.local` 文件(较简单但不推荐用于生产环境)和使用 `systemd` 服务(推荐)。具体步骤包括编写启动脚本、赋予执行权限、配置 `rc.local` 或创建 `systemd` 服务单元文件,并设置开机自启动。通过 `systemd` 方式可以更好地与系统启动过程集成,更规范和可靠。
334 2
|
4月前
|
Oracle Ubuntu 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第7天】本文介绍了 Linux 系统中服务管理机制,并详细说明了如何在使用 systemd 和 System V 的系统上设置 Oracle 数据库的开机自启动。包括创建服务单元文件、编辑启动脚本、设置开机自启动和启动服务的具体步骤。最后建议重启系统验证设置是否成功。
109 1
|
5月前
|
Kubernetes Linux 测试技术
|
5月前
|
NoSQL Ubuntu Linux
Linux平台安装MongoDB
10月更文挑战第11天
144 5
|
5月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
165 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
4月前
|
存储 缓存 Linux
【Linux】另一种基于rpm安装yum的方式
通过本文的方法,您可以在离线环境中使用RPM包安装YUM并进行必要的配置。这种方法适用于无法直接访问互联网的服务器或需要严格控制软件源的环境。通过配置本地YUM仓库,确保了软件包的安装和更新可以顺利进行。希望本文能够为您在特定环境中部署YUM提供实用的指导。
422 0
|
存储 安全 NoSQL
你不了解的Linux二进制分析
  二进制分析属于信息安全业界逆向工程中的一种技术,通过利用可执行的机器代码(二进制)来分析应用程序的控制结构和运行方式,它有助于信息安全从业人员更好地分析各种漏洞、病毒以及恶意软件,从而找到相应的解决方案。   要反编译Linux二进制文件,首先需要理解二进制格式本身。ELF目前已经成为UNIX和类UNIX操作系统的标准二进制格式。在Linux、BSD变体以及其他操作系统中,ELF格式可用于可执行文件、共享库、目标文件、coredump文件,甚至内核引导镜像文件。因此,对于那些想要更好地理解反编译、二进制攻破和程序执行的人来说,学习ELF至关重要。要想学习ELF这样的二进制格式,可不是一蹴
333 0
|
8天前
|
Linux
Linux 常用文件查看命令
`cat` 命令用于连接文件并打印到标准输出,适用于快速查看和合并文本文件内容。常用示例包括:`cat file1.txt` 查看单个文件,`cat file1.txt file2.txt` 合并多个文件,`cat > filename` 创建新文件,`cat >> filename` 追加内容。`more` 和 `less` 命令用于分页查看文件,`tail` 命令则用于查看文件末尾内容,支持实时追踪日志更新,如 `tail -f file.log`。
29 5
Linux 常用文件查看命令
|
1月前
|
Linux
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
79 24
Linux系统之whereis命令的基本使用