由于对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命令来添加存储库。

两者的不同之处如下

yum installyum localinstallパッケージのインストールできるできないリポジトリの追加できるできる

据称,在RHEL 5以前的版本中,无法通过yum install添加存储库,但在RHEL 6及以后的版本中似乎已经变得可行。

尝试添加存储库

尝试添加MySQL存储库。

这里是要追加的存储库。
由于这次是 CentOS 7 系统,所以选择 Red Hat Enterprise Linux 7 / Oracle Linux 7(独立架构)的 RPM 软件包。

image.png

复制下载链接的URL。

image.png
# 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的步骤

イメージ.png

应该是这样的,如果不对的话请告诉我。

已确认的操作环境

 

# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

结束

第八天是@Nyokki的一篇关于PostgreSQL 15新增的MERGE功能的文章!!

请看看