目录
一、Linux源码包与RPM二进制包
1、Linux源码包
源码包就是一大堆源代码程序,是由程序员按照特定的格式和语法编写出来的
2、RPM二进制包
源码包一般包含多个文件,为了方便发布,通常会将源码包做打包压缩处理,Linux 中最常用的打包压缩格式为“tar.gz”,因此源码包又被称为 Tarball。
使用源码包安装软件具有以下几点好处:
1)开源。如果你有足够的能力,则可以修改源代码。
2)可以自由选择所需的功能。
3)因为软件是编译安装的,所以更加适合自己的系统,更加稳定,效率也更高。
4)卸载方便。
使用源码包安装软件的不足:
1)安装过程步骤较多,尤其是在安装较大的软件集合时(如 LAMP 环境搭建),容易出现拼写错误。
2)编译时间较长,所以安装时间比二进制安装要长。
3)因为软件是编译安装的,所以在安装过程中一旦报错,新手很难解决。
考虑到用户安装软件的难度,厂商直接将包做成二进制方便使用。
为了解决上诉问题,采用一下方式进行处理:
(1)预处理 (Pre-Processing)
1)将所有的#define删除,并且展开所有的宏定义
2)处理所有的条件预编译指令,比如#if #ifdef #elif #else #endif等
3)处理#include 预编译指令,将被包含的文件插入到该预编译指令的位置。
4)删除所有注释 "//"和"/* */".
5)添加行号和文件标识,以便编译时产生调试用的行号及编译错误警告行号。
6)保留所有的#pragma编译器指令,因为编译器需要使用它们
(2)编译 (Compiling)
编译过程就是把预处理完的文件进行一系列的词法分析,语法分析,语义分析及优化后,最后生成相应的汇编代码
(3)汇编 (Assembling)
汇编器是将汇编代码转变成机器可以执行的命令,每一个汇编语句几乎都对应一条机器指令。汇编相对于编译过程比较简单,根据汇编指令和机器指令的对照表一一翻译即可
(4)链接 (Linking)
通过调用链接器ld来链接程序运行需要的一大堆目标文件,以及所依赖的其它库文件,最后生成可执行文件
3、常见的软件包装封装类型
文件类型 | 保存目录 |
RPM软件包 | 扩展名为“.rpm” |
DEB软件包 | 扩展名为“.deb” |
源代码软件包 | 一般为“.tar.gz”、“.tar.bz2”等格式的压缩包 包含程序的原始代码 |
绿色免安装的软件包 | 软件包的扩展名不一,以TarBall格式的居多 在压缩包内提供已编译好的执行程序文件 解开压缩包后的文件即可直接使用 |
-
RPM包 : RPM Package Manager的缩写 是红帽公司自主研发的一款工具,实用性强。RPM包是预先在linux机器上编译好并打包好的文件,安装起来非常快捷。但是也有一些缺点,比如安装的环境必须与编译时的环境一致或者相当;包与包之间存在相互依赖的情况。
-
DEB包:在Linux系统中类似于windows中的软件包(exe),几乎不需要什么复杂的编译即可通过鼠标点击安装使用。此外,deb广泛应用于越狱后iOS软件及MeeGo(含Maemo软件)中。Debian包是将包的文件信息以及包内容,经过gzip和tar打包而成。
-
源代码软件包 :是需要我们自己把源代码编译成二进制的可执行文件。如果你读得懂这些源代码,那么你就可以去修改这些源代码自定义功能,然后再去编译成你想要的。使用源码包的好处除了可以自定义修改源代码外还可以定制相关的功能,因为源码包在编译的时候是可以附加额外的选项的。
-
绿色免安装的软件包 :顾名思义自行理解比如Windows的截图软件
4、RPM的命令格式
查询
选项 | 功能效果 |
---|---|
rpm -qa(all) | 显示当前系统中以 RPM 方式安装的所有软件列表 |
rpm -q 软件名 | 查询指定软件是否已安装 |
rpm -qi 软件名 | 查看指定软件包的名称、版本、许可协议、用途描述等详细信息 |
rpm -ql(list) 软件名 | 显示指定的软件包在当前系统中安装的所有目录、文件列表 |
rpm -qc (configfiles ) 软件名 | 列出已安装的指定软件的配置文件 |
rpm -qd(docfiles) 软件名 | 列出已安装的指定软件的软件包文档所在位置 |
rpm -qR (requires) 软件名 | 列出已安装的指定软件的依赖的软件包及文件 |
rpm -qf(file) 软件名 | 查看指定的文件或目录是由哪个软件包所安装的 |
rpm-qpd | 查询未安装指定软件包的文档位置 |
rpm -qpi | 查询未安装指定软件包的完整名称详细信息 |
rpm -qpl | 查询未安装指定软件包的文件列表 |
rpm -qpc | 查询未安装指定软件包的配置文件位置 |
着重举例:rpm -q rpm -qi rpm -qc
rpm -q 软件名 查询指定软件是否已安装
rpm -qi 软件名
rpm -qc 软件名
挂载
mount 设备 加文件夹路径 (已存在且是空的文件夹,原来的数据将被隐藏)
挂载规则
-
一个挂载点同一时间只能挂载一个设备
-
一个挂载点同一时间挂载了多个设备,只能看到最后一个挂载设备的数据,其它设备上的数据将被隐藏
-
一个设备可以同时挂载到多个挂载点
-
通常挂载点一般是已存在空的目录
取消挂载
命令:umount
格式:umount 挂载点
安装卸载升级
基本格式:rpm [选项] rpm软件包
选项 | 效果 |
---|---|
-i | 安装一个新的RPM软件包 |
-U | 升级某个软件包,若未安装过则进行安装 |
-F | 升级某个软件包,若未安装过则直接结束 |
-h | 在安装或升级过程中已#号显示读条 |
-v | 显示安装过程的详细信息 |
--force | 强制安装某个软件包 |
-e 软件名 | 卸载指定的软件 |
--nodeps | 在安装或升级、卸载一个软件包时,不检查与其他包的依赖关系 |
二、编译安装
大部分是c语言开发的,更方便的使用
-
软件版本比较新,新功能,修复bug
-
可以自行定义配置文件的路径
-
源码可能有100个功能,红帽认为你可能不需要会自行处理砍掉,自行定制50
1、程序包编译安装
源代码-->预处理-->编译-->汇编-->链接-->执行
多文件:文件中的代码之间,很可能存在跨文件依赖关系
虽然有很多开源软件将软件打成包,供人们使用,但并不是所有源代码都打成包,如果想使用开源软件,可能需要自已下载源码,进行编译安装。另外即使提供了包,但是生产中需要用于软件的某些特性,仍然需要自行编译安装。但是利用源代码编译安装是比较繁琐的,庆幸的是有相关的项目管理工具可以大大减少编译过程的复杂度。
下面安装 httpd 服务为实例。
2、安装步骤
1)预先安装一下软件
yum -y install gcc gcc-c++ make pcre-devel expat-devel perl pcre apr*
安装完成,如下图所示
2)导入httpd源码包
首先需要去apache官网下载httpd源码包
https://apache.org
3)将源码文件解压
4) 切换到解压出来的文件夹内
5)./configure 检测安装环境,添加减少功能,指定安装到哪个文件夹(若指定的文件夹不村子啊,会自动创建指定的文件夹)
成功显示如下:
6)make 编译
7)make install (该命令可以不使用,手动拷贝) 将二进制文件程序和相关文件拷入指定文件夹()
8)启动httpd服务
切换到/opt/bin/目录,bin目录下有apachectl文件
启动服务
然后测试:
测试没有关闭防火墙访问不成功
关闭防火墙,才会访问成功
三、RPM安装httpd
安装步骤
1、先挂载光驱
2、切换到挂载目录下的Packages文件内
3、使用RPM安装httpd
安装依赖文件,然后安装httpd
4、启动httpd服务
命令:systemctl start httpd.service
5、测试(使用自己的真机浏览器测试)
6、停止httpd服务
命令:systemctl stop httpd.service
访问不成功
四、YUM仓库搭建
yum本地仓库适用于无法连接网络的情况
1、创建新文件夹
用于存放/etc/yum.repo.d文件,防止对本地yum有影响