Help us understand the problem. What is going on with this article?

パッケージの圧縮を高速化

More than 1 year has passed since last update.

yaourtやめてtrizenにした話

(2019/03/26追記)
yaourtは開発がストップしていて移行を考えていたところ、ちょっと試してみた結果、trizenが割と使い勝手が一緒そうなので移行しました。ただこれ系のAURヘルパー、大体仕組みは同じっぽくて、以下で話したことはtrizenでも通用するので、特に書き換えずに残しておきます。

yaourtが開発終了した話

Requesting official statement from developers · Issue #382 · archlinuxfr/yaourt

AURヘルパー一覧

AUR ヘルパー - ArchWiki

モチベ

ArchLinuxのyaourtはAURと呼ばれる、ユーザが登録するリポジトリからアプリを簡単にインスコできるツール。AURあたまおかしいほど何でもあるので(factorioというアルファ版ゲームのデモが直接インスコできたり)、ArchLinuxを使うモチベの1つになっていたりする。

ただyaourtは「パッケージの圧縮」という、良く分からないステージでやたら時間を食うパッケージが結構あり、気になってTwitterで文句言ったら早くする方法を教えてもらった話。

yaourtの仕組み

このyaourt、そもそも独自のパッケージを手元の環境で作り、それをpacmanに食わせるのを自動で行うだけのツール、らしい。この独自パッケージを作るのにmakepkgというツールを使う。このmakepkgというツールがデフォルトでxzで圧縮しようとするのが問題のようだ。

makepkgはもともと配布するためのパッケージを作るツールなので、xzという高圧縮(かつCPUを馬鹿食いする)形式を使うのは大変正しいのだが、yaourtではぶっちゃけ自分で食わせるだけなのでこんなの時間の無駄でしかない。

makepkgの設定をいじる

そこでmakepkgの設定を変更する。/etc/makepkg.conf で圧縮形式と圧縮に使うコマンドの変更ができる。

ここで圧縮しないことも可能だが、yaourtはデフォルトで/tmpを作業ディレクトリとして使い、ArchLinuxでは/tmpはメモリに展開されることが多いので、ここでは殆どCPUを使わないgz形式を、マルチコアで高速に圧縮可能なpigzを使って圧縮する設定にしてみる。

COMPRESSGZ=(pigz -c -f -n)

PKGEXT='.pkg.tar.gz'

の2行を変更すれば良い。体感値では1分とか掛かってた処理が数秒で終わるようになった。なお、もちろんpigzのインスコが必要なので忘れないように。勿論pigzのインスコが面倒とかならCOMPRESSGZを書き換えなければ良い。お好みにあわせてどうぞ。

ちなみに更に低スペックなマシンならlzo形式とかを検討してもいいかもしれない。なんか設定ファイルみたらCOMPRESSLZOとかCOMPRESSLRZとかあったのでできそう。

ponkotuy
ScalaとかAWSとか好きな社畜です。でもゲームとか鉄道とかはもっと好きです
https://twitter.com/ponkotuy
m3dev
インターネット、最新IT技術を活用し日本・世界の医療を改善することを目指します
https://m3.recruitment.jp/engineer/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away