CentOS 7でdeltarpmを有効化、無効化する方法

CentOS 7でdeltarpmを有効化、無効化する方法

CentOS 7をMinimalでインストールすると、yumコマンドでパッケージを更新した際に次のようなログが出力されることがあります。

Delta RPMs disabled because /usr/bin/applydeltarpm not installed.

これは、deltarpmがインストールされていない場合に出力されるようです。

そこでここでは、deltarpmの概要とdeltarpmを有効化/無効化する方法を紹介します。

deltarpmとは

deltarapmは、インストール済みパッケージを更新するときに、新しいパッケージ全体をダウンロードするのではなく、ローカルに保存されている古いパッケージとの差分だけをダウンロードして更新できるようにする機能です。

これにより、通信帯域を節約したり、リポジトリサーバー(ダウンロード元)にかかる負荷を軽減することができ、CentOS 7※1でも利用することができます。

処理の流れとしては、差分パッケージ(drpm)をダウンロードしたら、ローカルにある古いフルパッケージと、ダウンロードした差分パッケージを基に、新しいフルパッケージ(rpm)が生成され、あとは、通常のパッケージと同じように処理されます。

このように便利に聞こえるdeltarpmですが、トレードオフな要素として、新しいフルパッケージを生成する際に、CPUにそれなりの負荷がかかることが挙げられます。

そのため、古いマシンなどでCPU性能が低い場合、deltarpmを利用しないほうがパッケージの更新処理が早いケースもあるようです。

deltarpmパッケージはOS必須の機能ではないため、CentOS 7をMinimalインストールした場合にはインストールされていません。利用する場合は、deltarpmパッケージをインストールする必要があります。

参考:RHEL7: How to get started with delta rpms. - CertDepot

deltarpmの有効化

CentOS 7をMinimalインストールした環境では、設定的にはdeltarpmは有効なようですが、必要なパッケージ「deltarpm」がインストールされていないため「yum upate」を実行した際に、冒頭で紹介したようなログが表示されます。

deltarpmパッケージは、次の手順でカンタンにインストールできます。

# yum -y install deltarpm

deltarpmがインストールされている環境で「yum update」を実行すると、以下ようなログが出力され、差分パッケージがダウンロードされていることが確認できます。

以下の例では「フルパッケージのダウンロードサイズが731KBであるのに対して、差分パッケージのダウンロードサイズが108KBで、85%節約できました」と表示されています。

・・・(省略)
Downloading packages:
Delta RPMs reduced 731 k of updates to 108 k (85% saved)
・・・(省略)

deltarpmの無効化

deltarpmがインストールされていないCentOS 7環境では、冒頭のようなログはでますが、yumが自動的にフルパッケージをダウンロードしてくれるので、何もする必要はありません。

deltarpmがインストールされている場合は、以下のファイルを編集することで、明示的にdeltarpmを無効化できます。

# vi /etc/yum.conf
[main]
deltarpm=0 ←この行を追記します。

あとがき

何回か、deltarpmを無効化したり有効化したりして、更新処理にかかる時間を比較してみましたが、最近のCPUだと、誤差程度の差しかなく、一般的な環境であれば、有効・無効どちらでも良いと感じました。

ただ、古いCPUを搭載したマシンの場合などで、システムリソースを節約したい場合は無効化することで、それなりの効果はあると思います。