Ground Sunlight

Windowsで作る - Webプログラミングの開発環境(PHP)

ユーザ用ツール

サイト用ツール


サイドバー

メインメニュー

XAMPP アレンジ

道具箱

リポジトリ編

フレームワーク編

公開ソフトウェア

メタ
リンク


このページへのアクセス
今日: 5 / 昨日: 2
総計: 224

centos:package

CentOS パッケージ管理の基礎知識

Version CentOS 7.2

y2sunlight 2020-05-28

CentOS パッケージ管理に戻る

yum の話の前に、パッケージ管理について整理しておきたいと思います。Linuxの世界には、yum と apt の2つのパッケージ管理コマンドがあります。yum は RHEL系(CentOS,Fedora,Amazon Linux)、apt は Debian系(Ubuntu,Raspbian)のコマンドです。そして、それぞれに対し、rpm と dpkg というパッケージ管理システムが対応しています。これだけでも複雑なのですが、wget や curl、tar や make などのコマンドもあり、複雑怪奇な世界を作っています。従って、yumだけに専念できるように、これらのパッケージ管理を取り巻く世界を一度整理しておきたいというのが、この章の1つの目的です。

yum の世界にはいると、一気に視野が開かれるのですが、今度は、リポジトリの森に入り込んでしまいます。森の種類はいくつもないので、直ぐに慣れるとは思いますが、突然 EPEL、REMI、IUS、SCL と言った名前を聞いて驚かないように森に入る前にここで予習しておくことにします。

関連記事


パッケージ管理の周辺コマンド

yum

CentOS(RHEP系のLinux)のパッケージインストールコマンドは yum です(ちなみに apt(または apt-get) は Debian系のコマンドです)。基本的に、以下のコマンドだけ覚えておけば良いと思います。

yum install PACKAGE_NAME

この yum は内部的に rpm というコマンドを使用しています。rpm については後述しますが、単体のパッケージを管理するコマンドです。通常パッケージには依存性があり、例えばパッケージAがパッケージBを使用しているならば、その両方をインストールしないとパッケージAは使えません。このような依存性を含めて解決してくれるパッケージ管理システム(及びそのコマンド)が yum なのです。yum の使い方は本編のyumをご覧ください。


rpm

RPM (全て大文字) は、Red Hat社の開発したパッケージ管理システムです。以前は、Red Hat Package Manager の略称でした。RPMで採用されているファイル形式が .rpm フォーマットです。そして、rpmファイルを操作するのが rpm コマンドです。

依存関係のないパッケージの場合は、rpm -ivh だけでパッケージのインストールができます。また、オフライン環境下でパッケージをインストルールする場合など、今でも、rpm を使用する場面は残っています。

以下に代表的な rpm のユースケースを記載します。

rpm -qa                   # インストール済みパッケージの一覧表示
rpm -qa  RPM_FILE_NAME    # インストール済みパッケージの検索
rpm -qi  RPM_FILE_NAME    # インストール済みパッケージの情報を表示

rpm -ivh RPM_FILE_NAME    # インストール
rpm -Uvh RPM_FILE_NAME    # アップグレード
rpm -evh RPM_FILE_NAME    # アンインストール
RPM_FILE_NAME にはrpmファイル名の他にURLも使用できます。


wget と curl

今でもネット上でよく見かけるパッケージのインストール例として、次のようなものがあります:

wget https://domain/path/package-name.rpm  # .rpmファイルをインターネットから取得
rpm -ivh package-name.rpm                  # ローカルの.rpmファイルをインストール

この例は、掲載の時期が古いのか、親切でオフラインも想定して書いてあるのか不明ですが、通常は以下と同等です。

rpm -ivh https://domain/path/package-name.rpm

この例のように wget コマンドもパッケージのインストール時に使われるコマンドです。wgetと同じような場面でよく使われるコマンドに curl コマンド があります。両者の特徴とユースケースも以下に書いておきます。

wget

wgetは、HTTP、HTTPS及びFTPプロトコルに対応しているダウンローダーです。wget の特徴は、再帰的なダウンロードが可能で、ディレクトリ下の全てのコンテンツを取得することが可能です。またミラーリングの機能も持っています。パッケージインストールでインターネットからパッケージを取得する場合は、wgetが良く使われています。

# ファイルのダウンロード
wget URL         # カレントに同じファイル名で保存
wget -P path URL # 保存先をpathに変更
wget -O file URL # ファイル名をfileに変更

wget マニュアル https://www.gnu.org/software/wget/manual/wget.html#Examples

curl

curlは、cURLプロジェクトの提供するコマンドで、HTTP、HTTPS、FTP、FTPS、SCP、SFTP など多くのプロトコルに対応してるダウンローダーです。パッケージインストールの場面ではあまり使われませんが、ネットではたまに見かけます。プログラマー的にはcurl は手軽に使えるHTTPクライアントとしてWebAPIなどのデバッグで活躍してくれます。

# ファイルのダウンロード
curl -O URL            # カレントに同じファイル名で保存
curl -o path/file URL  # 保存先と名前をpath/fileに変更
# ファイルの表示
curl URL               # 標準出力に表示
curl URL > path/file   # path/fileに保存

curl マニュアル https://curl.haxx.se/docs/manual.html


レトロな方法

rpm が公開または配布されていないような状況下では、ソースコードからソフトウェアをインストールする必要があります。

ソースコードの提供は tarファイル と呼ばれる形式のアーカーブファイルが使用されます(このtarファイルは、1つのtarに全てのリソースが含まれていることから、tarball (ターボール)と呼ばれることもあります)。この tarファイル を操作するのが tar コマンドです。そのような場合のインストールの典型的な手順を示します。

wget https://domain/path/package-source.tar #1
tar -xvf package-source.tar                 #2
cd package-source                           #3
./configure                                 #4
make                                        #5
make install                                #6
  1. tar ファイルをインタネットから取得します。
  2. tar ファイルを解凍します
  3. 解凍したフォルダに移動します
  4. 同封の configure スクリプトを実行して環境に応じた make ファイルを生成します
  5. make ファイルを実行します
  6. 出来上がった exeファイルを所定の場所にインストールします

通常、インストールの手順はダウンロードしたサイトや tarball の中か含まれていると思います。今でもこのようなレトロな状況に出くわすことがありますが、オープンソースの世界では珍しくないのかもしれません。


yumのリポジトリ

OSインストール直後は、以下の3つのリポジトリが利用できるようになっています。

  • CentOS-7 - Base
  • CentOS-7 - Extras
  • CentOS-7 - Updates

これらのリポジトリは「CentOS 公式リポジトリ」と呼ばれることもあります。このリポジトリで入手できないパッケージがある場合、特に、PHP、PythonやGITなどの新しいパージョンのものを使用したい場合が多いと思いますが、そのような場合は、他の(サードパーティー)リポジトリから取得しなければなりません。

ネットでは様々なリポジトリ情報が飛び交っているようですが、これらの一覧はCentOSのサイトにAvailable Repositories for CentOSとして記載されています。以下では本編の目的に合致し、現在比較的良く使用されているサードパーティーリポジトリ

  • EPEL
  • Remi
  • IUS

について説明します。

尚、これらサードパーティーリポジトリを使えるようにする時も、サードパーティーリポジトリの登録用のパッケージを yum を使ってイントールします。


EPEL

パッケージ: https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

インストール

yum install epel-release

EPELとは Extra Packages for Enterprise Linux の略で、Fedoraの有志が作成、メンテナンスしている RHEL系(CentOS,Fedora)で使えるレポジトリです。EPELプロジェクトでは RHEL で提供されていないけど Fedora には存在するパッケージを提供しています。詳しくは以下のリンクをご覧下して下さい。

参照


Remi

パッケージ: http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

インストール

yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
Remi 使用時はEPELのインストールが必要です。

Remi は RHEL系(CentOS,Fedora)向けに、最新バージョンを含む様々なPHPパッケージを配布しているレポジトリです。ここを使う用途としては、ほとんどが、最新のPHPを入手するのが目的と考えられます。

参照


IUS

パッケージ: https://repo.ius.io/ius-release-el7.rpm

インストール

yum install https://repo.ius.io/ius-release-el7.rpm
IUS 使用時はEPELのインストールも必要です。

IUS も RHEL系(CentOSなど)向けの有志プロジェクトで新しいバージョンの RPM パッケージを提供しています。公式ページによると以下のような記載があります。

  • Red Hat Enterprise Linux(RHEL)およびCentOS用の高品質RPMパッケージを作成します。
  • 上流の開発者によって新しいバージョンがリリースされたら、更新されたRPMパッケージをすぐにリリースします。
  • 蓄積された RPM パッケージの自動交換はありません。

ある意味、EPELに似ているリポジトリであるとも言えます。EPELとIUSの両方で公開されている例も少なくありません。両方で公開されている場合は、自分の環境に適している方を選ぶ必要があるかもしれません。

参照


SCL (Software Collections)

SCL とは 最新バージョンの言語やミドルウェア(DBMS,Gitなど)を集めたRPMパッケージにより提供されるソフトウェアコレクションです。当初(2012年頃) SCL は、RHELとは別のライフサイクルで、安定した最新バージョンのソフトウェアをインストールする方法として提供が開始されました。現在では各ディストリビューション(RHEL,CentOS,Fedora)毎に維持、管理されており、CentOS ではSoftware Collections SIGがこれを行っています。

yumを使って最新のソフトウェアをインストールする状況下では、目的のソフトウェアを複数のサードパーティーのリポジトリの中を検索してからインストールする必要があります。また、目的のソフトウェアが2つ以上のリポジトリに見つかると、どちらがいいかを悩まないといけません。この問題を解決してくれるのが SCL です。SCL のインストールは簡単です:

yum install centos-release-scl-rh

SCL をインストールすると1つのリポジトリだけで目的とする最新の安定したソフトウェアをインストールすることができます。また、既存システムを上書きせずに、複数のバージョンの同じソフトウェアコンポーネントを同時にインストールこともできます。夢のような話です。。。

しかし問題もあります。ここが重要なのですが、これまでのyum によるインストールと違い、SCLパッケージのインストールではパッケージ名やインストール先が変わる他、パッケージの有効化には sclコマンドを使う必要があります。選択支が増えるとそれだけ混乱も増えます。本編で最新版が必要なのは、実際問題として、PHP,Python,Git だけなので、現状では従来通りのyumによる方法で十分とも言えます。

本編では、SCL は採用しません。パッケージのインストールに関しては、これまでどおりにyumだけを使い、最新版はサードパーティのリポジトリから取得し、SCL については、今後の課題としてバッグログしておくことにします。

尚、以下の参考サイトは、SCL の解説と導入からLAMPのインストールまでが詳しく記載されています。

参考

コメント

コメントを入力. Wiki文法が有効です:
 
centos/package.txt · 最終更新: 2020/06/01 21:07 by y2sunlight