文章目录
一、Linux应用程序基础
当我们主机安装Linux操作系统时候,也会同时安装一些软件或网络服务等等,但是随着系统一起安装的软件包毕竟他是少数的,能够实现的功能也是有限的,如果需要实现更丰富的功能,那就需要安装应用程序。
1、应用程序和系统命令的关系
角色 | 系统 | 应用程序 |
---|---|---|
文件位置 | 一般在/bin和/sbin目录中,或为shell内部指令 | 通常在/usr/bin和/usr/sbin目录中 |
主要用途 | 完成对系统的基本管理工作,例如IP配置工具 | 完成相对独立的其它辅助任务,例如网页浏览器 |
适用环境 | 一般只在字符操作界面中运行。(终端程序) | 根据实际需要,有些程序可在图形界面中运行 |
运行格式 | 一般包括,命令字、选项和命令参数 | 通常没有固定格式 |
两者的用途区别:
-
系统命令: 命令文件一般在安装操作系统一起安装,用于辅助操作系统本身的管理。
-
应用程序: 应用程序一般需要在操作系统之外另行安装,提供相对独立操作系统的功能,有时候等同于“软件“的概念。
2、典型的应用程序的目录结构
文件类型 | 保存目录 |
---|---|
普通执行程序文件 | /usr/bin |
服务器执行程序文件和管理程序文件 | /usr/sbin |
应用程序配置文件 | /etc |
日志文件 | /var/log |
应用程序参考文档文件 | /usr/share/doc(主要存放软件说明文档) |
应用程序手册文件 | /usr/local/share/man |
3、常见的软件包封装类型
对于各种应用 程序的软件包,在封装时可以采用各种不同的类型,不同类型的软件包其安装方法也各不相同。
文件类型 | 保存目录 |
---|---|
RPM软件包 | 扩展名为“.rpm”(常用操作系统:EHEL,Fedora、CentOS) |
DEB软件包 | 扩展名为“.deb”(常用操作系统:DeBian、Ubuntu) |
源代码软件包 | 一般为“tar.gz”、“tar.bz2”等格式的压缩包 包含程序的原始代码 |
绿色免安装的软件包 | 软件包的扩展名不一,以TarBall格式居多 在压缩包内提供已编译好的执行程序文件 解开压缩包后的文件可直接使用 |
二、RPM包管理工具
1、RPM概述
Red-Hat Package Manager
-
由Red Hat公司提出,被众多Linux发行版所采用
-
建立统一的数据库文件
-
详细记录软件包安装、卸载等变化信息
-
自动分析软件包依赖关系
RPM软件包格式
使用RPM机制封装的软件包文件拥有约定俗称的命名格式
- 一般命令格式:bash-4.12-15.el6_4.x86_64.rpm
(软件名:bash,软件版本:4.12,发布次数 :15,操作系统类型:el16_4,硬件架构类型 :x86_64 ,后缀名:rpm格式)
2、RPM命令格式
RPM命令能够实现几乎所有对RPM软件包的管理功能
执行“man rpm” 命令可以获得关于rpm命令的详细帮助信息
rpm命令功能
-
查询、验证RPM软件包的相关信息
-
安装、升级、卸载RPM软件包
-
维护RPM数据库信息等综合管理操作
3、查询RPM软件包的信息
3.1 查询已安装的RPM软件信息
格式: rpm -q【子选项】 软件名
常用子选项
选项 | 功能 |
---|---|
rpm -q 软件名 | 查询指定软件是否已安装 |
rpm -qa | 显示当前系统中以rpm方式安装的所有软件列表 |
rpm -qi 软件名 | 显示已安装的指定软件的详细信息 |
rpm -ql 软件名 | 显示已安装的指定软件的文件列表 |
rpm -qc 软件名 | 列出已安装的指定软件的配置文件 |
rpm -qd 软件名 | 列出已安装的指定软件的软件包文档所在位置 |
rpm -qR 软件名 | 列出已安装的指定软件的依赖的软件包及文件 |
rpm -qF 文件或目录 | 查询已安装的指定软件属于哪个安装包 |
rpm -qf 文件或目录 | 查看指定的文件或目录时哪个软件包所安装的 |
实例1:查看指定软件是否安装:rpm -q 软件名
![image-20220511224512415](https://i-blog.csdnimg.cn/blog_migrate/71ae4c1b0bb72f317c2b506365592be2.png)
实例2:显示当前系统中以RPM方式安装的所有软件:rpm -qa 或rpm -qa 软件名
![image-20220511225337497](https://i-blog.csdnimg.cn/blog_migrate/370d82a4660887615402fe330200e07d.png)
实例3:显示已安装的指定软件的详细信息:rpm -qi 软件名
![image-20220511225541831](https://i-blog.csdnimg.cn/blog_migrate/ea0ae806960772814d974cf749383e3e.png)
实例4:查看已安装的指定软件的文件列表:rpm -ql 文件名
![image-20220511230508891](https://i-blog.csdnimg.cn/blog_migrate/1124ee0e28291f9be1a799018f116c93.png)
实例5:查看已安装的指定软件的配置文件所在位置: rpm -qc 文件名
![image-20220511230712153](https://i-blog.csdnimg.cn/blog_migrate/e37d074062e1974e10f5735ea4c39501.png)
实例6:查看已安装的指定软件的文档所在位置:rpm -qd 文件名
实例7:查看已安装的指定软件的依赖的软件包及文件 :rpm -qR
![image-20220511231205561](https://i-blog.csdnimg.cn/blog_migrate/c41829d90943c7780a520409ac61e26f.png)
![image-20220511231333976](https://i-blog.csdnimg.cn/blog_migrate/6c36c291ed329cb3db55e867c6f01865.png)
实例9:查看指定的文件或目录是哪个软件包所安装的:rpm -qf 绝对路径
3.2 查询未安装的RPM软件包的文件中的信息
格式:rpm -qp【子选项】 RPM包文件名(绝对路径的软件包名)
常用子选项
选项 | 功能 |
---|---|
rpm -qpi RPM包文件名 | 查询指定软件包的详细信息 |
rpm -qpl RPM包文件名 | 查询指定软件包的文件列表 |
rpm -qpc RPM包文件名 | 查询指定软件包的配置文件的位置 |
rpm -qpd RPM包文件名 | 查询指定软件包的文档的位置 |
实例1:查询指定软件包的详细信息:rpm -qpi 绝对路径的软件包名称
![image-20220512110845640](https://i-blog.csdnimg.cn/blog_migrate/d83f7f068b994853f5620428dde70112.png)
实例2:查询指定软件包的文件列表:rpm -qpl 绝对路径的软件包名
![image-20220512111028598](https://i-blog.csdnimg.cn/blog_migrate/0a22e5dfc5ce4c24821ee90739fb5984.png)
实例3:查询指定软件包的配置文件的位置:rpm -qpc 绝对路径的软件包名
![image-20220512111331163](https://i-blog.csdnimg.cn/blog_migrate/2b958630e1916548fdb6be3c3485fab6.png)
实例4:查询指定软件包的帮助文档的位置:rpm -qpd 决对路径的软件包名
![image-20220512111502618](https://i-blog.csdnimg.cn/blog_migrate/8140de3320dcc09a455b929275ffc9db.png)
4、安装、升级、卸载RPM软件包
格式:rpm 【选项】 RPM包文件
常用选项
选项 | 功能 |
---|---|
-i | 安装一个新的RPM软件包 |
-v | 显示软件安装过程中的详细信息 |
-e | 卸载指定名称的软件包 |
-h | 在安装或升级软件过程中,以“#”号显示安装进度 |
-U | 升级某个软件包,若未安装过,则进行安装 |
-F | 升级某个软件包,若未安装过,则放弃安装 |
–force | 强制安装某个软件包,比如要安装版本更久的软件包 |
–nodeps | 在安装或升级、卸载一个软件包时,不检查与其它软件包的依赖关系(会导致软件无法使用) |
实例:安装一个软件包:rpm -ivh 绝对路径加软件包名
注意:如果有依赖包的话,它会给你显示出来,但是不会帮你安装,需要自己手动安装依赖包。
![image-20220512112112396](https://i-blog.csdnimg.cn/blog_migrate/50979b3cd1f0e480b4f1c41ac5d63f0a.png)
实例:卸载一个软件包 :rpm -evh 软件名
5、维护RPM数据库
5.1、 重建RPM数据库,当RPM数据库发生损坏,可通过重建RPM数据修复
基本格式:
rpm --rebuilddb 或rpm --initdb
5.2 导入验证公钥,在没有导入用于数字签名的公钥文件之前,安装光盘中的一部分RPM软件包时会报错,需要向RPM数据库中导入位于光盘跟目录下的公钥文件。
基本格式:
mount /dev/cdrom /mnt/ #先挂载cdrom
rpm --import /mnt/RPM-GPG-KEY-CentOS-7 #导入公钥
6、解决软件包依赖关系的方法
6.1 安装有依赖关系的多个软件时
- 被依赖的软件包需要先安装
- 可同时制定多个 .rpm包文件进行安装
6.2 卸载有依赖关系的多个软件时
- 依赖其他的程序的软件包需要先卸载
- 可同时制定多个软件名进行卸载
6.3忽略依赖关系
- 结合“ - -nodeps”选项,但可能会导致软件异常
三、yum安装
1、什么是yum
-
yum(Yellow dog Updater Modified)是一个在Fedora和RedHat以及SUSE中的shell前段软件包管理器。
-
基于RPM包管理,能够从制定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,不需要频繁地一次次下载安装。
-
yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁又好记。
2、配置本地yum源仓库
配置步骤: 因为是需要创建本地源,所以需要进行将硬盘挂载到本地目录/mnt:mount /dev/sr0 /mnt ,再进入/etc/yum.repos.d/ 目录,在创建一个备份目录:mkdir ydq.bak ,创建好备份目录后,那就需要将网络源的配置进行移动备份,mv *.repo ydq.bak 。备份之后再使用vim进行编辑创建本地源配置:[ydq] name=ydq baseurl=file:///mnt enabled=1 gpgcheck =0,配置好后保存退出后进行删除更新缓存:yum clean all && yum makecache.
配置思路: yum如果需要使安装包的话,使用的安装包都是从网络源进行下载下来的,如果有没网络,就无法下载网络源的安装包,所以需要进行本地源的配置。
当我们进行下载的时候,会在缓存中进行下载,当网络断开时,无法进下载。配置了本地源后,会进行删除更新缓存。然后再进行安装时,就会从本地源安装。
3.1 配置虚拟机,要将已连接勾选上,这样才可以刻入光盘到指定目录。
![image-20220512141059244](https://i-blog.csdnimg.cn/blog_migrate/7d086ba1c17d44b661cdcd6e8d87499b.png)
3.2 挂载磁盘到指定目录下
查看挂载点:df -h
将某个盘挂载到目录下面:mount /dev/sr0 /mnt/ (j将硬盘sr0挂载到目录/mnt目录下)
注意:最好挂载的目录是空的,原来的数据被隐藏,一个挂载点同时只能挂载一个设备。
![image-20220512142227471](https://i-blog.csdnimg.cn/blog_migrate/115c36b566d4a1144c20aab05e4b0000.png)
3.3 切换到 yum.repo.d目录,新建一个文件夹,再将自带的仓库移走
![image-20220512142955249](https://i-blog.csdnimg.cn/blog_migrate/e55020e78a2cbb292decfa7c4ced031c.png)
3.4 新建yum仓库
![image-20220512144303193](https://i-blog.csdnimg.cn/blog_migrate/8b82f989dd0ab9c25e688de7707740b5.png)
3.5 删除yum缓存并更新(至此,yum本地源已创建完成)
![image-20220512144613634](https://i-blog.csdnimg.cn/blog_migrate/e8eba27d7d4b4cad815e7ef596240f23.png)
注意:生产环境中安装服务没有本地源也没有在线源,你怎么去安装带有依赖包的服务?下载需要网络源才可以下载。基本初始的linux都是具有网络源,前面有配置本地源的步骤,将上述步骤还原就是网络源。注意上处的yum缓存并更新
yum -y install 包名 --downloadonly --downloaddir=/home/ydq
#下载RPM包到指定目录
![image-20220512170614385](https://i-blog.csdnimg.cn/blog_migrate/8b677d06ae276f9ca58cec51c056f4db.png)
3、yum常用命令使用
yum -y install 软件名 #安装、升级软件包,“ -y ”选项表示自动确定下载依赖
yum -y remove 软件名 #卸载软件包,可自动解决其依赖关系
yum -y update 软件名 #升级软件包
实例1:下载lynx软件
![image-20220512170903380](https://i-blog.csdnimg.cn/blog_migrate/7b75ee33044b89adc6e00830c2ab5541.png)
实例2:下载lynx软件
![image-20220512171140593](https://i-blog.csdnimg.cn/blog_migrate/5100d2cd3cc84e84f8103d9e006f84e4.png)
实例3:升级lynx软件
![image-20220512171516593](https://i-blog.csdnimg.cn/blog_migrate/1149c5d65783c369893b0429c48c47b6.png)
yum list #查询软件包列表
yum list installed #查询系统中已安装的软件包
yum list available #查询仓库中尚未安装的软件包
yum list updates #查询可以升级版本的软件包
实例:逐个显示各种软件包。
![image-20220512171932143](https://i-blog.csdnimg.cn/blog_migrate/f423b12f9d34f34d0f94718be58ff69b.png)
yum info 软件名 #查询软件包的描述信息
实例:查询lynx的软件包描述信息
![image-20220512172105838](https://i-blog.csdnimg.cn/blog_migrate/24f8b7616fa694ff0cb432662063b35a.png)
yum search [all] 关键词 #根据某个关键词来查找相关的软件包
实例:根据lynx关键字来查询相关的包
![image-20220512172328929](https://i-blog.csdnimg.cn/blog_migrate/0b4f274fa537951ebd2ce91c0648d373.png)
yum whatprovides 命令 #查询命令属于哪个软件包
实例:查询ifconfig命令属于哪个软件包
![image-20220512172558410](https://i-blog.csdnimg.cn/blog_migrate/5c35da13677ed47b719c9511162cd7a3.png)
四、源代码编译安装
1、源代码编译概述
使用源代码优点
- 获得最新的软件版本,及时修复bug
- 根据用户需要,灵活定制软件功能
应用场合举例
- 安装较新版本的应用程序时
- 当前安装的程序无法满足需求时
- 需要为应用程序添加新的功能时
2、编译安装的基本过程
![image-20220512174051103](https://i-blog.csdnimg.cn/blog_migrate/24cbc5382ed5f49a2654941df2ccff09.png)
-
前提:下载好源代码安装的包文件
-
第一步:tar解包
使用解压命令:
tar -zxvf / jxvf 解压的文件 -C 解压到的路径
- 第二步: 进入解压后的包的目录,配置软件模块(安装路径、开启或关闭模块功能、管理服务进程的用户设定)
./configure --prefix=目标路径(此软件安装到哪里去)
- 第三步:编译(将源代码转换为可执行的程序)
使用make将源代码翻译成二进制语言
- 第四步:安装
make install 进行安装
3、案例:编译安装apache服务
3.1 准备工作
3.1.1 关闭防火墙和核心防护
①关闭防火墙
![image-20220514220854707](https://i-blog.csdnimg.cn/blog_migrate/1089ab850d945eeec460d80f20497b85.png)
②关闭核心防护
![image-20220514221715804](https://i-blog.csdnimg.cn/blog_migrate/975e215255f03b70da8988742de3fada.png)
3.1.2 上传压缩包
可以选择直接拉进shell,或者使用命令进行上传压缩包。上传下载的包为:lrssz,查看是否下载,没有下载可使用yum进行下载,下载之后使用rz命令(sz为下载)进行上传apache服务相关的安装包。
3.2 解压
将上传的压缩包进行解压到指定目录:/usr/local/ 目录下
进入到/usr/local 目录下,将解压的两个配置环境的文件夹剪切到httpd文件的srclib目录下,并且更改相应的名称(名称不要随意,跟跟下面一样)。
3.2 配置
在开始配置之前需要进行安装运行环境,以及依赖包。(必须要配,否则后面每一步都会报错)
进入到httpd-2.1.25目录下,使用脚本 ./configure 进行配置到指定目录。
3.3 编译和安装
进行编译和安装
3.4 测试验证
安装好后在local中会生成apache文件夹
开启apache服务,验证apache服务是否成功运行
或直接在浏览器中搜索ip地址