にせねこメモ

はてなダイアリーがUTF-8じゃないので移ってきました。

CentOS 6.6 64bit に HandBrake CLI をインストール

CentOS 6.6 の64bit版に HandBrake (のCLIだけ) をインストールしたかったのだけど、Ubuntuみたいにapt-get一発、とは行かないようで…。
ややハマったのでメモ。本当にこれでいいか心配ではあるが…。

こちらを参考に行った。


EPELリポジトリを有効にする(yasm等をyumでインストールするのに必要)

# yum install epel-release

まずは必要なものをインストールする

# yum groupinstall "Development Tools"
# yum install yasm zlib-devel bzip2-devel libogg-devel libtheora-devel \
libvorbis-devel libsamplerate-devel libxml2-devel fribidi-devel \
freetype-devel fontconfig-devel libass-devel dbus-glib-devel \
libgudev1-devel webkitgtk-devel libnotify-devel \
gstreamer-devel gstreamer-plugins-base-devel


その後、リポジトリから入らないものを個別にインストールする。

CentOS 6.5 は /usr の下にデータが置かれ、64bit環境ではライブラリディレクトリが /usr/lib64 となるので ./configure 時に気をつける必要がある。

また、ここでは make install でインストールせずに checkinstallRPM パッケージを作り yum localinstall でインストールした。(checkinstall, yum localinstall の代りに make install とすれば普通にインストールできる)
Checkinstall のインストール・使い方等は次のサイトを参考にした。


以降単に checkinstall としているコマンドは、手元では /usr/local/sbin/checkinstall とフルパスを指定しないといけなかった(sudoからだとコマンドが見つかりませんって出る…)。

また、rpmファイルの名前等は自分がやった時の例なので異なるかもしれない。

$ cd ~
$ wget http://sourceforge.net/projects/lame/files/lame/3.99/lame-3.99.5.tar.gz
$ tar zvxf lame-3.99.5.tar.gz 
$ cd lame-3.99.5
$ ./configure --prefix=/usr --libdir=/usr/lib64
$ make
# checkinstall
# yum localinstall /root/rpmbuild/RPMS/x86_64/lame-3.99.5-1.x86_64.rpm
  • x264
$ cd ~
$ git clone git://git.videolan.org/x264.git 
$ cd x264
$ ./configure --enable-shared --enable-static --prefix=/usr --libdir=/usr/lib64
$ make
# checkinstall
# yum localinstall /root/rpmbuild/RPMS/x86_64/x264-0.148.2579-1.x86_64.rpm

ディレクトリにバージョンが入ってないからか、checkinstall時にバージョンを指定してやる必要あり。


libass (とそれをコンパイルするために必要な fribidi) のインストールは、EPELリポジトリ有効にしたから yum install libass-devel で libass が入るっぽいのでソースからやる必要はないと思われるけど、一応作業してしまったのでメモとして残しておく。たぶん必要ないはず。

  • fribidi (libassのビルドに必要)
$ cd ~
$ wget http://fribidi.org/download/fribidi-0.19.6.tar.bz2
$ tar jvxf fribidi-0.19.6.tar.bz2
$ cd fribidi-0.19.6
$ ./configure --prefix=/usr --libdir=/usr/lib64
$ make
# checkinstall
# yum localinstall /root/rpmbuild/RPMS/x86_64/fribidi-0.19.6-1.x86_64.rpm||
  • libass
$ cd ~
$ wget https://github.com/libass/libass/releases/download/0.12.3/libass-0.12.3.tar.gz
$ tar xvf libass-0.12.3.tar.gz
$ cd libass-0.12.3
$ ./configure --prefix=/usr --libdir=/usr/lib64
$ make
# checkinstall
# yum localinstall /root/rpmbuild/RPMS/x86_64/libass-0.12.3-1.x86_64.rpm

ここでやっとHandBrakeにとりかかる。今回はコマンドラインのみにした。

$ cd ~
$ wget -O HandBrake-0.10.2.tar.bz2 https://handbrake.fr/rotation.php?file=HandBrake-0.10.2.tar.bz2
$ tar jvxf HandBrake-0.10.2.tar.bz2
$ cd HandBrake-0.10.2
$ ./configure --disable-gtk --enable-x265 --prefix=/usr
$ cd build
$ make
# checkinstall
# yum localinstall /root/rpmbuild/RPMS/x86_64/build-0.10.2-1.x86_64.rpm

(2016-10-02 追記)

yatta47.hateblo.jp
どうやら最新のHandBrake version 0.10.5では./configureを実行するとエラーになるようだ。
問題がでているのはmake/configure.pyの821行目である:

   m = re.match( '^([0-9]+)\.([0-9]+)\.([0-9]+)-?(.*)?$', repo.tag )

この行に含まれる正規表現が、(CentOS 6に入っている)Python 2.6.6では不正となるらしく、次のように修正することで./configureが通るようになった。

   m = re.match( '^([0-9]+)\.([0-9]+)\.([0-9]+)-?(.*)$', repo.tag )

'?'を一文字消しただけ。とはいえ等価だと思う。


ちなみに、

import re
re.compile('^([0-9]+)\.([0-9]+)\.([0-9]+)-?(.*)?$')

のようなコードで検証したところ、CentOS 6上のPython 2.6.6ではinvalid expressionと例外が上がってきた一方、Cygwin上のPython 2.7.10では正常に実行された。
エラーを吐くかはバージョンによるのかもしれない。