目录
实际上,源码包就是一大堆源代码程序,是由程序员按照特定的格式和语法编写出来的
二进制包,也就是源码包经过成功编译之后产生的包。由于二进制包在发布之前就已经完成了编译的工作,因此用户安装软件的速度较快(同 Windows下安装软件速度相当),且安装过程报错几率大大减小
①将所有的#define删除,并且展开所有的宏定义
②处理所有的条件预编译指令,比如#if #ifdef #elif #else #endif等
③处理#include 预编译指令,将被包含的文件插入到该预编译指令的位置
④删除所有注释 "//"和"/* */"
⑤添加行号和文件标识,以便编译时产生调试用的行号及编译错误警告行号
⑥保留所有的#pragma编译器指令,因为编译器需要使用它们
编译过程就是把预处理完的文件进行一系列的词法分析,语法分析,语义分析及优化后,最后生成相应的汇编代码
汇编器是将汇编代码转变成机器可以执行的命令,每一个汇编语句几乎都对应一条机器指令。汇编相对于编译过程比较简单,根据汇编指令和机器指令的对照表一一翻译即可
通过调用链接器ld来链接程序运行需要的一大堆目标文件,以及所依赖的其它库文件,最后生成可执行文件
文件类型 | 保存目录 |
---|---|
普通执行程序文件 | /usr/bin |
服务器执行程序文件和管理程序文件 | /usr/sbin |
应用程序配置文件 | /etc |
日志文件 | /var/log |
应用程序参考文档文件 | /usr/share/doc |
文件类型 | 保存目录 |
---|---|
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的截图软件
方式 | 说明 |
---|---|
编译安装 | 灵活性较高,但难度较大,可以安装较新的版本 |
rpm安装(redhat) | liunx包安装,可用相关命令查看软件信息,但安装卸载目标软件前,需安装卸载一系列的依赖软件,较麻烦易出错 |
yum安装 | yum是rpm的升级版,旨在解决软件之间的依赖关系 |
liunx包安装,可用相关命令查看软件信息,但安装卸载目标软件前,需安装卸载一系列的依赖软件,较麻烦易出错
RPM软件可以实现几乎所有的功能,新增、删除、更新等
查询命令:
选项 说明 rpm -q 软件名 查询指定软件是否已安装 rpm -qa 软件名 显示当前系统中以 RPM 方式安装的所有软件列表 rpm -qi 软件名 查看指定软件包的名称、版本、许可协议、用途描述等详细信息 rpm -ql 软件名 显示指定的软件包在当前系统中安装的所有目录、文件列表 rpm -qc 软件名 列出已安装的指定软件的配置文件 rpm -qd 软件名 列出已安装的指定软件的软件包文档所在位置 rpm -qR?软件名 列出已安装的指定软件的依赖的软件包及文件 rpm -qf 软件名 查看指定的文件或目录是由哪个软件包所安装的
通式:mount? 设备? 文件夹路径? ? ? ? ? ?//挂载
? ? ? ? ? ?unmount? ? 文件夹路径? ? ? ? ? ? ? //取消挂载
? ? ? ? ? ?df(disk free)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//查看挂载情况
挂载规则:只要是外来的硬件设备,在Linux系统中使用都需要挂载
通式:?rpm? 选项? rpm软件包
rpm -ivh 软件名 //rpm安装
rpm -e 软件名 //rpm卸载
选项 | 说明 |
---|---|
-i | 安装一个新的RPM软件包 |
-U | 升级某个软件包,若未安装过则进行安装 |
-F | 升级某个软件包,若未安装过则直接结束 |
-h | 在安装或升级过程中已#号显示读条 |
-v | 显示安装过程的详细信息 |
--force | 强制安装某个软件包 |
-e 软件名 | 卸载指定的软件 |
--nodeps | 在安装或升级、卸载一个软件包时,不检查与其他包的依赖关系 |
安装路径 | 说明 |
---|---|
/etc/ | 配置文件安装目录 |
/usr/bin/ | 可执行的命令安装目录 |
/usr/lib/ | 程序所使用的函数库保存位置 |
/usr/share/doc/ | 基本的软件使用手册保存位置 |
/usr/share/man/ | 帮助文件保存位置 |
yum是一个基于RPM包构建的软件更新机制,能够自动解决软件包之间的依赖关系。解决了日常工作中的大量查找安装依赖包的时间
yum安装需要理清客户端和服务端的关系:
区别 | 本地yum仓库 | 网络yum仓库 |
---|---|---|
客户端与服务端 | 主机自己既是服务端也是客户端 | 客户端与服务端是分开的 |
网络情况 | 无网络情况救急使用 | 需要网络 |
配置文件 | 配置文件需要修改 | 配置文件不需要修改 |
安装速度 | 较快 | 较慢 |
操作情况 | 需要手动配置 | 系统安装好自带,无需操作 |
软件情况 | 软件数量少且不具有时效性 | 软件数量多且具有时效性 |
搭建本地yum仓库的步骤:
- mount /dev/sr0 /mnt? ? ? ? ?//挂载,提供安装包元数据
- cd /etc/yum.repos.d/? ? ? ? ?//切换到yum源配置文件夹
- mkdir backup? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mv *.repo backup? ? ? ? ? ? ?//创建备份文件夹,用于存放原网络.repo文件
- vim /etc/yum.repos.d/local.repo? ? ? ?//配置本地yum源配置? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??[local]?
? ? name=nocal
? ? baseurl=file:///mnt
? ? gpgcheck=0- yum clean all? ? ? ? ? ? ? ? ? ? ? //清除缓存
- yummakecache? ? ? ? ? ? ? ? ? //重新下载元数据
- yum install -y tree? ? ? ? ? ? ? ?//测试安装tree工具。如果提示存在可以rpm -e tree卸载
(1)原理
①客户端根据配置文件找到服务端
②客户端将元信息下载到本地(元信息: 安装包的位置,以及安装的依赖关系)
③根据元信息去下载对应的安装包到本地后,然后安装
④安装完成后再删除安装包(删除需要一定的时间)
(2)网络yum安装程序
通式:yum? install? 软件名? -y(同意)
灵活性较高,但难度较大,可以安装较新的版本
编译安装步骤:
前提:首先把yum源配置文件夹.repo文件复原,删除或移动local.repo至backup文件夹
编译安装nginx
- mkdir /data/? ? ? ? ? ? ? ? //在根下创建data文件夹
- cd /data/? ? ? ? ? ? ? ? ? ? ?//切换到data目录下
- wget http://nginx.org/download/nginx-1.18.0.tar.gz? ? ? ?//下载nginx安装包
- tar xf nginx-1.18.0.tar.gz? ? ? ? ? //解压
- cd ./nginx-1.18.0/? ? ? ? ? ? ? ? ? ? ?//切换目录
- yum -y install gcc gcc-c++ pcre-devel openssl-devel zlib-devel openss1 openss1-deve1 ?#下载安装所需编译工具
- ? ./configure --prefix=/apps/nginx? ? ?//执行脚本,指定安装位置
- make -j 2 && make install? ? ? ??
- ln -s /apps/nginx/sbin/* /usr/bin/? ? ? ?//创建软连接方便补全
- systemctl stop firewalld ? ? ? ?//关闭防火墙
- setenforce 0? ? ? ? ? ? ? ? ? ? ? ? ?//临时关闭防护
- nginx ? ? ? ? ? #开启服务 ? ? ? ? ?nginx -s stop? ? ? ?//关闭服务
- ss -natp | grep 80? ? ? ? ? ? ? ? ?//查看进程端口号,检测服务是否开启? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 或者curl 172.16.12.11? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 或者直接浏览器访问172.16.12.11?
?
?