linux系统安装和管理程序

1.应用程序和系统命令的关系与区别

角色 系统命令 应用程序
文件位置 一般在/bin和/sbin目录中,或为Shell内部指令 通常在/usr/bin和/usr/sbin目录中
主要用途 完成对系统的基本管理工作,例如IP配置工具 完成相对独立的其他辅助任务
适用环境 一般只在字符操作界面中运行 根据实际需要,有些程序可在图形界面中运行
运行格式 一般包括命令字、命令选项和命令参数 通常没有固定的执行格式

2.典型应用程序的目录结构

文件类型 保存目录位置
普通执行程序文件 /usr/bin
服务器程序、管理程序文件 /usr/sbin
应用程序配置文件 /etc
日志文件 /var/log
应用程序参考文档文件 /usr/local/share/man
应用程序手册页文件 /usr/local/share/man

3.常见的软件包封装

文件类型 保存目录
RPM软件包 扩展名为.rpm
DEB软件包 扩展名为.deb
源代码软件包 一般为.tar.gz.tar.bz2等格式的压缩包包含程序的原始代码
绿色免安装的软件包 软件包的扩展名不一,以TarBall格式的居多,在压缩包内提供已编译好的执行程序文件,解开压缩包后的文件即可直接使用(即二进制包)

4.软件安装的方式

软件安装共3种安装方式

  1. 通过rpm包安装
  2. 通过yum仓库库安装。
  3. 编译安装(二进制安装)

三张方式各有所长,使用中根据实际情况判断

4.1 RPM包安装

RPM(Red-Hat package Manager)

是由Red Hat公司提出, 被众多Linux发行版所采用的一种安装软件方式,它建立统一的文件数据库,详细记录软件包安装、卸载、升级等变化信息,可以自动分析软件包依赖关系。实用性很强,安装起来也非常快捷,但是有不少缺点 ,比如,安装的换件必须要于编译是的环境一致或相当,包与包之间存在互相依赖的情况,缺少依赖文件的情况下强装会存在一定的问题,安装可能会导致程序故障,无论安装还是卸载时,都需要先处理依赖文件 (以.rpm为结尾的文件认为是软件的安装包。)

RPM软件包的软件素材参考:www.rpm.org

RPM的命名格式bash-4.1.2-15.el6_4.x86_64.rpm

依次的含义:

bash:软件名称

4.1.2:版本号

-15:发布次数

x86_64:硬件平台

.rpm:扩展名

RPM命令及选项

格式: rpm [选项] 软件名

选项 作用
-i 安装(若有其他依赖包,会提示但是不会直接安装)
-v 显示安装过程
-h 人性化显示
-e 卸载软件(只能卸载一个,不会卸载安装的依赖包)
-q 查看软件是否已安装
-qc 查看已安装所有配置文件
-qi(list) 查看指定软件包的名称、版本、许可协议、用途描述等详细信息
-qf (file) 查看指定的文件或目录是由哪个软件包所安装的
-qa (all) -qa (all)
-qd(docfiles) 列出已安装的指定软件的软件包文档所在位置
-u(小写) 如果未安装,执行安装,已安装,执行升级更新
-U(大写) 如果未安装,结束,已安装,执行升级更新

所以一般以rpm形式安装一个软件的格式就是:rpm -ivh 软件名(安装人性化显示安装过程,-i必须要有-v-h可以不加)

卸载一个软件的格式就是:rpm -e 软件名

PS:rpm安装虽然快速,但因不会自动解决怡莱关系,实际项目中一般还是yum或源代码编译安装使用的较多,不过还是之前说的,要根据实际情况要判断到底用哪一种

4.2 yum仓库安装

yum(Yellow dog Updater, Modified)是一个基于RPM包(Red-Hat Package Manager)构建的软件更新机制,它的有点就是可以自动解决软件包之间的依赖关系

常见的yum仓库有两种:

  • 光盘的仓库基本仓库
  • epel扩展仓库

注意yum安装一定要有安装包

1.yum如何实现安装

先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下,内含有软件的依赖关系和软件的位置),当yum客户端利用yum/dnf工具进行安装时包时,会自动下载repodata中的元数据,查询元数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装

yum实现安装,依赖于环境,依赖于服务端和客户端,允许跨网络(当本身既是服务端也是客户端时,建立本地yum仓库)

仓库服务器 (服务端):

提供RPM安装包和元数据给客户端

  • RPM安装包(存放于Packages文件夹内)
  • 元数据 (repodata目录)

元数据内存有(repodata文件夹,即软件的目录),软件的依赖关系和软件的位置

客户端 :

根据得到的配置文件信息去仓库找对应的包并下载到本地

(一定要有配置文件 *.repo,配置文件必须以.repo 结尾

客户端默认配置一般存放在文件目录 /etc/yum.repo.d/下)

如果建立本地yum库,配置文件的编辑方式

ini 复制代码
[xxxx]                       #仓库的描述  自定义
name = xxxx                  #仓库的名字  自定义
baseurl= file:///目录         #目录就是软件包所在的位置,最后一个/是根目录,例如配置信息存放在/mnt下,就是file:///mnt   
#baseurl 指明服务端的位置
#http://+网页路径
#ftp://+本地文件路径
gpgcheck=0                  #关闭完整性 安全性校验    
#gpgcheck=1 就是进行安全效验

2.常用的yum命令及作用

命令 不加关键字 加入关键词、软件包、软件包组
yum list 显示所有可用包 单个的可安装包
yum info 显示所有可用包的信息 单个具体的信息
yum search \ 模糊查找所有的相关信息
yum provides \ 精确查找
yum grouplist 显示所有可用包组 显示具体的包组
yum groupinfo 显示所有的包组具体信息 显示具体的包组的具体信息
yum install \ 安装具体软件包
yum groupinstall \ 安装具体软件包组
yum update 所有软件升级 具体软件升级
yum group update 所有包组升级 具体包组升级
yum remove \ 卸载具体软件
yum groupremove \ 卸载具体包组软件
yum history 查看当前yum操作历史 \
yum history undo 加入序号卸载序号里安装的软件 \
yum history redo 加入序号重新执行序号里的操作 \

3.本地yum库安装

光驱方式:

4.3.源代码编译安装

编译安装的优缺点及其应用场景:

优点:

  • 获得最新的软件版本,及时修复bug
  • 根据用户需要,自由选择模块安装,灵活定制软件功能
  • 可以将文件放在同一目录下,便于管理

缺点:

  • 编译麻烦
  • 缺乏依赖包关系,软件升级必须自己操作

应用场景:

  • 安装较新版本的应用程序时
  • 当前安装的程序无法满足需要时
  • 需要为应用程序添加新的功能时

PS:源代码编译,简单说就是复制二进制文件到系统,配置应用环境测试及应用、维护软件

4.3 源代码编译安装的步骤(过程)

  1. 下载源代码安装包文件,使用tar解包(解压并释放源代码包到指定的目录)

  2. .../configure配置 (设置安装目录,安装模块等选项)

    自动的对当前系统进行-系列的评估,如源文件、软件依赖库、编译器、汇编器、连接器检查等等,如果有需要,还可以使用-prefix(格式:./configure -prefix=指定目录)参数来指定程序的安装路径,而当脚本检查系统环境符合要求后,则会在当前目录下生成一个Makefile文件。

  3. make编译 (生成可执行的二进制文件)

    如果在configure脚本阶段中没有使用-prefix参数,那么程序一般会被默认的安装路径是/usr/local。具体地说,可执行文件通常会被安装到/usr/local/bin目录,库文件会被安装到/usr/local/lib目录,而配置文件则会被安装到/usr/local/etc目录中,其它的资源文件放在/usr/local/share,比较凌乱,是建议使用-prefix参数的。

  4. make install(安装,即复制二进制文件到系统)

实际操作:

1、下载源代码安装包文件,使用tar解包

2、./configure配置 (设置安装目录,安装模块等选项)

3.make(生成可执行的二进制文件)

4.make install(安装,即复制二进制文件到系统)

5.测试编译安装是否成功

去浏览器输入主机地址测试

主机地址:

浏览器测试,能够访问,安装成功

5.总结

软件安装共3种安装方式

  1. 通过rpm包安装
  2. 通过yum仓库库安装。
  3. 编译安装(二进制安装)

RPM和YUM的安装对象是RPM包 ,只有源码编译安装的对象是源码包,还有一种绿色免安装的软件包在压缩包内提供已编译好的执行程序文件,解开压缩包后的文件即可直接使用(即二进制包),其实就是编译安装中make那一步生成的二进制包。

相关推荐
网安老伯1 小时前
【2024版】最新kali linux入门及常用简单工具介绍(非常详细)零基础入门到精通,收藏这一篇就够了_kalilinux
linux·运维·服务器·开发语言·web安全·网络安全·xss
wdxylb2 小时前
在远程非桌面版Ubuntu中使用Qt5构建Hello World项目
linux·ubuntu
小羊在奋斗2 小时前
【Linux】包管理器、vim详解及简单配置
linux·运维·vim
CS_素锦少年2 小时前
Linux_kernel字符设备驱动12
linux·运维·服务器
NineOne_豆浆狂魔2 小时前
Linux 缓冲区
linux·服务器·c
陈序缘3 小时前
Go语言实现长连接并发框架 - 消息
linux·服务器·开发语言·后端·golang
mysql学习中3 小时前
Linux的环境变量
linux·运维·服务器·tcp/ip·centos
it00zyq3 小时前
Linux网络编程
linux·网络
诡异森林。4 小时前
Linux--IO模型与高级IO重要概念
linux·运维·php
7yewh4 小时前
C语言刷题 LeetCode 30天挑战 (八)快慢指针法
linux·c语言·开发语言·数据结构·算法·leetcode·链表