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
にあります。
記事の内容は理解できましたか?