ふわっとテック日記

テック系のことをメインに書いていきます。go言語/typescript/javascriptが好きです。たまに趣味(筋トレ)の話や日常系の記事も書きたいな〜と思っています。

パッケージ管理ツールrpm/yumことはじめ

今まで仕事でyum installでlinuxに色々なパッケージをインストールして使ってきたものの、正直仕組みの理解についてはかなりあやふやなままだったのである程度勉強してみました。

あくまでさわりの部分ですが、本記事はその備忘録ですd( ̄  ̄)

rpm/yumとは

rpm, yumRed Hat系のLinuxディストリビューションで使用されるパッケージ管理、及びそのコマンドラインツールのことです。

rpm依存関係管理機能を持たないのに対し、
yum依存関係管理機能を持つという違いがあります。


yumrpm形式のパッケージファイルを複数まとめて管理でき、なおかつ依存関係もイイ感じにしてくれるのでほとんどのケースでは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で利用不可のパッケージのみ表示

となります。