古場 正行
2020/05/31 8:59
@@ -1,95 +1,102 @@
|
|
1
|
-
#
|
1
|
+
# はじめに
|
2
|
-
- OSS のパッケージ管理機能を標準では持っていない Windows を自システムの OS に採用してしまうと、導入した OSS のアップデートが大変なことになってしまう。多数の OSS を活用するのであれば Linux ディストリビューションを OS として採用するのが無難だろう。
|
3
|
-
- Windows 環境に手作業でインストールした OSS の更新を実行しようとすると、更新した OSS が依存しているライブラリに要求されるバージョンのズレが発生したり、そもそもの依存ライブラリ不足といったことに起因する整合性回りのエラーが発生したりして、頭を抱えることになってしまう。
|
4
|
-
- OSS の更新に強い OS の候補としては、RedHat Enterprise Linux (RHEL)、CentOS、Ubuntu (Ubuntu Server) あたりが代表的なものになる。
|
5
2
|
|
3
|
+
## OSS (Open Source Software) に強い OS とは?
|
4
|
+
- OSS のパッケージ管理機能を標準では持っていない Windows を自システムの OS に採用してしまうと、導入した OSS の更新作業が大変なことになる。
|
5
|
+
- 例えば、Windows 環境に手作業でインストールした OSS の更新を実行しようとしたら、更新した OSS が依存しているライブラリに要求されるバージョンのズレが発生したり、依存関係が変わってしまったことによる依存ライブラリ不足などといったことに起因する整合性回りのエラーが発生して頭を抱えることになってしまった、という話をよく聞く。
|
6
|
+
- OSS の更新作業が大変だとついつい更新をサボってしまいがちになり、その結果、そのシステムは重大なセキュリティインシデントを引き起こす可能性が高くなってしまう。多数の OSS を活用するのであれば、Windows よりも Linux ディストリビューションを OS として採用する方が無難だろう。
|
7
|
+
- OSS の更新に強い OS の候補としては、Red Hat Enterprise Linux (RHEL)、CentOS、Ubuntu (Ubuntu Server) あたりが代表的なものになる。
|
8
|
+
|
6
9
|
|ディストリビューション名|特徴|
|
7
10
|
|:---|:---|
|
8
|
-
|
11
|
+
|[RHEL](https://www.redhat.com/ja/technologies/linux-platforms/enterprise-linux)|有償サポートの OS。提供する OSS は、最新であることよりも安定していることの方が重視される。|
|
9
|
-
|
12
|
+
|[CentOS](https://www.centos.org)|RHEL とほぼ同じ内容を提供しているクローン OS。無償だが、サポートがないので自己責任で利用する必要がある。|
|
10
|
-
|
13
|
+
|[Fedora](https://getfedora.org/ja/)|RHEL がサポートする予定の機能を先取りして検証しているという立ち位置の OS。提供している OSS は最新であることが重視される。無償だが、サポートがないので自己責任で利用しなければならない。|
|
11
|
-
|
14
|
+
|[Ubuntu](https://jp.ubuntu.com)|開発環境として多くの OSS 開発者達に愛用されている OS。CentOS や Fedora が RHEL 準拠なのと比べると、こちらのシステム構成は Debian GNU/Linux をベースとしており、RHEL とは異なる構成になる。なお、提供している OSS は基本的に最新のものが採用されている。|
|
12
15
|
|
13
|
-
|
16
|
+
## OSS パッケージ管理機能
|
14
|
-
-
|
17
|
+
- それぞれの OS の OSS パッケージ管理機能は、以下のものになる。
|
15
18
|
|
16
19
|
|OS|パッケージ管理機能|備考|
|
17
20
|
|:---|:---|:---|
|
18
|
-
|
|
21
|
+
|RHEL、CentOS|yum|RHEL や CentOS のバージョン 7 まで。|
|
19
|
-
|
|
22
|
+
|RHEL、CentOS、Fedora|dnf|RHEL や CentOS はバージョン 8 以降から。|
|
20
23
|
|Ubuntu|apt||
|
21
24
|
|macOS|[Homebrew](https://brew.sh/index_ja)|厳密に言うと OS の機能ではないが、もはや macOS のデファクトスタンダードである。|
|
22
25
|
|
23
|
-
-
|
26
|
+
- 本ナレッジでは、それらの OSS パッケージ管理機能の具体的な使い方を説明する。
|
24
27
|
|
25
|
-
|
28
|
+
---
|
26
29
|
|
30
|
+
# OS に取り込める OSS を探す
|
31
|
+
|
27
32
|
|yum|dnf|apt|Homebrew|
|
28
33
|
|:---|:---|:---|:---|
|
29
34
|
|yum search キーワード|dnf search キーワード|apt search キーワード|brew search キーワード|
|
30
35
|
|
31
36
|
- 以下に、CentOS 7 における OSS の探し方の具体例を紹介する。
|
32
37
|
```
|
33
38
|
$ yum search apache
|
34
|
-
|
39
|
+
:
|
35
40
|
httpd.x86_64 : Apache HTTP Server
|
36
|
-
|
41
|
+
:
|
37
42
|
```
|
38
43
|
|
39
|
-
|
44
|
+
# OSS を OS にインストールする
|
40
45
|
- OSS パッケージ管理機能を利用して OSS をインストールすると、依存関係で必要になる OSS も合わせて同時にインストールされる。
|
41
46
|
|
42
47
|
|yum|dnf|apt|Homebrew|
|
43
48
|
|:---|:---|:---|:---|
|
44
49
|
|yum install パッケージ名|dnf install パッケージ名|apt install パッケージ名|brew install パッケージ名|
|
45
50
|
|
46
|
-
-
|
51
|
+
- OS のパッケージ構成を変更する作業には基本的に root 権限を要求される。
|
52
|
+
- Homebrew だけはパッケージ構成の基本がユーザの実行環境になっており root 権限が必要になった時にのみ権限昇格を要求されるので、最初から最後まで root 権限なしで作業 (コマンド入力) する。
|
47
|
-
- yum
|
53
|
+
- yum は過去の慣例もあって su で root になってから作業することが多いのだが、dnf や apt は `sudo apt install パッケージ名` などと入力する sudo 環境での作業が推奨されている。
|
48
54
|
- 以下に、CentOS 7 における OSS の追加手順の具体例を紹介する。
|
49
55
|
```
|
50
56
|
# yum install httpd
|
51
57
|
```
|
52
58
|
|
53
|
-
|
59
|
+
# OS にインストール済の OSS 一覧を表示する
|
54
60
|
|
55
61
|
|yum|dnf|apt|Homebrew|
|
56
62
|
|:---|:---|:---|:---|
|
57
63
|
|yum list installed|dnf list installed|apt list --installed|brew list|
|
58
64
|
|
59
|
-
|
65
|
+
# リポジトリを更新する
|
60
|
-
- この節でいうリポジトリとは「OS が管理している OSS
|
66
|
+
- この節でいうリポジトリとは「OS が管理している OSS のバージョン情報や依存関係が定義されているメタデータのことである」と定義する。
|
61
67
|
- 一部の OS は、OSS の更新を実行する前にリポジトリを更新しなければならない。
|
62
68
|
- リポジトリを更新してもインストール済の OSS の方は更新されない。
|
63
69
|
|
64
70
|
|yum|dnf|apt|Homebrew|
|
65
71
|
|:---|:---|:---|:---|
|
66
72
|
|||apt update|brew update|
|
67
73
|
|
68
|
-
|
74
|
+
# 更新が可能な OSS を確認する
|
69
75
|
|
70
76
|
|yum|dnf|apt|Homebrew|
|
71
77
|
|:---|:---|:---|:---|
|
72
|
-
|yum check-update|dnf check-update
|
78
|
+
|yum check-update|dnf check-update|apt list --upgradable|brew outdated|
|
73
79
|
|
74
|
-
- apt の場合は、後述する `apt upgrade`
|
80
|
+
- apt の場合は、後述する `apt upgrade` の時に更新対象が一覧表示されるので、そこで n を入力すると更新が可能な OSS の確認だけを行うことができる。
|
75
81
|
|
76
|
-
|
82
|
+
# OSS を更新する
|
77
83
|
|
78
84
|
|ケース|yum|dnf|apt|Homebrew|
|
79
85
|
|:---|----|:---|:---|:---|
|
80
|
-
|OS にインストールした全てのパッケージを最新に更新する|yum update もしくは yum upgrade|dnf upgrade
|
86
|
+
|OS にインストールした全てのパッケージを最新に更新する|yum update もしくは yum upgrade|dnf update もしくは dnf upgrade|apt upgrade|brew upgrade|
|
81
87
|
|脆弱性が修正されたパッケージだけを更新する||dnf upgrade --security|||
|
82
|
-
|特定のパッケージを更新する|yum upgrade パッケージ名|dnf upgrade パッケージ名|apt upgrade
|
88
|
+
|特定のパッケージを更新する|yum upgrade パッケージ名|dnf upgrade パッケージ名|apt upgrade パッケージ名|brew upgrade パッケージ名|
|
83
89
|
|
84
90
|
- `yum upgrade` の動作は `yum update --obsoletes` と同じであり、OSS の更新に伴って必要がなくなったパッケージを自動的に削除するという処理が追加される。
|
85
|
-
- yum と dnf と apt
|
91
|
+
- yum と dnf と apt は更新の実行の有無を確認してくるが、-y オプションを追加しておくと自動的に y を答えたことになる。
|
86
|
-
- Homebrew は、`brew upgrade`
|
92
|
+
- Homebrew は、`brew upgrade` を実行すると、リポジトリの更新とインストールしたパッケージの更新の両方を行う。
|
93
|
+
- 特定のパッケージを更新すると、そのパッケージが依存しているパッケージも自動的に更新される。
|
87
94
|
|
88
|
-
|
95
|
+
## OSS の更新の実行例
|
89
96
|
- Homebrew
|
90
97
|
```
|
91
|
-
|
98
|
+
$ brew upgrade
|
92
99
|
==> Upgrading 11 outdated packages:
|
93
100
|
glib-networking 2.64.2_1 -> 2.64.3
|
94
101
|
postgresql 12.3_3 -> 12.3_4
|
95
102
|
cmake 3.17.2 -> 3.17.3
|
@@ -101,29 +108,28 @@
|
|
101
108
|
libwebsockets 4.0.10 -> 4.0.13
|
102
109
|
node 14.3.0 -> 14.3.0_1
|
103
110
|
python@3.8 3.8.2 -> 3.8.3
|
104
111
|
==> Upgrading icu4c 66.1 -> 67.1
|
105
|
-
|
112
|
+
:
|
106
113
|
```
|
107
114
|
|
108
|
-
|
115
|
+
# OSS の更新に伴って必要がなくなったパッケージを削除する
|
109
116
|
|
110
117
|
|yum|dnf|apt|Homebrew|
|
111
118
|
|:---|:---|:---|:---|
|
112
119
|
|||apt autoremove|brew cleanup|
|
113
120
|
|
114
121
|
- yum と dnf は、`yum upgrade` や `dnf upgrade` を実行すると、パッケージの更新のついでに必要がなくなったパッケージを削除してくれる。
|
115
|
-
- apt は `apt full-upgrade` を実行すると `apt upgrade` と `apt autoremove` の両方を実行してくれる。
|
116
122
|
|
117
|
-
|
123
|
+
# キャッシュを削除する
|
118
|
-
-
|
124
|
+
- この節でいうキャッシュとは、OSS のインストール時に必要となった関連ファイルのことである。
|
119
125
|
- インストールが完了している OSS にそれらのキャッシュは不要なので、ストレージ容量がシビアな環境では以下のコマンドを実行してキャッシュを削除しておくといいかもしれない。
|
120
126
|
|
121
127
|
|yum|dnf|apt|Homebrew|
|
122
128
|
|:---|:---|:---|:---|
|
123
129
|
|yum clean all|dnf clean all|apt clean|brew cleanup -s|
|
124
130
|
|
125
|
-
|
131
|
+
# OS にインストールした OSS をアンインストールする
|
126
132
|
|
127
133
|
|yum|dnf|apt|Homebrew|
|
128
134
|
|:---|:---|:---|:---|
|
129
135
|
|yum remove パッケージ名|dnf remove パッケージ名|apt remove パッケージ名|brew uninstall パッケージ名|
|