今まで仕事でyum installでlinuxに色々なパッケージをインストールして使ってきたものの、正直仕組みの理解についてはかなりあやふやなままだったのである程度勉強してみました。
あくまでさわりの部分ですが、本記事はその備忘録ですd( ̄  ̄)
rpm/yumとは
rpm, yumはRed Hat系のLinuxディストリビューションで使用されるパッケージ管理、及びそのコマンドラインツールのことです。
rpmは依存関係管理機能を持たないのに対し、
yumは依存関係管理機能を持つという違いがあります。
yumはrpm形式のパッケージファイルを複数まとめて管理でき、なおかつ依存関係もイイ感じにしてくれるので
ほとんどのケースではyumコマンドを用いてパッケージ管理することになると思います。
rpm
パッケージ管理ツール、コマンドラインツール、及びパッケージファイルの形式のこと。
Red Hat系のLinuxではrpm形式のパッケージファイルをインストールするなどして使用します。
rpmコマンドを用いて個々のパッケージファイルの操作などが行えます。ただしパッケージ間の依存関係は管理してくれません。
rpmbuildコマンド
rpmパッケージのビルドをするためのコマンドです。
SPECファイルと呼ばれるファイルを参照し、rpmパッケージを作成してくれます。
SPECファイルはパッケージを作成するための手順を記載したレシピのようなものです。
-b
オプション : SPECファイルを指定-ba
オプション: RPMファイルとSRPMファイルを作成-bb
オプション: RPMファイルのみ作成-bs
オプション: SRPMファイルのみ作成
SRPMファイル
xxx.src.rpmの形式。これをもとにRPMのリビルドができます。
RPM作成に必要なSPECファイルなどのアーカイブとなっています。
SRPMファイルを用いたビルドはこのようにできます。
$ rpmbuild --rebuild xxx.src.rpm
その他rpmコマンド
rpm -ivh xxxxxxxxx.rpm
パッケージをインストールします。
rpm -qa
インストール済みのパッケージ一覧を表示します。
rpm -qi xxxxxxxxx.rpm
パッケージファイルの情報を表示します。
rpm -ql xxxxxxxxx.rpm
パッケージに内包されるファイル一覧を表示します。
yum
数多あるパッケージファイルをまとめて管理、依存関係もよしなにイイ感じにしてくれる便利なツールです。
リポジトリ(後述)ベースでパッケージを管理しており、リポジトリ自体も多く存在します。また自分で作成することも可能です。
操作もリポジトリベースで行われ、リポジトリからrpmファイルを検索したりインストールしたりといった操作になります。
リポジトリ
数あるパッケージを保管、配布している場所のことです。
/etc/yum.conf
や /etc/yum.repos.d/xxx.repo
ファイルでリポジトリを管理します。
yum repolist
コマンドによってリポジトリの表示ができます。ステータス無効になっているリポジトリのパッケージは基本的には操作できません。
repoファイルのリポジトリの中でenabled=0
となっているリポジトリは無効となります。
[samplerepo]
name=sample-repo
baseurl=http://sample/repo
enabled=0
上記の例のように無効となっているリポジトリも、次のようにコマンドでリポジトリを指定することでパッケージのインストールなどが可能となります。
$ yum --enablerepo=samplerepo install xxxxxxx
createrepoコマンド
リポジトリを作成できるコマンドです。
rpmファイルを集めたディレクトリパスを指定し、対象ディレクトリのファイルでリポジトリを作成します。
# pwd
/tmp/addrepo
# ls -l
~~~~~... xxxxxxxxxxxxxxx.rpm
~~~~~... yyyyyyyyyyyyyy.rpm
~~~~~... zzzzzzzzzzzzzz.rpm
このコマンドにより対象ディレクトリにrepodataという、リポジトリのメタデータ情報を格納するディレクトリが作成されます。
# ls -l
~~~~~... xxxxxxxxxxxxxxx.rpm
~~~~~... yyyyyyyyyyyyyy.rpm
~~~~~... zzzzzzzzzzzzzz.rpm
~~~~~... repodata
createrepoコマンド実行後は、対象ディレクトリを上述のrepoファイルに記述し、yumコマンドにリポジトリとして認識させて使用する、という流れになります。
# vim /etc/yum.repos.d/add_repo.repo
[add_repo]
name=Add Repo
baseurl=file:///tmp/addrepo
その他yumコマンド
yum repolist [all/enabled/disabled]
リポジトリの一覧を表示します。
- オプション未指定で有効のみ表示
- allで有効/無効全て表示
- enabledで有効のみ表示
- disabledで無効のみ表示
となります。
yum list [installed/available/extras]
パッケージ一覧を表示します。
- オプション未指定で全てのパッケージ表示
- installedでインストール済みのみ表示
- availableで未インストールの利用可能パッケージのみ表示
- extarsで利用不可のパッケージのみ表示
となります。
コメント