Linux安装及管理程序 RPM、YUM、源码编译安装

如何在Linux中安装程序

在Linux中安装程序的三种方式

  • rpm(软件安装包,但是一般只用来查)
  • yum()
  • 编译(将人类使用的高级语言翻译成二进制)

常见的软件包封装类型

文件类型 保存目录
RPM软件包 扩展名为".rpm" 红帽包管理系统 (对应系统centos和Redhat )
DEB软件包 扩展名为".deb" (对应系统Ubuntu)
源代码软件包 一般为".tar.gz"、".tar.bz2"等格式的压缩包 包含程序的原始代码
绿色免安装的软件包 软件包的扩展名不一,以TarBall格式的居多 在压缩包内提供已编译好的执行程序文件 解开压缩包后的文件即可直接使用
  1. RPM包 : RPM Package Manager的缩写 是红帽公司自主研发的一款工具,实用性强。RPM包是预先在linux机器上编译好并打包好的文件,安装起来非常快捷。但是也有一些缺点,比如安装的环境必须与编译时的环境一致或者相当;包与包之间存在相互依赖的情况。

  2. DEB包:在Linux系统中类似于windows中的软件包(exe),几乎不需要什么复杂的编译即可通过鼠标点击安装使用。此外,deb广泛应用于越狱后iOS软件及MeeGo(含Maemo软件)中。Debian包是将包的文件信息以及包内容,经过gzip和tar打包而成。

  3. 源代码软件包 :是需要我们自己把源代码编译成二进制的可执行文件。如果你读得懂这些源代码,那么你就可以去修改这些源代码自定义功能,然后再去编译成你想要的。使用源码包的好处除了可以自定义修改源代码外还可以定制相关的功能,因为源码包在编译的时候是可以附加额外的选项的。

  4. 绿色免安装的软件包 :顾名思义自行理解比如Windows的截图软件

RPM

RPM包管理系统 Red-Hat package Manager

rpm是一个安装软件(类似于windows的360软件管家,但是比其弱安装包得自己找)

  • 由Red Hat公司提出,被众多Linux发行版所采用

  • 建立统一的数据库文件(一张对应表将安装软件信息写入)

  • 详细记录软件包安装、卸载等变化信息

  • 自动分析软件包依赖关系(就是因为这个缺陷,在一般情况下只用来查看是否安装或配置信息)

RPM软件包一般命名格式:bash-4.1.2.-28.el6.x86_64.rpm

一定要在官方网站获取软件包:

RPM软件包素材地址------www.rpm.org

nginx.org 软件包官网

RPM命令

rpm命令功能:

  • 查询、验证RPM软件包的相关信息
  • 安装、升级、卸载RPM软件包
  • 维护重建RPM数据库信息等综合管理操作

查询

  • 命令rpm-q[子选项][软件名]
  • 查询软件是否已安装]
选项 功能效果
rpm -qa 显示当前系统以rpm方式安装的所有软件
rpm -q 软件名 查询某个指定软件有没有安装
rpm -qc 软件名 查询某个软件的配置文件
rpm -ql 软件名 某个软件的所有文件列表
rpm -qi 软件名 软件的基本信息

演示:

1.查看当前系统有多少安装的软件

js 复制代码
[root@localhost /]# rpm -qa          //查看当前安装的所有软件
[root@localhost /]# rpm -qa | wc -l  //统计有多少
1372

2.查看sysstat软件是否安装

js 复制代码
[root@localhost /]# rpm -q  sysstat   //查看是否安装sysstat软件
sysstat-10.1.5-12.el7.x86_64

3.查看sysstat软件的配置文件

js 复制代码
[root@localhost /]# rpm -qc  sysstat  //查看该文件的配置文件
/etc/cron.d/sysstat
/etc/sysconfig/sysstat
/etc/sysconfig/sysstat.ioconf

4.查看sysstat软件的详细信息

js 复制代码
[root@localhost /]# rpm -qi sysstat  //查看详细信息
Name        : sysstat
Version     : 10.1.5
Release     : 12.el7
Architecture: x86_64
Install Date: 2024年02月29日 星期四 00时52分43秒
Group       : Applications/System
Size        : 1158910
License     : GPLv2+
Signature   : RSA/SHA256, 2017年08月11日 星期五 04时00分09秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : sysstat-10.1.5-12.el7.src.rpm
Build Date  : 2017年08月03日 星期四 17时31分00秒
Build Host  : c1bm.rdu2.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://sebastien.godard.pagesperso-orange.fr/
Summary     : Collection of performance monitoring tools for Linux

安装

  • 命令rpm -ivh [RPM文件包]

要先去官网下载安装包或者镜像里自带的安装包。

选项 功能说明
i install安装
v 显示过程
h 代表了######进度条

演示:

1.由于RPM来安装软件包无法自动解决依赖关系,所以会遇到错误,需要人为解决。

js 复制代码
[root@localhost ~]# cd /
[root@localhost /]# mount /dev/sr0  /mnt                 //把光驱中的类容挂载到mnt挂载点
mount: /dev/sr0 写保护,将以只读方式挂载
   
[root@localhost /]# cd /mnt/Packages/                   //转移工作目录到mnt下的软件包库
[root@localhost Packages]# ls | grep httpd              //筛选出httpd软件包

httpd-2.4.6-67.el7.centos.x86_64.rpm       
httpd-devel-2.4.6-67.el7.centos.x86_64.rpm
httpd-manual-2.4.6-67.el7.centos.noarch.rpm
httpd-tools-2.4.6-67.el7.centos.x86_64.rpm
libmicrohttpd-0.9.33-2.el7.x86_64.rpm
[root@localhost Packages]# rpm -ivh httpd             //必须输入完整软件包名否则就会失败
错误:打开 httpd 失败: 没有那个文件或目录
[root@localhost Packages]# rpm -ivh httpd-2.4.6-67.el7.centos.x86_64.rpm      //安装该文件
警告:httpd-2.4.6-67.el7.centos.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
错误:依赖检测失败:                                                  //发现依赖关系
	/etc/mime.types 被 httpd-2.4.6-67.el7.centos.x86_64 需要
	httpd-tools = 2.4.6-67.el7.centos 被 httpd-2.4.6-67.el7.centos.x86_64 需要
[root@localhost Packages]# yum install mailcap               //尝试安mailcap`/etc/mime.types` 文件通常属于 `mailcap` 软件包的一部分
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.ustc.edu.cn
 * extras: mirrors.ustc.edu.cn
 * updates: mirrors.ustc.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 mailcap.noarch.0.2.1.41-2.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

==========================================================================
 Package         架构           版本                   源            大小
==========================================================================
正在安装:
 mailcap         noarch         2.1.41-2.el7           base          31 k

事务概要
==========================================================================
安装  1 软件包

总下载量:31 k
安装大小:62 k
Is this ok [y/d/N]: y
Downloading packages:
警告:/var/cache/yum/x86_64/7/base/packages/mailcap-2.1.41-2.el7.noarch.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
mailcap-2.1.41-2.el7.noarch.rpm 的公钥尚未安装
mailcap-2.1.41-2.el7.noarch.rpm                      |  31 kB   00:00     
从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 检索密钥
导入 GPG key 0xF4A80EB5:
 用户ID     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 指纹       : 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 软件包     : centos-release-7-4.1708.el7.centos.x86_64 (@anaconda)
 来自       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
是否继续?[y/N]:y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : mailcap-2.1.41-2.el7.noarch                           1/1 
  验证中      : mailcap-2.1.41-2.el7.noarch                           1/1 

已安装:
  mailcap.noarch 0:2.1.41-2.el7                        //这样就解决完成依赖关系                   

完毕!

2.解决一个依赖关系后再来安装需要安装的软件,从而才能安装成功。

js 复制代码
[root@localhost Packages]# cd /mnt/Packages/    //折返回继续安装,此次还需要解决一个依赖关系
[root@localhost Packages]# ls | grep httpd
httpd-2.4.6-67.el7.centos.x86_64.rpm
httpd-devel-2.4.6-67.el7.centos.x86_64.rpm
httpd-manual-2.4.6-67.el7.centos.noarch.rpm
httpd-tools-2.4.6-67.el7.centos.x86_64.rpm
libmicrohttpd-0.9.33-2.el7.x86_64.rpm
[root@localhost Packages]# rpm -vih httpd-2.4.6-67.el7.centos.x86_64.rpm
错误:依赖检测失败:                                   //检测出另一处依赖关系对应对其解决
	httpd-tools = 2.4.6-67.el7.centos 被 httpd-2.4.6-67.el7.centos.x86_64 需要
[root@localhost Packages]# rpm -vih httpd-tools-2.4.6-67.el7.centos.x86_64.rpm     //安装好依赖关系
准备中...                          ################################# [100%]
正在升级/安装...
   1:httpd-tools-2.4.6-67.el7.centos  ################################# [100%]
[root@localhost Packages]# rpm -vih httpd-2.4.6-67.el7.centos.x86_64.rpm          //安装本体,安装成功
准备中...                          ################################# [100%]
正在升级/安装...
   1:httpd-2.4.6-67.el7.centos        ################################# [100%]

总结:

由于RPM无法对依赖关系进行处理解决,需要人为手动安装,所以在生产环境中,一般来说都是用yum安装或源代码编译安装。

辅助助选项:

选项 说明
-h 在安装或升级软件包的过程中,以"#"号显示安装进度。
-v 显示软件安装过程中的详细信息。
- -force 强制安装某个软件包,比如要安装版本更旧的软件包。
--nodeps 在安装或升级、卸载一个软件包时,不检查与其他软件包的依赖关系,强制安装

升级命令:

rpm -U或-F RPM包文件

  • -U:升级某个软件包,若未安装则进行安装
  • -F:升级某个软件包,若未安装则直接结束

卸载

卸载命令:

rpm -e 软件名

js 复制代码
[root@localhost Packages]# rpm -evh httpd-2.4.6-67.el7.centos.x86_64.rpm           //卸载  httpd

维护RPM数据库

当RPM 数据库发生损坏,可通过重建RPM数据库修复。操作步骤:

1.重建RPM数据库

css 复制代码
复制代码
rmp --rebuilddb 或 rmp --initdb

2.导入验证公钥

arduino 复制代码
复制代码
rpm --import  /mnt/RPM-GPG-KEY-CentOS-7

解决软件包依赖关系的方法

1.安装有依赖关系的多个软件时

  • 被依赖的软件包需要先安装
  • 可同时指定多个.rpm包文件进行安装

2.卸载有依赖关系的多个软件时

  • 依赖其他程序的软件包需要先卸载
  • 可同时指定多个软件名进行卸载

3.忽略依赖关系

  • 结合"- -nodeps"选项,但可能导致软件异常

YUM

一、YUM的简介

YUM是建立于RPM结构基础之上的一个机制,YUM的出现解决了RPM的缺点,自动解决了依赖包的关系问题,是RPM的升级版。Yum(全称为 Yellow dog Updater, Modified) 是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。

客户端配置:

  1. yum安装软件要先有软件包,而软件包不在本地,所以要先得网络是联通的,在网络上有台服务器来提供安装包资源。

  2. 那么问题就来了网上那么多服务器,客户端如何可以找到对应的服务器。这就得在客户端中设配置文件。

  3. 客户端配置文件两个要求 :

  • 必须在 /etc/yum.repos.d/ 这个目录下
  • 配置文件必须以 *.repo 结尾

演示: 配置文件

ini 复制代码
[zhu]                   //仓库描述(可随意写)
name=ali               //仓库名称(可自定义)
baseurl=http://       //指明服务器的位置,去服务器端下载软件包
gpgcheck=0            //是否开启验证,1代表开启如果是0代表关闭包的验证
enabled=1            //是否开启仓库,默认是开启的

服务端配置文件:

服务器要有:

1.安装包(最基础)

2.元信息(数据库) 安装包的位置和安装包的依赖关系。

YUM命令

命令格式:yum [option] [command] [package...]

命令 含义
yum list 软件名 显示所有可用包
yum info 软件名 显示所有可用包的信息
yum history 查看当前yum操作历史
yum provides 关键词 精确查找
yum install 软件名 安装软件包

搭建本地yum仓库

1、搭建元信息和安装包

1.挂载光驱文件

typescript 复制代码
[root@localhost ~]# mount /dev/sr0 /mnt          //将镜像光驱文件临时挂载到mnt文件夹下
mount: /dev/sr0 写保护,将以只读方式挂载

2.切换到指定目录,建立子文件夹,并移走网络源

[root@localhost 复制代码
[root@localhost yum.repos.d]# ls                        //查看一下文件夹内容
CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo
CentOS-CR.repo         CentOS-Media.repo
CentOS-Debuginfo.repo  CentOS-Sources.repo 
[root@localhost yum.repos.d]# mkdir zhu                 //创建一个子文件夹准备移走网络源
[root@localhost yum.repos.d]# mv ./*.repo zhu          //移走网络源
[root@localhost yum.repos.d]# vim zhu.repo             //创建本地配置文件
ini 复制代码
[zhu]                      //仓库描述
name=zhu                  //仓库名称
baseurl=file:///mnt       //仓库的具体地址 file本机 file://固定格式
gpgcheck=0               //不打开检验


:wq

3.清除缓存下载元信息

[root@localhost 复制代码
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo
CentOS-CR.repo         CentOS-Media.repo
CentOS-Debuginfo.repo  CentOS-Sources.repo
[root@localhost yum.repos.d]# mkdir zhu
[root@localhost yum.repos.d]# mv ./*.repo zhu
[root@localhost yum.repos.d]# vim zhu.repo
[root@localhost yum.repos.d]# yum clean all           //清除网络源缓存
已加载插件:fastestmirror, langpacks
正在清理软件源: zhu
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
[root@localhost yum.repos.d]# yum makecache           //下载元信息
已加载插件:fastestmirror, langpacks
zhu                                                | 3.6 kB     00:00     
(1/4): zhu/group_gz                                  | 156 kB   00:00     
(2/4): zhu/filelists_db                              | 3.1 MB   00:00     
(3/4): zhu/primary_db                                | 3.1 MB   00:00     
(4/4): zhu/other_db                                  | 1.2 MB   00:00     
Determining fastest mirrors
元数据缓存已建立
[root@localhost yum.repos.d]# 

4.下载一个软件作为验证,安装tree软件

[root@localhost 复制代码
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 tree.x86_64.0.1.6.0-10.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

==========================================================================
 Package       架构            版本                    源            大小
==========================================================================
正在安装:
 tree          x86_64          1.6.0-10.el7            zhu           46 k

事务概要
==========================================================================
安装  1 软件包

总下载量:46 k
安装大小:87 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : tree-1.6.0-10.el7.x86_64                              1/1 
  验证中      : tree-1.6.0-10.el7.x86_64                              1/1 

已安装:
  tree.x86_64 0:1.6.0-10.el7                                              

完毕!

**

源代码编译安装

1、 源代码编译安装软件的优点

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

2、编译安装过程

1. 建立新目录,切换到新目录,再tar解压包

用途

将下载的软件包解压并释放源代码包到指定的目录。

操作

  • 使用tar命令将软件包解压到指定目录,一般选择/usr/src/目录(也可自建目录)。
  • 解包后的源代码文件位置:/usr/src/软件名-版本号或自建目录。
相关推荐
二十雨辰2 小时前
[linux]docker基础
linux·运维·docker
饮浊酒2 小时前
Linux操作系统 ------(3.文本编译器Vim)
linux·vim
lihuhelihu3 小时前
第3章 CentOS系统管理
linux·运维·服务器·计算机网络·ubuntu·centos·云计算
矛取矛求3 小时前
Linux系统性能调优技巧
linux
One_Blanks3 小时前
渗透测试-Linux基础(1)
linux·运维·安全
Perishell3 小时前
无人机避障——大疆与Airsim中的角速度信息订阅获取
linux·动态规划·无人机
爱吃喵的鲤鱼3 小时前
linux进程的状态之环境变量
linux·运维·服务器·开发语言·c++
dessler3 小时前
Linux系统-ubuntu系统安装
linux·运维·云计算
荒Huang4 小时前
Linux挖矿病毒(kswapd0进程使cpu爆满)
linux·运维·服务器
hjjdebug6 小时前
linux 下 signal() 函数的用法,信号类型在哪里定义的?
linux·signal