Toggle navigation
古場の Knowledge
作成
作成
下書き一覧
ストック
一覧
複合検索
サインイン
更新履歴
古場 正行
2020/05/31 9:46
現在との差分
過去のナレッジの内容
コンテンツ
# はじめに ## OSS (Open Source Software) に強い OS とは? - OSS のパッケージ管理機能を標準では持っていない Windows を自システムの OS に採用してしまうと、導入した OSS の更新作業が大変なことになってしまう。 - Windows 環境に手作業でインストールした OSS の更新を実行しようとすると、更新した OSS が依存しているライブラリに要求されるバージョンのズレが発生したり、そもそもの依存ライブラリ不足といったことに起因する整合性回りのエラーが発生したりして、頭を抱えることになってしまう。 - OSS の更新作業が大変だと、ついつい更新をサボってしまいがちになる。その結果、重大なセキュリティインシデントを引き起こす可能性が高くなる。多数の OSS を活用するのであれば、Windows よりも Linux ディストリビューションを OS として採用する方が無難だろう。 - OSS の更新に強い OS の候補としては、RedHat Enterprise Linux (RHEL)、CentOS、Ubuntu (Ubuntu Server) あたりが代表的なものになる。 |ディストリビューション名|特徴| |:---|:---| |[RedHat Enterprise Linux (RHEL)](https://www.redhat.com/ja/technologies/linux-platforms/enterprise-linux)|有償サポートの OS。提供する OSS は、最新であることよりも安定していることの方が重視される。| |[CentOS](https://www.centos.org)|RHEL とほぼ同じ内容を提供しているクローン OS。無償だが、サポートがないので自己責任で利用する必要がある。| |[Fedora](https://getfedora.org/ja/)|RHEL がサポートする予定の機能を先取りして検証しているという立ち位置の OS。提供している OSS は最新であることが重視される。無償だが、サポートがないので自己責任で利用しなければならない。| |[Ubuntu](https://jp.ubuntu.com)|開発環境として多くの開発者達に愛用されている OS。CentOS や Fedora が RHEL 準拠なのと比べると、システム構成は RHEL とは異なる独自のものになる。提供している OSS は基本的に最新のものになる。| ## OSS パッケージ管理機能 - それぞれの OS の OSS パッケージ管理機能は、以下のものになる。 |OS|パッケージ管理機能|備考| |:---|:---|:---| |RHEL、CentOS|yum|RHEL 7 や CentOS 7 まで。| |RHEL、CentOS|dnf|RHEL 8 や CentOS 8 以降。| |Ubuntu|apt|| |macOS|[Homebrew](https://brew.sh/index_ja)|厳密に言うと OS の機能ではないが、もはや macOS のデファクトスタンダードである。| - 本ナレッジでは、それらの OSS パッケージ管理機能の具体的な使い方を説明する。 --- # OS に取り込める OSS を探す |yum|dnf|apt|Homebrew| |:---|:---|:---|:---| |yum search キーワード|dnf search キーワード|apt search キーワード|brew search キーワード| - 以下に、CentOS 7 における OSS の探し方の具体例を紹介する。 ``` $ yum search apache : httpd.x86_64 : Apache HTTP Server : ``` # OSS を OS にインストールする - OSS パッケージ管理機能を利用して OSS をインストールすると、依存関係で必要になる OSS も合わせて同時にインストールされる。 |yum|dnf|apt|Homebrew| |:---|:---|:---|:---| |yum install パッケージ名|dnf install パッケージ名|apt install パッケージ名|brew install パッケージ名| - OS のパッケージ構成を変更する作業には root 権限を要求される。 - Homebrew は root 権限が必要になった時点で権限昇格を要求されるので、通常の場合は root 権限なしで作業すべきである。 - yum は su で root になってから作業することが多いのだが、dnf や apt は `sudo apt install パッケージ名` などと入力する sudo 環境での作業が推奨されている。 - 以下に、CentOS 7 における OSS の追加手順の具体例を紹介する。 ``` # yum install httpd ``` # OS にインストール済の OSS 一覧を表示する |yum|dnf|apt|Homebrew| |:---|:---|:---|:---| |yum list installed|dnf list installed|apt list --installed|brew list| # リポジトリを更新する - この節でいうリポジトリとは「OS が管理している OSS のバージョン情報や依存関係を管理しているメタデータのことである」と定義する。 - 一部の OS は、OSS の更新を実行する前にリポジトリを更新しなければならない。 - リポジトリを更新してもインストール済の OSS の方は更新されない。 |yum|dnf|apt|Homebrew| |:---|:---|:---|:---| |||apt update|brew update| # 更新が可能な OSS を確認する |yum|dnf|apt|Homebrew| |:---|:---|:---|:---| |yum check-update|dnf check-update||brew outdated| - apt の場合は、後述する `apt upgrade` の時に更新対象が一覧表示されるので、そこで n を入力すると更新が可能な OSS の確認だけを行うことができる。 # OSS を更新する |ケース|yum|dnf|apt|Homebrew| |:---|----|:---|:---|:---| |OS にインストールした全てのパッケージを最新に更新する|yum update もしくは yum upgrade|dnf upgrade|apt upgrade|brew upgrade| |脆弱性が修正されたパッケージだけを更新する||dnf upgrade --security||| |特定のパッケージを更新する|yum upgrade パッケージ名|dnf upgrade パッケージ名|apt upgrade パッケージ名|brew upgrade パッケージ名| - `yum upgrade` の動作は `yum update --obsoletes` と同じであり、OSS の更新に伴って必要がなくなったパッケージを自動的に削除するという処理が追加される。 - yum と dnf と apt は更新の実行の有無を確認してくるが、-y オプションを追加しておくと自動的に y を答えたことになる。 - Homebrew は、`brew upgrade` を実行すると、リポジトリの更新と Homebrew でインストールしたパッケージの更新の両方を行う。 ## OSS の更新の実行例 - Homebrew ``` % brew upgrade ==> Upgrading 11 outdated packages: glib-networking 2.64.2_1 -> 2.64.3 postgresql 12.3_3 -> 12.3_4 cmake 3.17.2 -> 3.17.3 boost 1.72.0_2 -> 1.72.0_3 dart-lang/dart/dart 2.8.2 -> 2.8.3 icu4c 66.1 -> 67.1 harfbuzz 2.6.6 -> 2.6.6_1 php 7.4.6 -> 7.4.6_1 libwebsockets 4.0.10 -> 4.0.13 node 14.3.0 -> 14.3.0_1 python@3.8 3.8.2 -> 3.8.3 ==> Upgrading icu4c 66.1 -> 67.1 : ``` # OSS の更新に伴って必要がなくなったパッケージを削除する |yum|dnf|apt|Homebrew| |:---|:---|:---|:---| |||apt autoremove|brew cleanup| - yum と dnf は、`yum upgrade` や `dnf upgrade` を実行すると、パッケージの更新のついでに必要がなくなったパッケージを削除してくれる。 - apt は `apt full-upgrade` を実行すると `apt upgrade` と `apt autoremove` の両方を実行してくれる。 # キャッシュを削除する - キャッシュとは、OSS のインストール時に必要となった関連ファイルのことである。 - インストールが完了している OSS にそれらのキャッシュは不要なので、ストレージ容量がシビアな環境では以下のコマンドを実行してキャッシュを削除しておくといいかもしれない。 |yum|dnf|apt|Homebrew| |:---|:---|:---|:---| |yum clean all|dnf clean all|apt clean|brew cleanup -s| # OS にインストールした OSS をアンインストールする |yum|dnf|apt|Homebrew| |:---|:---|:---|:---| |yum remove パッケージ名|dnf remove パッケージ名|apt remove パッケージ名|brew uninstall パッケージ名| - 他のパッケージとの依存関係があるパッケージをアンインストールしようとすると警告される。
現在のナレッジの内容
コンテンツ
# はじめに ## OSS (Open Source Software) に強い OS とは? - OSS のパッケージ管理機能を標準では持っていない Windows を自システムの OS に採用してしまうと、導入した OSS の更新作業が大変なことになる。 - 例えば、Windows 環境に手作業でインストールした OSS の更新を実行しようとしたら、更新した OSS が依存しているライブラリに要求されるバージョンのズレが発生したり、依存関係が変わってしまったことによる依存ライブラリ不足などといったことに起因する整合性回りのエラーが発生して頭を抱えることになってしまった、という話をよく聞く。 - OSS の更新作業が大変だとついつい更新をサボってしまいがちになり、その結果、そのシステムは重大なセキュリティインシデントを引き起こす可能性が高くなってしまう。多数の OSS を活用するのであれば、Windows よりも Linux ディストリビューションを OS として採用する方が無難だろう。 - OSS の更新に強い OS の候補としては、Red Hat Enterprise Linux (RHEL)、CentOS、Ubuntu (Ubuntu Server) あたりが代表的なものになる。 |ディストリビューション名|特徴| |:---|:---| |[RHEL](https://www.redhat.com/ja/technologies/linux-platforms/enterprise-linux)|有償サポートの OS。提供する OSS は、最新であることよりも安定していることの方が重視される。| |[CentOS](https://www.centos.org)|RHEL とほぼ同じ内容を提供しているクローン OS。無償だが、サポートがないので自己責任で利用する必要がある。| |[Fedora](https://getfedora.org/ja/)|RHEL がサポートする予定の機能を先取りして検証しているという立ち位置の OS。提供している OSS は最新であることが重視される。無償だが、サポートがないので自己責任で利用しなければならない。| |[Ubuntu](https://jp.ubuntu.com)|開発環境として多くの OSS 開発者達に愛用されている OS。CentOS や Fedora が RHEL 準拠なのと比べると、こちらのシステム構成は Debian GNU/Linux をベースとしており、RHEL とは異なる構成になる。なお、提供している OSS は基本的に最新のものが採用されている。| ## OSS パッケージ管理機能 - それぞれの OS の OSS パッケージ管理機能は、以下のものになる。 |OS|パッケージ管理機能|備考| |:---|:---|:---| |RHEL、CentOS|yum|RHEL や CentOS のバージョン 7 まで。| |RHEL、CentOS、Fedora|dnf|RHEL や CentOS はバージョン 8 以降から。| |Ubuntu|apt|| |macOS|[Homebrew](https://brew.sh/index_ja)|厳密に言うと OS の機能ではないが、もはや macOS のデファクトスタンダードである。| - 本ナレッジでは、それらの OSS パッケージ管理機能の具体的な使い方を説明する。 --- # OS に取り込める OSS を探す |yum|dnf|apt|Homebrew| |:---|:---|:---|:---| |yum search キーワード|dnf search キーワード|apt search キーワード|brew search キーワード| - 以下に、CentOS 7 における OSS の探し方の具体例を紹介する。 ``` $ yum search apache : httpd.x86_64 : Apache HTTP Server : ``` # OSS を OS にインストールする - OSS パッケージ管理機能を利用して OSS をインストールすると、依存関係で必要になる OSS も合わせて同時にインストールされる。 |yum|dnf|apt|Homebrew| |:---|:---|:---|:---| |yum install パッケージ名|dnf install パッケージ名|apt install パッケージ名|brew install パッケージ名| - OS のパッケージ構成を変更する作業には基本的に root 権限を要求される。 - Homebrew だけはパッケージ構成の基本がユーザの実行環境になっており root 権限が必要になった時にのみ権限昇格を要求されるので、最初から最後まで root 権限なしで作業 (コマンド入力) する。 - yum は過去の慣例もあって su で root になってから作業することが多いのだが、dnf や apt は `sudo apt install パッケージ名` などと入力する sudo 環境での作業が推奨されている。 - 以下に、CentOS 7 における OSS の追加手順の具体例を紹介する。 ``` # yum install httpd ``` # OS にインストール済の OSS 一覧を表示する |yum|dnf|apt|Homebrew| |:---|:---|:---|:---| |yum list installed|dnf list installed|apt list --installed|brew list| # リポジトリを更新する - この節でいうリポジトリとは「OS が管理している OSS のバージョン情報や依存関係が定義されているメタデータのことである」と定義する。 - 一部の OS は、OSS の更新を実行する前にリポジトリを更新しなければならない。 - リポジトリを更新してもインストール済の OSS の方は更新されない。 |yum|dnf|apt|Homebrew| |:---|:---|:---|:---| |||apt update|brew update| # 更新が可能な OSS を確認する |yum|dnf|apt|Homebrew| |:---|:---|:---|:---| |yum check-update|dnf check-update|apt list --upgradable|brew outdated| - apt の場合は、後述する `apt upgrade` の時に更新対象が一覧表示されるので、そこで n を入力すると更新が可能な OSS の確認だけを行うことができる。 # OSS を更新する |ケース|yum|dnf|apt|Homebrew| |:---|----|:---|:---|:---| |OS にインストールした全てのパッケージを最新に更新する|yum update もしくは yum upgrade|dnf update もしくは dnf upgrade|apt upgrade|brew upgrade| |脆弱性が修正されたパッケージだけを更新する||dnf upgrade --security||| |特定のパッケージを更新する|yum upgrade パッケージ名|dnf upgrade パッケージ名|apt upgrade パッケージ名|brew upgrade パッケージ名| - `yum upgrade` の動作は `yum update --obsoletes` と同じであり、OSS の更新に伴って必要がなくなったパッケージを自動的に削除するという処理が追加される。 - yum と dnf と apt は更新の実行の有無を確認してくるが、-y オプションを追加しておくと自動的に y を答えたことになる。 - Homebrew は、`brew upgrade` を実行すると、リポジトリの更新とインストールしたパッケージの更新の両方を行う。 - 特定のパッケージを更新すると、そのパッケージが依存しているパッケージも自動的に更新される。 ## OSS の更新の実行例 - Homebrew ``` $ brew upgrade ==> Upgrading 11 outdated packages: glib-networking 2.64.2_1 -> 2.64.3 postgresql 12.3_3 -> 12.3_4 cmake 3.17.2 -> 3.17.3 boost 1.72.0_2 -> 1.72.0_3 dart-lang/dart/dart 2.8.2 -> 2.8.3 icu4c 66.1 -> 67.1 harfbuzz 2.6.6 -> 2.6.6_1 php 7.4.6 -> 7.4.6_1 libwebsockets 4.0.10 -> 4.0.13 node 14.3.0 -> 14.3.0_1 python@3.8 3.8.2 -> 3.8.3 ==> Upgrading icu4c 66.1 -> 67.1 : ``` # OSS の更新に伴って必要がなくなったパッケージを削除する |yum|dnf|apt|Homebrew| |:---|:---|:---|:---| |||apt autoremove|brew cleanup| - yum と dnf は、`yum upgrade` や `dnf upgrade` を実行すると、パッケージの更新のついでに必要がなくなったパッケージを削除してくれる。 # キャッシュを削除する - この節でいうキャッシュとは、OSS のインストール時に必要となった関連ファイルのことである。 - インストールが完了している OSS にそれらのキャッシュは不要なので、ストレージ容量がシビアな環境では以下のコマンドを実行してキャッシュを削除しておくといいかもしれない。 |yum|dnf|apt|Homebrew| |:---|:---|:---|:---| |yum clean all|dnf clean all|apt clean|brew cleanup -s| # OS にインストールした OSS をアンインストールする |yum|dnf|apt|Homebrew| |:---|:---|:---|:---| |yum remove パッケージ名|dnf remove パッケージ名|apt remove パッケージ名|brew uninstall パッケージ名| - 他のパッケージとの依存関係があるパッケージをアンインストールしようとすると警告される。
戻る