由于对Yum不太了解,所以需要进行调查
昨天是关于@__tomotomon的Re:dash文章。
由于以前从未接触过Re:dash,所以这次对我来说是一次学习的机会。非常感谢您。
虽然我稍微有点晚,但在第七天时,我对我平常随手使用的 yum 进行了一番研究,并将结果写成了一篇文章。
整理术语
美味 (Yellowdog Updater Modified)
-
- RPM Package Manager のパッケージを管理するメタパッケージ管理システム
-
- yumは、内部でRPMを呼び出している
- パッケージの依存関係を自動解決
转速
-
- RPM Package Manager (前は Red Hat Package Manager) の略
rpm 形式パッケージを対象とした Red Hat Linux で開発されたツール
RedHat系OSが使うパッケージ管理システム
パッケージの依存関係の自動解決はやってくれない
包装
维基百科
当在操作系统中添加某些软件时,会使用包含与该软件相关的文件的“软件包”。软件包的格式有多种,但常常受到操作系统的限制。
■ 不是可执行形式的东西 (Bù shì kě de
只包含安装所需的数据和依赖关系,并且可以通过操作系统提供的软件包管理系统进行安装。
-
- RPM形式パッケージ
Red Hat Linux用に開発されたパッケージ形式
deb形式パッケージ
Debian用に開発されたパッケージ形式
还有很多其他形式的包装。
■ 執行格式
添加了在软件存档中进行安装处理的机制形式。在Mac OS和Windows上经常使用,并且在Linux发行版的软件中也偶尔使用。依赖关系的解决和安装是由软件包自行处理的。
这不是我们这次的主题,所以不需要深入调查。
包装管理系统的类型
-
- Debian系
dpkg
APT
Red Hat系
RPM
Yum
Mac
Homebrew
Windows
Windows Package Manager
还有其他各种选择。
仓库
-
- パッケージの提供元
-
- 世界中にあって、配布しているパッケージが違う
- 公式のものと非公式のものがある
关于yum存储库
有效的存储库清单。
# yum repolist
repo id repo name status
base/7/x86_64 CentOS-7 - Base 10072
extras/7/x86_64 CentOS-7 - Extras 515
updates/7/x86_64 CentOS-7 - Updates 4425
repolist: 15012
可能的解释是,这个列表可能包含yum install命令的相关存储库。
在/etc/yum.repos.d/目录下放置的文件用于管理仓库的信息。它还管理着所述仓库的启用和禁用状态。
# ls -l /etc/yum.repos.d/
total 28
-rw-r--r-- 1 root root 1664 Aug 30 2017 CentOS-Base.repo
-rw-r--r-- 1 root root 1309 Aug 30 2017 CentOS-CR.repo
-rw-r--r-- 1 root root 649 Aug 30 2017 CentOS-Debuginfo.repo
-rw-r--r-- 1 root root 630 Aug 30 2017 CentOS-Media.repo
-rw-r--r-- 1 root root 1331 Aug 30 2017 CentOS-Sources.repo
-rw-r--r-- 1 root root 3830 Aug 30 2017 CentOS-Vault.repo
-rw-r--r-- 1 root root 314 Aug 30 2017 CentOS-fasttrack.repo
我会检查里面的内容。
# cat /etc/yum.repos.d/CentOS-Base.repo
[base]
# リポジトリ名
name=CentOS-$releasever - Base
# ミラーサーバのリスト。近い場所からインストールしてくるらしい。
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
# GPG の検証を有効にする(ダウンロード先が正しい場所かの確認)
gpgcheck=1
# GPG のキー情報
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
虽然未明确写明”enabled=1″,但由于明确写明”enabled=0″,因此很可能默认值是”enabled=1″,可以推断出 CentOS-7 – Base、CentOS-7 – Updates 和 CentOS-7 – Extras 软件仓库已被启用。
看起来与之前用 yum repolist 命令确认的内容相符。
以下是关于BaseOS仓库等的说明。
可以从已启用的代码仓库中获取软件包。
添加存储库
yum install 和 yum localinstall 的区别是什么?
可以使用yum install或yum localinstall命令来添加存储库。
两者的不同之处如下
据称,在RHEL 5以前的版本中,无法通过yum install添加存储库,但在RHEL 6及以后的版本中似乎已经变得可行。
尝试添加存储库
尝试添加MySQL存储库。
这里是要追加的存储库。
由于这次是 CentOS 7 系统,所以选择 Red Hat Enterprise Linux 7 / Oracle Linux 7(独立架构)的 RPM 软件包。
复制下载链接的URL。
# yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
... 省略 ...
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : mysql80-community-release-el7-7.noarch 1/1
Verifying : mysql80-community-release-el7-7.noarch 1/1
Installed:
mysql80-community-release.noarch 0:el7-7
Complete!
确认已添加存储库。
# yum repolist
repo id repo name status
base/7/x86_64 CentOS-7 - Base 10072
extras/7/x86_64 CentOS-7 - Extras 515
mysql-connectors-community/x86_64 MySQL Connectors Community 146
mysql-tools-community/x86_64 MySQL Tools Community 58
mysql80-community/x86_64 MySQL 8.0 Community Server 156
updates/7/x86_64 CentOS-7 - Updates 4425
repolist: 15372
MySQL的存储库已经添加了。
也许更准确地说,是添加仓库信息而不是仓库本身的添加。
只是添加了存储库,当然并没有安装MySQL。
# mysql --version
bash: mysql: command not found
尝试使用yum install
安装MySQL客户端
yum install -y mysql-community-client
... 省略 ...
Installed:
mysql-community-client.x86_64 0:8.0.31-1.el7
Dependency Installed:
mysql-community-client-plugins.x86_64 0:8.0.31-1.el7 mysql-community-common.x86_64 0:8.0.31-1.el7 mysql-community-libs.x86_64 0:8.0.31-1.el7
Complete!
# mysql --version
mysql Ver 8.0.31 for Linux on x86_64 (MySQL Community Server - GPL)
确认已下载的 rpm 文件。
据说一旦下载了 RPM 文件,就会被缓存到 /var/cache/yum/x86_64/7/ 目录,以便无需再次获取。
通过yum clean命令进行删除。
# ls -la /var/cache/yum/x86_64/7/
total 40
drwxr-xr-x 8 root root 4096 Dec 9 05:10 .
drwxr-xr-x 3 root root 4096 Dec 9 02:10 ..
drwxr-xr-x 4 root root 4096 Dec 9 02:10 base
drwxr-xr-x 4 root root 4096 Dec 9 02:10 extras
drwxr-xr-x 4 root root 4096 Dec 9 05:10 mysql-connectors-community
drwxr-xr-x 4 root root 4096 Dec 9 05:10 mysql-tools-community
drwxr-xr-x 4 root root 4096 Dec 9 05:10 mysql80-community
-rw-r--r-- 1 root root 121 Dec 9 05:10 timedhosts
-rw-r--r-- 1 root root 407 Dec 9 02:10 timedhosts.txt
drwxr-xr-x 4 root root 4096 Dec 9 02:10 updates
ls -l /var/cache/yum/x86_64/7/mysql-connectors-community/
total 116
-rw-r--r-- 1 root root 95132 Oct 8 12:22 8393eb6d1cc24f6768d2260581e1ef283f65bdbf-primary.sqlite.bz2
-rw-r--r-- 1 root root 0 Dec 9 05:10 cachecookie
drwxr-xr-x 2 root root 4096 Dec 9 05:10 gen
drwxr-xr-x 2 root root 4096 Dec 9 05:10 packages
-rw-r--r-- 1 root root 2622 Oct 8 12:22 repomd.xml
查询已安装的 RPM 软件包的信息
rpm -qi mysql-community-client
Name : mysql-community-client
Version : 8.0.31
Release : 1.el7
Architecture: x86_64
Install Date: Fri Dec 9 05:10:15 2022
Group : Applications/Databases
Size : 83836667
License : Copyright (c) 2000, 2022, Oracle and/or its affiliates. Under GPLv2 license as shown in the Description field.
Signature : RSA/SHA256, Wed Sep 14 08:28:57 2022, Key ID 467b942d3a79bd29
Source RPM : mysql-community-8.0.31-1.el7.src.rpm
Build Date : Tue Sep 13 19:18:01 2022
Build Host : pb2-el7-20.regionaliad02.mysql2iad.oraclevcn.com
Relocations : (not relocatable)
Packager : MySQL Release Engineering <mysql-build@oss.oracle.com>
Vendor : Oracle and/or its affiliates
URL : http://www.mysql.com/
Summary : MySQL database client applications and tools
Description :
This package contains the standard MySQL clients and administration
tools.
据说这是从 rpm 数据库获取的数据。
听说当我们执行rpm install等命令时,数据会被添加到rpm数据库中。
据说 RPM 数据库的位置在 /var/lib/rpm。
# ls -l /var/lib/rpm
total 19988
-rw-r--r-- 1 root root 954368 Dec 9 05:10 Basenames
-rw-r--r-- 1 root root 8192 Dec 9 05:10 Conflictname
-rw-r--r-- 1 root root 274432 Dec 9 05:10 Dirnames
-rw-r--r-- 1 root root 8192 Dec 9 05:10 Group
-rw-r--r-- 1 root root 12288 Dec 9 05:10 Installtid
-rw-r--r-- 1 root root 16384 Dec 9 05:10 Name
-rw-r--r-- 1 root root 8192 Dec 9 05:10 Obsoletename
-rw-r--r-- 1 root root 15720448 Dec 9 05:10 Packages
-rw-r--r-- 1 root root 1646592 Dec 9 05:10 Providename
-rw-r--r-- 1 root root 98304 Dec 9 05:10 Requirename
-rw-r--r-- 1 root root 24576 Dec 9 05:10 Sha1header
-rw-r--r-- 1 root root 16384 Dec 9 05:10 Sigmd5
-rw-r--r-- 1 root root 8192 Sep 11 2017 Triggername
-rw-r--r-- 1 root root 270336 Dec 9 05:53 __db.001
-rw-r--r-- 1 root root 81920 Dec 9 05:53 __db.002
-rw-r--r-- 1 root root 1318912 Dec 9 05:53 __db.003
确认已安装的 RPM 包。
rpm -ql mysql-community-client
/usr/bin/mysql
/usr/bin/mysql_config_editor
/usr/bin/mysql_migrate_keyring
/usr/bin/mysqladmin
/usr/bin/mysqlbinlog
/usr/bin/mysqlcheck
/usr/bin/mysqldump
/usr/bin/mysqlimport
/usr/bin/mysqlpump
/usr/bin/mysqlshow
/usr/bin/mysqlslap
/usr/share/doc/mysql-community-client-8.0.31
/usr/share/doc/mysql-community-client-8.0.31/LICENSE
/usr/share/doc/mysql-community-client-8.0.31/README
/usr/share/man/man1/mysql.1.gz
/usr/share/man/man1/mysql_config_editor.1.gz
/usr/share/man/man1/mysqladmin.1.gz
/usr/share/man/man1/mysqlbinlog.1.gz
/usr/share/man/man1/mysqlcheck.1.gz
/usr/share/man/man1/mysqldump.1.gz
/usr/share/man/man1/mysqlimport.1.gz
/usr/share/man/man1/mysqlpump.1.gz
/usr/share/man/man1/mysqlshow.1.gz
/usr/share/man/man1/mysqlslap.1.gz
执行yum install的步骤
应该是这样的,如果不对的话请告诉我。
已确认的操作环境
# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
结束
第八天是@Nyokki的一篇关于PostgreSQL 15新增的MERGE功能的文章!!
请看看