【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