【RedHat系(如CentOS等)】初学者需要掌握的yum概述、主要命令和外部仓库

首先

初次见面,我是刚开始学习编程的初学者。
我会在QIita上输出我所学到的东西。
如果对我的文章有任何疑问或建议,请指出来,谢谢!

目标人群

    • 初学者

 

    • RedHat系(CenoOSなど)を触り始めて間もない方

 

    yumコマンドの大雑把な概要を知りたい方

组成

    • yumの概要

yumとは?
パッケージとは?
RPMとyum
依存関係とは?
RPMとyumの具体例

主要なコマンド

yum install
yum update
yum erase

インストールできるパッケージの確認方法

yum list
yum list installed
yum list updates
yum list available
yum list extras
yum search
yum info

外部リポジトリ

リポジトリの確認
外部リポジトリの取り込み

环境

    • EC2(AWS)

 

    CentOS Linux 7 x86_64 HVM EBS ENA 2002_01-b7ee8a69-ee97-4a49-9e68-afaee216db2e-ami-0042af67f8e4dcc20.4(AMI名)

Yum是一个软件管理工具的概述。

“Yum”是什么意思?

yum是一个工具或命令,它简化了Linux系统(RedHat系列)的软件包管理。

    • JavaScriptでいうとnpm

 

    • RubyでいうとBundler

 

    PHPでいうとComposer

类似于这样的存在。

大致而言,它是可以方便地进行软件包的安装、更新和删除等操作的工具。同时,它也能解决软件依赖的问题。

依存关系???(稍后详细说明?)

什么是包装?

パッケージとは、ある機能を実現するためにまとめられたファイルたち(プログラム)のことです。

例如

    • Webサーバーの機能を実現してくれるパッケージ

 

    • ファイルのアップロード機能を実現してくれるパッケージ

 

    メール送信機能を実現してくれるパッケージ

是不是某人为我们准备好了一些像”方便的工具”一样的东西呢?

RPMとyum

実は、Linuxシステム(RedHat系)には、パッケージをインストール、削除などのパッケージ管理してくれるRPM(Red Hat Package Manager)というものがあります。RPMもパッケージを扱うことができるパッケージ管理コマンドです。

どうして2つもパッケージ管理コマンドがあるのでしょうか。この2つの違いは何か気になりますよね。

この2つの主な違いは、「依存関係を解決」してくれるかどうかです。

刚才提到了我说要解释的”依存关系”?


【参考資料】
【RPM入門】Linuxのパッケージ管理システム「RPM」とは? | UX MILK


依存関係とは?

如果在Google Chrome中搜索“依存”,

「依存」とは、他人や組織、モノに愛情や支持、保護、援助を求め、それがなくては生きていけない状態であり、行為や思考のコントロール障害といわれています。自分ではやめられなくなり、精神医学の立場から病気と認められているものを「依存症」といいます。

以下是一种汉语的表达方式:
有这样的表述,简单来说就是指”没有你就无法生存的状态”。以恋爱为想象会更容易理解?


【参考资料】
关于依存


実はこのようなことがパッケージ管理の世界でもあるのです!!!

例如,

うまうまカレーパッケージ(機能はうまいカレーライスを作る)というパッケージがあるとします。

このうまうまカレーパッケージは、お野菜トントンパッケージ(機能は野菜を切る)とじっくりグツグツパッケージ(機能は具材を煮込む)を取り込んで実現されているパッケージです。

这个关系是依赖关系。

うまうまカレーパッケージはお野菜トントンパッケージとじっくりグツグツパッケージがない場合、うまいカレーを作るという機能を実現できない状態です。

言い換えるとうまうまカレーパッケージはお野菜トントンパッケージとじっくりグツグツパッケージに「あなたがいないと生きていけない状態」ということですね。(恋愛の依存関係と一緒!!)

RPM和yum的具体示例

それでは、RPMとyumの話に戻りましょう。
yumは、依存関係を解決してくれるという話でしたね。
さきほどのパッケージをコマンドで表してみましょう!!

RPMの場合

$ rpm -ivh お野菜トントン.rpm
$ rpm -ivh じっくりぐつぐつ.rpm
$ rpm -ivh うまうまカレー.rpm

それぞれのパッケージをインストールしなければ、うまうまカレーの機能を使用できない?

yumの場合

$ yum install うまうまカレー(パッケージ名)

コマンド1つでうまうまカレーを作る機能を手に入れることができます。依存している2つのパッケージは自動でインストールしてくれています。(依存関係の解決)

このように依存関係を理解して、パッケージのインストールや削除を行なってくれるのがyumなのです???

※実はyumコマンドは内部でrpmコマンドを実行しています。「RPM」を元にしたより高機能なパッケージ管理システムがyumコマンドです。rpmコマンドの便利版がyumコマンドという認識が正しいと思われます。

主要なコマンド

yum install

安装指定的软件包。

$ yum install パッケージ名

yum update

・指定したパッケージをアップデートする

$ yum update パッケージ名

yum erase

卸载指定的软件包。

$ yum erase パッケージ名

【参考資料】
yumコマンド一覧 – Qiita


インストールできるパッケージの確認方法

既然知道了安装和更新的方法,那么让我们确认可以安装的软件包。

列出可用的软件包

显示包裹清单

$ yum list [installed|updates|available|extras]

[ ]で囲まれたものは、オプションです。

yum listコマンドだけだと、パッケージが多すぎて表示しきれないので、「php」の文字列が入っているパッケージだけを例として載せておきます。

$ yum list | grep php
emacs-php-mode.noarch                       1.18.2-1.el7               base
graphviz-php.x86_64                         2.30.1-22.el7              base
php.x86_64                                  5.4.16-48.el7              base
php-bcmath.x86_64                           5.4.16-48.el7              base
php-cli.x86_64                              5.4.16-48.el7              base
php-common.x86_64                           5.4.16-48.el7              base
php-dba.x86_64                              5.4.16-48.el7              base
php-devel.x86_64                            5.4.16-48.el7              base
php-embedded.x86_64                         5.4.16-48.el7              base
php-enchant.x86_64                          5.4.16-48.el7              base
php-fpm.x86_64                              5.4.16-48.el7              base
php-gd.x86_64                               5.4.16-48.el7              base
php-intl.x86_64                             5.4.16-48.el7              base
php-ldap.x86_64                             5.4.16-48.el7              base
php-mbstring.x86_64                         5.4.16-48.el7              base
php-mysql.x86_64                            5.4.16-48.el7              base
php-mysqlnd.x86_64                          5.4.16-48.el7              base
php-odbc.x86_64                             5.4.16-48.el7              base
php-pdo.x86_64                              5.4.16-48.el7              base
php-pear.noarch                             1:1.9.4-22.el7             base
php-pecl-memcache.x86_64                    3.0.8-4.el7                base
php-pgsql.x86_64                            5.4.16-48.el7              base
php-process.x86_64                          5.4.16-48.el7              base
php-pspell.x86_64                           5.4.16-48.el7              base
php-recode.x86_64                           5.4.16-48.el7              base
php-snmp.x86_64                             5.4.16-48.el7              base
php-soap.x86_64                             5.4.16-48.el7              base
php-xml.x86_64                              5.4.16-48.el7              base
php-xmlrpc.x86_64                           5.4.16-48.el7              base
rrdtool-php.x86_64                          1.4.8-9.el7                base
uuid-php.x86_64                             1.6.2-26.el7               base

yum list installed

显示已安装的软件包

$ yum list installed

具体的例子

$ yum list installed
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: d36uatko69830t.cloudfront.net
 * extras: d36uatko69830t.cloudfront.net
 * updates: d36uatko69830t.cloudfront.net
インストール済みパッケージ
PyYAML.x86_64                                                  3.10-11.el7                                       installed
acl.x86_64                                                     2.2.51-15.el7                                     @base
audit.x86_64                                                   2.8.5-4.el7                                       installed
audit-libs.x86_64                                              2.8.5-4.el7                                       installed
audit-libs-python.x86_64                                       2.8.5-4.el7                                       installed
authconfig.x86_64                                              6.2.8-30.el7                                      installed
basesystem.noarch                                              10.0-7.el7.centos                                 installed
bash.x86_64                                                    4.2.46-34.el7                                     @base
bc.x86_64                                                      1.06.95-13.el7                                    @base
bind-export-libs.x86_64                                        32:9.11.4-26.P2.el7_9.5                           @updates
binutils.x86_64                                                2.27-44.base.el7                                  @base
btrfs-progs.x86_64                                             4.9.1-1.el7                                       installed
bzip2-libs.x86_64                                              1.0.6-13.el7                                      installed
ca-certificates.noarch                                         2020.2.41-70.0.el7_8                              @base
centos-release.x86_64                                          7-9.2009.1.el7.centos                             @updates
checkpolicy.x86_64                                             2.5-8.el7                                         installed
chkconfig.x86_64                                               1.7.6-1.el7                                       @base
...
...
...(続く)

列出可更新的yum清单

・インストール済のパッケージでアップデート可能なパッケージを表示

$ yum list updates

列出可用的软件包

在存储库中显示可用的软件包。

$ yum list available

列出所有额外软件

展示那些已无法使用的包装

$ yum list extras

yum search

・パッケージを検索

$ yum search パッケージ名や用語

yum search コマンドを使用すると、リポジトリ上のRPMのパッケージ名、詳細、サマリから対象のパッケージを検索する事ができます。

$ yum search php
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: d36uatko69830t.cloudfront.net
 * extras: d36uatko69830t.cloudfront.net
 * updates: d36uatko69830t.cloudfront.net
=================================================================================== N/S matched: php ===================================================================================
emacs-php-mode.noarch : Major GNU Emacs mode for editing PHP code
graphviz-php.x86_64 : PHP extension for graphviz
php.x86_64 : PHP scripting language for creating dynamic web sites
php-bcmath.x86_64 : A module for PHP applications for using the bcmath library
php-cli.x86_64 : Command-line interface for PHP
php-common.x86_64 : Common files for PHP
php-dba.x86_64 : A database abstraction layer module for PHP applications
php-devel.x86_64 : Files needed for building PHP extensions
php-embedded.x86_64 : PHP library for embedding in applications
php-enchant.x86_64 : Enchant spelling extension for PHP applications
php-fpm.x86_64 : PHP FastCGI Process Manager
php-gd.x86_64 : A module for PHP applications for using the gd graphics library
php-intl.x86_64 : Internationalization extension for PHP applications
php-ldap.x86_64 : A module for PHP applications that use LDAP
php-mbstring.x86_64 : A module for PHP applications which need multi-byte string handling
php-mysql.x86_64 : A module for PHP applications that use MySQL databases
php-mysqlnd.x86_64 : A module for PHP applications that use MySQL databases
php-odbc.x86_64 : A module for PHP applications that use ODBC databases
...
...
...(続く)

查询有关yum的信息

确认包裹的信息

$ yum info パッケージ名
$ yum info php
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: d36uatko69830t.cloudfront.net
 * extras: d36uatko69830t.cloudfront.net
 * updates: d36uatko69830t.cloudfront.net
利用可能なパッケージ
名前                : php
アーキテクチャー    : x86_64
バージョン          : 5.4.16
リリース            : 48.el7
容量                : 1.4 M
リポジトリー        : base/7/x86_64
要約                : PHP scripting language for creating dynamic web sites
URL                 : http://www.php.net/
ライセンス          : PHP and Zend and BSD
説明                : PHP is an HTML-embedded scripting language. PHP attempts to make it
                    : easy for developers to write dynamically generated web pages. PHP also
                    : offers built-in database integration for several commercial and
                    : non-commercial database management systems, so writing a
                    : database-enabled webpage with PHP is fairly simple. The most common
                    : use of PHP coding is probably as a replacement for CGI scripts.
                    :
                    : The php package contains the module (often referred to as mod_php)
                    : which adds support for the PHP language to Apache HTTP Server.

【参考资料】
【yum list】显示和确认软件包列表 | UX MILK


外部储存库

yumリポジトリは、提供しているパッケージのバージョンが古かったり、欲しいパッケージがない場合があります。その時は、外部リポジトリから欲しいパッケージをインストールすることができます。

※リポジトリとは、パッケージなどの保存場所のこと


【参考资料】
外部仓库是在CentOS中使用的一个术语,它是什么意思呢?UNIX和Linux | 教えて!goo


リポジトリの確認

现在可以查看正在使用的存储库。

$ yum repolist
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: d36uatko69830t.cloudfront.net
 * extras: d36uatko69830t.cloudfront.net
 * updates: d36uatko69830t.cloudfront.net
リポジトリー ID                                                                         リポジトリー名                                                                            状態
base/7/x86_64                                                                           CentOS-7 - Base                                                                           10,072
extras/7/x86_64                                                                         CentOS-7 - Extras                                                                            498
updates/7/x86_64                                                                        CentOS-7 - Updates                                                                         2,552
repolist: 13,122

外部リポジトリの取り込み

下記の記事を参考にして、外部リポジトリである「Remi’s RPM repository」を追加してみます。


【参考資料】
yumリポジトリ追加リスト 完全版 – Qiita


$ sudo yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
読み込んだプラグイン:fastestmirror
remi-release-7.rpm                                                                                                                                                                   |  23 kB  00:00:00
/var/tmp/yum-root-cvPpK7/remi-release-7.rpm を調べています: remi-release-7.9-1.el7.remi.noarch
/var/tmp/yum-root-cvPpK7/remi-release-7.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ remi-release.noarch 0:7.9-1.el7.remi を インストール
--> 依存性の処理をしています: epel-release = 7 のパッケージ: remi-release-7.9-1.el7.remi.noarch
Loading mirror speeds from cached hostfile
 * base: d36uatko69830t.cloudfront.net
 * extras: d36uatko69830t.cloudfront.net
 * updates: d36uatko69830t.cloudfront.net
--> トランザクションの確認を実行しています。
---> パッケージ epel-release.noarch 0:7-11 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

============================================================================================================================================================================================================
 Package                                          アーキテクチャー                           バージョン                                           リポジトリー                                         容量
============================================================================================================================================================================================================
インストール中:
 remi-release                                     noarch                                     7.9-1.el7.remi                                       /remi-release-7                                      31 k
依存性関連でのインストールをします:
 epel-release                                     noarch                                     7-11                                                 extras                                               15 k

トランザクションの要約
============================================================================================================================================================================================================
インストール  1 パッケージ (+1 個の依存関係のパッケージ)

合計容量: 45 k
総ダウンロード容量: 15 k
インストール容量: 55 k
Is this ok [y/d/N]: y
Downloading packages:
epel-release-7-11.noarch.rpm                                                                                                                                                         |  15 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : epel-release-7-11.noarch                                                                                                                                                    1/2
  インストール中          : remi-release-7.9-1.el7.remi.noarch                                                                                                                                          2/2
  検証中                  : epel-release-7-11.noarch                                                                                                                                                    1/2
  検証中                  : remi-release-7.9-1.el7.remi.noarch                                                                                                                                          2/2

インストール:
  remi-release.noarch 0:7.9-1.el7.remi

依存性関連をインストールしました:
  epel-release.noarch 0:7-11

完了しました!

それでは、現在使用しているリポジトリを確認してみましょう。

$ yum repolist
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                                                                                                                                                 | 9.5 kB  00:00:00
 * base: d36uatko69830t.cloudfront.net
 * epel: ftp.iij.ad.jp
 * extras: d36uatko69830t.cloudfront.net
 * remi-safe: ftp.riken.jp
 * updates: d36uatko69830t.cloudfront.net
epel                                                                                                                                                                                 | 4.7 kB  00:00:00
remi-safe                                                                                                                                                                            | 3.0 kB  00:00:00
(1/4): epel/x86_64/group_gz                                                                                                                                                          |  96 kB  00:00:00
(2/4): remi-safe/primary_db                                                                                                                                                          | 2.0 MB  00:00:00
epel/x86_64/updateinfo         FAILED
https://nrt.edge.kernel.org/fedora-buffet/epel/7/x86_64/repodata/f040f54116b01148f14d8321fada71bd850e9e667f48b4d949a884a1a2300b65-updateinfo.xml.bz2: [Errno 14] HTTPS Error 404 - Not FoundB  --:--:-- ETA
他のミラーを試します。
To address this issue please refer to the below wiki article

https://wiki.centos.org/yum-errors

If above article doesn't help to resolve this issue please use https://bugs.centos.org/.

(3/4): epel/x86_64/updateinfo                                                                                                                                                        | 1.0 MB  00:00:00
(4/4): epel/x86_64/primary_db                                                                                                                                                        | 6.9 MB  00:00:00
リポジトリー ID                                                               リポジトリー名                                                                                                          状態
base/7/x86_64                                                                 CentOS-7 - Base                                                                                                         10,072
epel/x86_64                                                                   Extra Packages for Enterprise Linux 7 - x86_64                                                                          13,625
extras/7/x86_64                                                               CentOS-7 - Extras                                                                                                          498
remi-safe                                                                     Safe Remi's RPM repository for Enterprise Linux 7 - x86_64                                                               4,470
updates/7/x86_64                                                              CentOS-7 - Updates                                                                                                       2,552
repolist: 31,217

使用できるリポジトリが増えていますね。この「Remi’s RPM repository」はバージョンが新しいPHPを利用したい時に利用します。よって、php7.*やphp8.*などのパッケージがインストールできるようになりました。

$ yum list | grep php

(一部抜粋)
...
...
php74.x86_64                                1.0-3.el7.remi             remi-safe
php74-build.x86_64                          1.0-3.el7.remi             remi-safe
php74-php.x86_64                            7.4.22-1.el7.remi          remi-safe
php74-php-ast.x86_64                        1.0.14-1.el7.remi          remi-safe
php74-php-bcmath.x86_64                     7.4.22-1.el7.remi          remi-safe
php74-php-brotli.x86_64                     0.13.1-1.el7.remi          remi-safe
php74-php-cli.x86_64                        7.4.22-1.el7.remi          remi-safe
...
...
...
php80.x86_64                                1.0-3.el7.remi             remi-safe
php80-build.x86_64                          1.0-3.el7.remi             remi-safe
php80-php.x86_64                            8.0.9-1.el7.remi           remi-safe
php80-php-ast.x86_64                        1.0.14-1.el7.remi          remi-safe
php80-php-bcmath.x86_64                     8.0.9-1.el7.remi           remi-safe
php80-php-brotli.x86_64                     0.13.1-1.el7.remi          remi-safe
php80-php-cli.x86_64                        8.0.9-1.el7.remi           remi-safe
php80-php-common.x86_64                     8.0.9-1.el7.remi           remi-safe
php80-php-componere.x86_64                  3.1.2-1.el7.remi           remi-safe
...
...
...(続く)

php7.*やphp8.*などのパッケージが確認できます。このように、yumリポジトリにないパッケージも外部リポジトリを使用することによってインストールできるのです。

おわりに

最後まで読んでいただきありがとうございます。今回の記事が少しでもyumやパッケージ管理の理解につながれば嬉しく思います。
Qiitaで初めての投稿でした。記事の作成は知識を整理しないと書けないので復習にもってこいですね。今後も定期的に記事を投稿していこうと思います。

请提供参考资料。

    • 【RPM入門】Linuxのパッケージ管理システム「RPM」とは? | UX MILK

 

    • 依存について

 

    • yumコマンド一覧 – Qiita

 

    • 【yum list】パッケージ一覧を表示・確認する | UX MILK

 

    • 外部レポジトリとは -CentOSで用語として使われるレポジトリとはどうい- UNIX・Linux | 教えて!goo

 

    yumリポジトリ追加リスト 完全版 – Qiita
广告
将在 10 秒后关闭
bannerAds