Linux -软件包管理 yum wget rpm

1. RPM

rpm 是 Red Hat Package Manager 的缩写,它是一个基础的包管理工具,主要用于 Red Hat Linux 及其衍生系统如 CentOS 和 Fedora。rpm 命令可以用来安装、卸载、验证、查询和升级软件包。以下是 rpm 的一些基本功能:

  • 安装软件包:使用 rpm -i package.rpm 命令来安装一个新的软件包。

rpm 命令安装软件是通过这个软件的rpm文件。软件的安装位置由 .rpm 文件内部定义的路径决定

  • 卸载软件包:通过 rpm -e package_name 来卸载已安装的软件包。

rpm -e --nodeps package_name // 不检查依赖卸载,可能会导致其他依赖该软件包的软件将无法执行

  • 查询软件包信息:使用 rpm -q package_name 查看是否安装了某个软件包或显示其详细信息。
  • 验证软件包:rpm -V package_name 用于检查已安装的软件包是否有被修改的地方。
  • 升级软件包:可以通过 rpm -U package.rpm 或 rpm --upgrade package.rpm 来更新现有的软件包。
    rpm 包含了软件包的所有信息,包括依赖关系、版本号等,使得用户能够方便地管理系统的软件环境。不过,在处理复杂的依赖关系时,使用 yum 或 dnf 这样的包管理器会更加方便,因为它们能自动解决依赖问题。这些工具实际上是在 rpm 的基础上增加了仓库管理和依赖解析的功能。

rpm对已安装软件的管理

元数据存储:
每个安装的软件包都会在 /var/lib/rpm 目录下存储元数据。这些元数据包括软件包的名称、版本、发布信息、依赖关系等。
例如,/var/lib/rpm/Packages 文件包含了所有安装的软件包的信息。

文件跟踪:
rpm 会记录每个安装的文件及其路径。这使得 rpm 能够知道哪些文件属于哪个软件包。
你可以使用 rpm -ql package_name 命令来查看某个软件包包含的所有文件。

依赖关系管理:
rpm 会检查软件包之间的依赖关系。在安装时,它会验证所需的依赖项是否已经满足。
如果依赖项缺失,rpm 会提示错误并阻止安装。

2. 本地安装

wget 远程获取

先下载再安装

wget命令是Linux系统用于从Web下载文件的命令行工具,支持 HTTP、HTTPS及FTP协议下载文件

当然现在更多支持用yum工具的,不过有的时候一些镜像站点不再维护一些旧版本的软件时,这时候就可以用wget可以先获取,再安装

语法:wget [options] [url]

例:

// 下载到当前目录
wget http://xx/AA-6.0.8.tar.gz

// 自定义下载文件的名称
wget -O AA.tar.gz  http://xx/AA-6.0.8.tar.gz

// 指定下载目录
wget -P /usr/software  http://xx/AA-6.0.8.tar.gz

//下载一个大文件时,如果中途网络断开导致没有下载完成,我们就可以使用命令的-c选项恢复下载,让下载从断点续传,无需从头下载。
wget -c  http://xx/AA-6.0.8.tar.gz

// 后台下载
wget -b  http://xx/AA-6.0.8.tar.gz


// 批量下载;download_list中存放所有软件的url
wget -i download_list.txt

安装方式1: 解压

  • 不需要执行安装命令的,解压就能用的

以java为例:

# 下载压缩包
[root@ecs-13e9-1011083 srv]# wget https://download.java.net/openjdk/jdk11/ri/openjdk-11+28_linux-x64_bin.tar.gz
[root@ecs-13e9-1011083 srv]# ls
java  openjdk-11+28_linux-x64_bin.tar.gz
[root@ecs-13e9-1011083 srv]# cd java
# 解压
[root@ecs-13e9-1011083 java]# tar -xzvf /srv/openjdk-11+28_linux-x64_bin.tar.gz
# 配置环境变量
[root@ecs-13e9-1011083 jdk-11]# vim /etc/profile
	###
	export JAVA_HOME = /srv/java/jdk-11
	export CLASSPATH = $JAVA_HOME/lib
	export PATH = $PATH:$JAVA_HOME/bin
	###
[root@ecs-13e9-1011083 jdk-11]# source /etc/profile


# 到这就已经安装好了
[root@ecs-13e9-1011083 jdk-11]# java -version
openjdk version "11" 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)

安装方式2: 源码编译后安装

# 配置安装目录,默认就安装在/usr/local下
./configure  
# 等价于   ./configure  --prefix=/usr/local

# 编译并安装
make && make install    

代价就是,你得先确保,已经装了编译器

安装方式3: rpm文件安装

  • 安装
rpm -ivh firefox-45.0.1-1.el6.centos.x86_64.rpm          // 检查依赖
rpm -ivh --nodeps firefox-45.0.1-1.el6.centos.x86_64.rpm // 不检查依赖

rpm -ivh
-i: install 安装软件包
-v: verbose 详细模式,输出更多信息
-h: hash 表示在安装过程中显示进度条

rpm -Uvh
-U (upgrade):升级软件包。如果软件包已安装,则会升级到新版本;如果未安装,则会安装新版本。
-v: verbose 详细模式,输出更多信息
-h: hash 表示在安装过程中显示进度条

  • 查看软件
    rpm -q[选项] [包名]
-q (query):查询软件包信息。

# all 查询所有的已安装的软件包
rpm -qa   
# 查询firefox软件是否被安装
rpm -qa|grep firefox 

# info 显示软件包的详细信息。
rpm -qi firefox

# list 列出软件包包含的所有文件  
rpm -ql firefox  
  • 卸载软件
rpm -e firefox
rpm -e --nodeps firefox  // 不检查依赖,可能会导致其他依赖该软件包的软件将无法执行

rpm软件默认安装路径: 由软件的.rpm指定,基本上都符合以下规则

image-20230223160058558

3. yum

以上可以看出,rpm主要还是用于本地安装。需要提前在本地准备好rpm文件。

当然人家也是可以远程安装的。
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

yum 是一个基于rpm的包管理器,用于从远程仓库去自动下载rpm包并且安装而且可以自动处理依赖关系,一次性安装所有依赖的软件包

image-20221115130438153

yum安装底层还是调用PRM进行包安装!
优点:

  1. 自动下载软件包,更新方便
  2. RPM只能安装指定的软件包,如果软件包依赖其他软件包,需要手动下载并安装所有依赖的软件包,yum自动解决软件包依赖关系,自动下载并安装所有依赖的软件包。

配置

全局配置

/etc/yum.conf

[main]
cachedir=/var/cache/yum/$basearch/$releasever   # yum缓存的目录,yum在此存储下载的rpm包和数据库,一般是/var/cache/yum
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

[main]:定义了全局配置选项,整个yum 配置文件应该只有一个main

源/仓库配置

/etc/yum.repos.d/xx.repo : 通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包

大概格式就是:

[serverid]  # 软件源/仓库名,必须有一个独一无二的名称
name=  # 对仓库的描述
baseurl= # 服务器设置中最重要的部分,只有设置正确,才能从上面获取软件,一个baseurl可以设置多个url
failovermethod= # failovermethode 有两个选项roundrobin和priority,意思分别是有多个url可供选择时,yum选择的次序,roundrobin是随机选择,如果连接失 败则使用下一个,依次循环,priority则根据url的次序从第一个开始。如果不指明,默认是roundrobin。
enabled=1 # 禁用或启用这个仓库
gpgcheck=1  # 是否进行gpg校验
gpgkey=http://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-7
  • 查看已启用的源仓库配置:
yum repolist enabled
  • 禁用异常的源仓库,就是配置上面的enable=0
 yum-config-manager --disable epel
替换 国内镜像源
1. 备份
2. 下载替换
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

相关链接可以起aliyun官网查看:https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11seJ2Rj

本地镜像源配置

其实就是baseurl 是本地源。

增加新源EPEL

EPEL(Extra Packages for Enterprise Linux)是一个免费的、社区驱动的项目, 为 RHEL 和其衍生系统提供了大量的额外软件包,这些软件包可能不在官方仓库中。

所以,一般yum都会配置epel仓库。

如何安装epel仓库?

(1)yum 安装

知道远程的repo文件地址

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

(2)yum 安装软件源

sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

下载安装了一个 RPM 包,该 RPM 包包含了 PostgreSQL 的 Repository 配置文件。当你运行这条命令时,它会下载并安装一个名为 pgdg-redhat-repo-latest.noarch.rpm 的 RPM 包,这个包中包含了 .repo 文件,这些文件会被安装到 /etc/yum.repos.d/ 目录下

再比如:CentOS 用户可以直接通过 yum install epel-release 安装并启用 EPEL 源。

不过,这样安装的epel ,默认的是国外的服务器,很大可能会404或访问不到,此时可以替换成国内的epel源。

(3)直接手写一个有效的repo文件,保存在/etc/yum.repos.d/ 中,就行了

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch  
baseurl=http://mirrors.aliyun.com/epel/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-7

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
baseurl=http://mirrors.aliyun.com/epel/7/$basearch/debug
failovermethod=priority
enabled=0
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-7

[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
baseurl=http://mirrors.aliyun.com/epel/7/SRPMS
failovermethod=priority
enabled=0
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-7iPATH=$PATH:${JAVA_HOME}/bin
~   

这个用的是国内的epel镜像源,有效

更换BASE源

yum 的 base 源是指系统默认的官方仓库,通常包含了操作系统的基础软件包。这些软件包是由操作系统发行版提供的,确保了稳定性和兼容性。

centos中base源一般是/etc/yum.repos.d/CentOS-Base.repo

国内centos7的镜像源内容:

# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
#
 
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#released updates 
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
centos6 base 源 过期

使用yum下载依赖时出现:

Trying other mirror[Errno 256] No more mirrors to tryThe requested URL returned error: 404 Not Found 都是源错导致的

当前centOs6.8的几个常用镜像源中已经没有文件了,或者就是源错误

2020年12月2日起,centos官方停止了对centos6的所有更新并且下架了包括官方所有的centos6源,目前阿里、163、清华等centos6源已无法使用。

如果非要用centos6.x的话就只能使用vault源,国内的vault源的话:

http://mirrors.aliyun.com/centos-vault/

注意,确保新源还在维护

  • 备份 /etc/yum.repos.d/下的CentOS-Base.repo
cp CentOS-Base.repo   CentOS-Base.repo.back
  • 下载wget

wget是专门用来从指定的URL上下载文件的

yum -y install wget
  • 用wget去下载国内镜像网站的配置文件
wget http://mirrors.aliyun.com/repo/Centos-7.repo

image-20221115131725465

  • 用新的centOs-7文件代替原有的CentOs-Base.repo文件
mv Centos-7.repo CentOS-Base.repo
  • 清理缓存数据
[root@localhost yum.repos.d]# yum clean all
已加载插件:fastestmirror
正在清理软件源: base extras updates
Cleaning up list of fastest mirrors

# makecache指的是把服务器的包信息下载到本地电脑缓存起来
[root@localhost yum.repos.d]# yum makecache

清理缓存并生成缓存

sudo yum clean all
sudo yum makecache

在更新源或者增加新源的时候经常会看见这两个命令。

sudo yum clean all 用于清理 yum 的缓存。这包括删除所有已下载的元数据和软件包文件。这个命令通常在以下情况下使用:
更新仓库:当你添加或修改了一个仓库后,需要清理旧的缓存以确保 yum 使用最新的元数据。
解决依赖问题:当遇到依赖问题或仓库错误时,清理缓存有助于重新生成正确的依赖关系。
节省磁盘空间:长期使用 yum 会积累大量的缓存文件,清理缓存可以释放磁盘空间。

sudo yum makecache 用于重新生成 yum 的缓存。这个命令会从各个仓库下载最新的元数据,并将其存储在本地缓存中。这个命令通常在以下情况下使用:
更新元数据:当你需要确保 yum 使用最新的仓库元数据时,使用此命令可以确保获取最新的软件包列表和版本信息。
解决缓存问题:当遇到缓存过期或损坏时,重新生成缓存可以解决问题。
初始化新系统:在新系统上首次使用 yum 时,通常需要先生成缓存。

元数据:
在 yum 中,元数据主要包括以下几部分:
软件包列表:每个仓库中包含的所有软件包的列表。
软件包信息:每个软件包的详细信息。
仓库信息:每个仓库的基本信息。

在 yum 中,元数据通常存储在以下目录中:
主目录:/var/cache/yum
每个仓库的子目录:/var/cache/yum///

元数据在 yum 中具有以下几个重要作用:
软件包查找:yum 可以快速查找某个特定软件包是否存在及其版本信息。
依赖关系解决:yum 可以根据元数据中的依赖关系来解决软件包之间的依赖问题。
软件包更新:yum 可以根据元数据来判断哪些软件包需要更新。
仓库管理:yum 可以根据元数据来管理各个仓库的状态和配置。

所以,很重要!

3. 常用命令

yum 【option】【command】【softName】

image-20221115130722067

  • 展示所有源仓库

[root@localhost yum.repos.d]# yum repolist all

  • 展示启用的源仓库
yum repolist enabled
  • 搜索**yum源(也就是镜像中)**中是否有该软件
yum search java|grep jdk

选中自己想要的版本下载

image-20230223153850293

  • 安装
 yum -y install java-11-openjdk.x86_64
 yum -y install mysql-community-server --nogpgcheck

--nogpgcheck  表示禁止检查gpg签名
yum localinstall -y mysql57-community-release-el7-7.noarch.rpm

 yum install是联网从镜像安装,必须要有网络,有下载和安装两个步骤
 yum localinstall 用于没网时候的本地安装,这时候rpm是已经存在的,这一步就纯安装
  • 查看信息
 yum list|grep mysql   
 yum info mosquitto
  • 查看本地已安装的软件
yum list installed | grep influx

  • 删除
yum remove xxxx

export JAVA_HOME

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值