软件安装方式总结

安装软件方式有如下几种:

方式1:编译安装

将源码程序按照需求进行先编译,后安装

缺点:装过程复杂,而且很慢

优点:安装过程可控,真正的按需求进行安装(安装位置、安装的模块都可以选择)

方式2:rpm安装(用rpm来安装rpm后缀的安装包)

优点:安装和卸载过程非常方便

缺点:安装过程不可控(安装位置,安装那些功能模块),rpm包的依赖关系非常复杂

方式3:yum安装

yum安装,其实就是自动分析rpm包的依赖关系,然后按照需要的顺序依次安装

方式4:绿色安装

rpm

作用:rpm是一个数据库管理工具,可以通过读取数据库,判断软件是否已经安装,如果已经安装可以读取出来所有文件的所在位置等,并可以实现删除这些文件。

rpm可以完成安装软件、卸载软件、查询软件信息、升级、降级、检验、打包程序的操作。

rpm仅仅能管理符合rpm格式的程序包,不能管理源码格式的程序。

程序的格式

源码格式的程序:都是以压缩方式呈现的(后缀都是.tar.gz|bz2)

rpm格式的程序:这都是编译以后的程序 (后缀都是.rpm)

安装rpm包

语法:rpm -ivh 软件包名

option:

-i:安装软件

-v:显示安装过程

-h:用#表示安装进度(# 2%)

-vv:显示更详细的安装过程信息

-vvv:显示更更详细的安装过程信息

卸载rpm包

语法:rpm -e 软件名

option:

-e:卸载软件

查询已经安装的rpm包(常用)

语法:rpm -q 软件名

option:

-q:查看一个已经安装的软件

-f: --file

-a:查看所有已经安装的软件all (-qa)

-l:显示软件安装完成以后生成文件列表(所有文件)list (-ql)

-i:查看软件包的相关信息 info

-d:显示该软件所生成的说明性质的文档列表docfiles

-c:查看软件所生成的配置文件列表configfiles

--scripts:查看软件相关的脚本

rpm -V 用来检查已安装rpm包的完整性。所谓“完整性”,这里就是指安装rpm包产生的所有文件和原始rpm包中的信息是否一致。

补充:

preinstall scriptlet (using /bin/sh)::安装前执行脚本

postinstall scriptlet (using /bin/sh)::安装后执行脚本

preuninstall scriptlet (using /bin/sh)::卸载前执行脚本

postuninstall scriptlet (using /bin/sh)::卸载后执行脚本

如果安装过程中,不想执行其中一个脚本,可以指定:

--nopre:不执行安装前脚本

--nopost:不执行安装后脚本

--nopreun :不执行卸载前脚本

--nopostun:不执行卸载后脚本

查看文件是哪个软件生成的

rpm -qf /path/to/file

升级软件

option:

-U:升级或安装软件

-F:仅仅是升级操作

语法:

rpm -Fvh 软件包名

rpm -Uvh 软件包名


yum

作用:yum是一个rpm包的管理工具,可以实现自动解决rpm包的依赖关系(自动安装依赖顺序进行rpm包的安装)

为何rpm包会有依赖关系?

制作rpm的人,在制作rpm包的时候,就将这个rpm的所依赖的软件的信息保存在这个rpm包的内部

下载软件

yum install redis -y
yum localinstall -y gitlab-ce-8.9.5-ce.0.el7.x86_64.rpm #只下载不安装
yum install tree --downloadonly --downloaddir /root/ ##说明:如果该服务器已经安装了需要下载的软件包,那么使用 install下载就不行,可以使用reinstall下载

软件包组下载

yum grouplist    #查看软件包组
yum groupinstall "某个组" #下载软件包组

卸载软件

yum remove redis -y

查询

yum list     #查看rpm包
yum list all #查看所有rpm包
yum list installed #查看已安装的rpm包
yum list available #查看未安装的rpm包
yum search 命令 #查看该命令依赖哪个包

清空缓存

yum clean all

查看所有仓库源

yum repolist

yum的工作原理

①需要首先创建一个yum仓库(rpm包仓库、软件仓库)

仓库其实就是一个目录;

仓库中存放的是rpm包;

仓库中还保存了一个文件,文件中记录了该仓库中所有rpm包的元数据信息;

元数据信息包括:软件名、软件版本、软件是否已经安装、软件的依赖关系;

②用 yum 来从仓库中找软件进行安装的过程(比如要安装软件A,A依赖B 和C, B依赖C D)

yum首先会扫描保存元数据信息的文件,检查A是否已经安装,如果已经安装,那提示已经安装;

如果A尚未安装,那么扫描A的依赖关系信息,会发现A 依赖B 和C;

yum会再次扫描元数据文件,检测B C 是否安装,如果都已经安装,那么会开始开始安装A;

如果B C尚未安装,那么会检测 B C的依赖关系,会发现B依赖C D;

yum会再次扫描元数据文件,检测C D是否安装,如果都已经安装,那么会开始开始安装B,然后安装C,,然后安装A;

yum仓库

本地:将本地的一个目录做成yum仓库,只有当前系统可以使用

网络:通过网络将服务器上的一个目录作为yum仓库,网络中的全部主机都可以使用

使用yum仓库的方式,就是修改yum的配置文件

  • yum的配置文件

    主:/etc/yum.conf

    子:/etc/yum.repos.d/*.repo
╭─root@localhost.localdomain ~
╰─➤ cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever //指定缓存文件的保存位置,默认:/var/cache/yum/x86_64/7/
keepcache=0 //指定是否保留缓存文件
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release # This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
# It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m # PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

用yum安装软件过程中会从yum仓库下载并缓存多个资源

1)会将yum仓库的元数据文件缓存到配置文件所指定的路径中

2)会将要安装的软件及其依赖的软件一并缓存到配置文件指定的目录中

yum仓库制作

yum配置文件的编写

[localRpm] <<< 指定yum仓库的id,可以随便写,但是中间不能有空格

name=xxx <<< 指定yum仓库的名称,可以随便写

enabled=0|1 <<< 指定是否使用该yum仓库,0表示不使用;1表示使用

gpgcheck=0|1 <<< 指定是否对rpm包做完整性和来源合法性验证,0表示不做验证;1表示必须做验证

gpgkey= <<< 指定公钥文件(如果gpgcheck=1,那么该项不能省略)

baseurl= <<< 指定yum仓库的url

cost=1 <<< 优先级等于1

  • 注意:在指定yum仓库的时候,其实不是指向rpm包的目录,而是执行repodata所在目录

yum仓库制作演示:

#第一步:编辑yum仓库子文件

╭─root@localhost.localdomain ~
╰─➤ cd /etc/yum.repos.d #进入到子配置文件夹
╭─root@localhost.localdomain /etc/yum.repos.d
╰─➤ vim mnt.repo #创建并编辑配置文件 (文件名要求:*.repo) #yum文件编辑内容:
...
[local]
name=local1
enabled=1
gpgcheck=0
baseurl=file:///mnt #本地yum仓库文件内容
[aliyun]
name=aliyun1
enabled=1
gpgcheck=0
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/ #网络源yum仓库文件内容
... #第二步:挂在光盘 ╭─root@localhost.localdomain ~
╰─➤ mkdir /mnt
╭─root@localhost.localdomain /etc/yum.repos.d
╰─➤ mount /dev/cdrom /mnt #挂载光盘
mount: /dev/sr0 is write-protected, mounting read-only
mount: /dev/sr0 is already mounted or /mnt busy
/dev/sr0 is already mounted on /yummnt
/dev/sr0 is already mounted on /mnt #第三步:查看yum仓库 ╭─root@localhost.localdomain /etc/yum.repos.d
╰─➤ yum clean all #清空yum缓存的全部数据
Loaded plugins: fastestmirror
Repository 'local': Error parsing config: Error parsing "baseurl = 'file///mnt'": URL must be http, ftp, file or https not ""
Cleaning repos: local aliyun
Cleaning up everything
Cleaning up list of fastest mirrors
╭─root@localhost.localdomain /etc/yum.repos.d
╰─➤ yum repolist # 检查yum仓库中有多少个可用的rpm包
Loaded plugins: fastestmirror
Repository 'local': Error parsing config: Error parsing "baseurl = 'file///mnt'": URL must be http, ftp, file or https not ""
local | 3.6 kB 00:00:00
aliyun | 4.7 kB 00:00:00
(1/5): local/group_gz | 155 kB 00:00:00
(2/5): local/primary_db | 3.0 MB 00:00:00
(3/5): aliyun/group_gz | 88 kB 00:00:06
(4/5): aliyun/updateinfo | 998 kB 00:00:11
(5/5): aliyun/primary_db | 6.7 MB 00:00:58
Determining fastest mirrors
repo id repo name status
local local1 3,831
aliyun aliyun1 13,190
repolist: 17,021

linux系统rpm和yum软件包管理的更多相关文章

  1. 5.Linux系统的vim与软件包管理

    5.1 Linux系统的vim编辑器 5.1.1 vim编辑器的概述 vim编辑器的简介 1.vim是什么? vim是一个类似vi的文本编辑器,它在vi的基础上增加了很多新特性 vim是vi发展出来的 ...

  2. Linux命令(六)——软件包管理(安装应用程序)

    与windows安装各种应用程序相似,在linux下也可以安装各种需要的应用程序,通常称为软件包.目前,在linux系统下常见的软件包格式主要有:RPM包.TAR包.bz2包.gz包.deb包.sh结 ...

  3. Linux系统的用户和用户组管理

    一.用户账户管理 Linux/Unix是一个用户.多任务的操作系统:在讲Linux账号及账户组管理之前,先简单了解一下多用户.多任务操作系统的基本概念. Linux的单用户多任务 在Linux下,当你 ...

  4. 末学者笔记--rpm和yum软件管理(Linux)

    一.rpm简介 这是一个数据库管理工具,可以通过读取数据库,判断软件是否已经安装,如果已经安装可以读取出来所有文件的所在位置等,并可以实现删除这些文件. rpm:RPM is Redhat Packa ...

  5. linux的Yum软件包管理工具

    Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定的服务器自动下载 ...

  6. Linux rpm和yum软件管理

    rpm是管理程序的一个小工具,rpm常来用作查询 什么源码包:大多数都是tar.gz,bz.bz2结尾的包 zip结尾的包 压缩格式为 zip –r 命名.zip ./* 解压格式为 unzip 命名 ...

  7. rpm和yum软件管理

    rpm简介 数据库管理工具,通过读取数据库,判断软件是否安装,如已安装可读取出来所有文件的所在位置等,并可以实现删除这些文件. rpm:RPM is Redhat Package Manager(递归 ...

  8. Yum软件包管理详解

    目录 1. Yum 1.1 检查和更新包 1.1.1 查询更新 1.1.2 更新包 1.1.3 使用 ISO 和 Yum 离线升级系统 1.2 使用包 1.2.1 搜索包 1.2.2 列出包 1.2. ...

  9. Linux各发行版本及其软件包管理方法

    Linux发行版本有很多,按照使用领域分为桌面系统领域和服务器领域.下面简要介绍如下: 1.Red Hat和Fedora:redhat最早发行的个人版本的Linux,自从Red Hat 9.0版本发布 ...

随机推荐

  1. linux awk基本语法命令总结

    一.基本用法 文本内容准备 2 this is a test 3 Are you like awk This's a test 10 There are orange,apple,mongo 用法一: ...

  2. 如何在Linux(CentOS7)环境搭建 Jenkins 服务器环境

    最近,我自己要亲手搭建一套完整的企业级 CI/CD 环境,这个环节里面涉及了很多内容,没有办法把这么多的内容都放在一篇文章里,所以 Jenkins 的安装和Java 的 JDK 安装我就是分了两篇文章 ...

  3. PyCharm 2019、2020、2021专业版激活

    PyCharm下载地址:https://www.jetbrains.com/pycharm/download/ PyCharm社区版功能基本够用,但是作为傲娇的程序员,咱都是上来就专业版,然后各种破解 ...

  4. Python在项目外更改项目内引用

    前言 目前有一个奇葩的需求, 将某个开源项目整合进自己的项目里去调度, 还需要在每次启动这个开源项目时, 加载不同的配置文件进去, 问题是配置文件并不是一个 conf 或者是其他的什么, 而是以 .p ...

  5. MySQL的索引优化分析(二)

    一.索引优化 1,单表索引优化 建表 CREATE TABLE IF NOT EXISTS article( id INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO ...

  6. Java 安全之Weblogic 2018-2628&2018-2893分析

    Java 安全之Weblogic 2018-2628&2018-2893分析 0x00 前言 续上一个weblogic T3协议的反序列化漏洞接着分析该补丁的绕过方式,根据weblogic的补 ...

  7. 【Linux】关于CentOS系统中,文件权限第11位上是一个点的解读

    ------------------------------------------------------------------------------------------------- | ...

  8. 【Docker】CentOS7 上无网络情况下安装

    自建虚拟机,但是连接不上网络,只能通过下载rpm包进行安装docker 环境:CentOS 7.3.1611 x64 rpm镜像下载地址用的阿里的https://mirrors.aliyun.com/ ...

  9. Empire

    Empire 内网渗透神器 一 基本渗透 安装 git clone https://github.com/BC-SECURITY/Empire/ ./setup/install.sh 启动 ./emp ...

  10. Mybatis执行流程学习之手写mybatis雏形

    Mybatis是目前开发中最常用的一款基于ORM思想的半自动持久层框架,平时我们都仅仅停留在使用阶段,对mybatis是怎样运行的并不清楚,今天抽空找到一些资料自学了一波,自己写了一个mybatis的 ...