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指定,基本上都符合以下规则
3. yum
以上可以看出,rpm主要还是用于本地安装。需要提前在本地准备好rpm文件。
当然人家也是可以远程安装的。
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum 是一个基于rpm的包管理器,用于从远程仓库去自动下载rpm包并且安装,而且可以自动处理依赖关系,一次性安装所有依赖的软件包
yum安装底层还是调用PRM进行包安装!
优点:
- 自动下载软件包,更新方便
- 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 try
、The 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
- 用新的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】
- 展示所有源仓库
[root@localhost yum.repos.d]# yum repolist all
- 展示启用的源仓库
yum repolist enabled
- 搜索**yum源(也就是镜像中)**中是否有该软件
yum search java|grep jdk
选中自己想要的版本下载
- 安装
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