1. ホーム
  2. コース一覧
  3. LinuC Level1 v10.0 対策コース(パート1)
  4. パッケージ管理 入門(Redhat系)

中級

LinuC Level1 v10.0 対策コース(パート1)

LinuC Level1 v10.0 対策コース(パート1)34/39

パッケージ管理 入門(Redhat系)

こちらの記事ではリポジトリについて一通り解説します。

この記事では他のシナリオで多く使われているUbuntuではなくCentOSを例にとって説明していきます。

Linuxにおけるリポジトリの概念

Linuxリポジトリ

Linuxにおいてリポジトリとはパッケージを管理しておく場所で、パッケージの倉庫のようなものです。リポジトリはリモートリポジトリとしてリモートでネットワーク上に公開されているものもあれば、自分のPC上に存在するローカルリポジトリもあります。

ネットワーク上のリポジトリからパッケージをインストールする場合は、必要なパッケージだけをダウンロードします。そしてローカル内にあるリポジトリから必要なパッケージをさらにインストールします。

Gitリポジトリ

Gitリポジトリはファイルのバージョンを管理する場所です。アプリケーション開発で重宝されています。バージョンを戻して作業内容を巻き戻す事も可能です。

Linuxのリポジトリを管理するコマンド

Linuxのリポジトリを管理する時はyumコマンドを使用します。他にも、rpmコマンドがありますが、 yum コマンドは依存関係の解決やパッケージのアップデート管理など、パッケージ管理における一部の操作がより便利であるため、今回は yum コマンドを使って解説します。

yumコマンドはCentOSなどで使われているRed Hat系のコマンドです。UbuntuなどのDebian系ではaptコマンドが使われるので注意してください。

# yumコマンド
yum install パッケージ名             # パッケージのインストール
yum install パッケージ名  --resolve  # 依存関係も含めてインストール
yum list installed                  #  インストール済みパッケージ一覧 
yum list updates                    #  アップデート可能パッケージ一覧
yum list available                  #  インストール可能パッケージ一覧
yum list available | grep python    # pythonとつくインストール可能パッケージ一覧
yum list extras                     # 利用できないパッケージ一覧
yum remove パッケージ名               # パッケージの削除
yum search パッケージ名              # パッケージの検索

# aptコマンド
apt-get install パッケージ名     # パッケージのインストール
apt-get remove パッケージ名      # パッケージの削除
apt-cache search 検索ワード      # パッケージの検索

yumコマンドのオプション一覧

オプション説明
install パッケージ名パッケージをインストールする
list パッケージ名パッケージ一覧を表示する
update パッケージ名パッケージをアップデートする
list available パッケージ名インストール可能パッケージ一覧を表示する
list extras パッケージ名利用できないパッケージ一覧を表示する
remove パッケージ名パッケージをアンインストールする
info パッケージ名パッケージの説明を表示する
search all パッケージ名検索ワードに関連するパッケージをすべて表示する
search パッケージ名検索ワードと一致するパッケージをすべて表示する
groupinstall パッケージ名パッケージグループをインストールする

パッケージの管理方法

パッケージのバージョン・依存関係・パッケージの整合性・インストール状態を管理する方法について詳しく解説していきます。

インストール状態を管理

パッケージがインストールされているか確認。

インストール済みのパッケージを特定する場合は、 yum list installed コマンドの出力を grep コマンドで検索します。grepコマンドを使用しないとインストール可能なパッケージが全て表示されます。

yum list installed          # 既にインストールされているパッケージを確認
yum list available | grep python  # pythonのパッケージを探します
yum install パッケージ名           # パッケージをインストール

パッケージのバージョン管理

パッケージのバージョンを確認・アップデート・ダウングレードしたい場合。

より古いバージョンを導入するダウングレードをすることもできます。

yum info パッケージ名        #  パッケージのバージョンを確認
yum list installed | grep ソフトウェア名  #  指定したパッケージのバージョンを確認
yum update            #  アップデートが可能なパッケージをすべてアップデート
yum update パッケージ名     #  パッケージのバージョンをアップデート
yum downgrade パッケージ名  #  パッケージのバージョンをダウングレード

パッケージの依存関係・整合性

パッケージの依存関係を表示したい場合。

パッケージの依存関係と、それらを提供するパッケージの一覧を表示します。

依存関係とは、あるパッケージを動かすのに別のパッケージが必要になるような関係性を言います。いろいろなパッケージを使用していると整合性が取れず依存関係の問題でエラーが発生することがあります。

依存関係の問題を修正するには、依存関係の問題が発生しているパッケージを再インストールします。再インストールしたときにyumコマンドが自動で解決してくれます。しかし、リポジトリに依存関係に必要なパッケージがない場合は手動でインストールします。

yum deplist パッケージ名  # パッケージの依存関係を表示
yum check dependencies # 依存関係のエラーを表示
yum remove パッケージ名   # パッケージとパッケージの依存関係を削除
yum install パッケージ名  # パッケージを再インストール 

リモートリポジトリから直接パッケージをダウンロード

リモートリポジトリから直接パッケージをダウンロードするためには、 yum-utils パッケージの一部である yumdownloader コマンドを使用します。このコマンドは、任意のパッケージとその依存パッケージをダウンロードすることができます。

yum install yum-utils         #  yum-utilsをダウンロード
yum list installed yum-utils # yum-utilsがインストールされているか確認
yumdownloader パッケージ名      #  パッケージをダウンロード
yumdownloader --resolve パッケージ名  # パッケージを依存関係も含めてダウンロード
# パッケージを指定のディレクトリにダウンロード
yumdownloader --destdir ディレクトリ パッケージ 

リポジトリの設定

リポジトリの設定は/etc/yum.repos.d/にあり、リポジトリごとにファイルが分かれておりそれぞれ設定が記載されています。現在ダウンロードされているリポジトリを表示したい場合はrepolistを使用します。

viコマンドやcatコマンドでファイルを開くとリポジトリの名前とリポジトリがどこにあるのか記載されています。手動で追加したい場合は/etc/yum.repos.d/の下にファイル(拡張子は.repo)を作成して、リポジトリ名とリポジトリのurlを書いて保存します。

sudo yum repolist all  # リポジトリのリストを表示する
vi /etc/yum.repos.d/リポジトリ名  # リポジトリファイルの設定
[リポジトリ名]
name=リポジトリ名
baseurl=リポジトリのurl

yumコマンドの設定

yumコマンドの設定ファイルは/etc/yum.confにあります。

cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?proje…
distroverpkg=centos-release

#  This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
#  It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

まとめ

リポジトリの概念とリポジトリを管理するコマンドについて解説しました。

Linuxにおけるリポジトリはパッケージを管理する倉庫のようなものです。

パッケージを使用する時はリモートリポジトリをローカルにダウンロードして、ローカル内のリポジトリからパッケージをインストールします。

リポジトリを管理するコマンドはyumコマンドです。

リモートリポジトリをダウンロードせずに、パッケージのみをダウンロードしたい場合はyumdownloaderコマンドを使用します。

リポジトリの設定は/etc/yum.repos.d/にあります。

yum コマンドの設定ファイルは/etc/yum.confにあります。

記事の内容は理解できましたか?