読者です 読者をやめる 読者になる 読者になる

tkuchikiの日記

Linux やプログラミングについて書きます。

epel の srpm から最新の openvpn の rpm を作成する

openvpn

執筆時最新版の、openvpn 2.3.4 の rpm 作成方法です。

$ yum install -y yum-utils rpm-build rpmdevtools lzo-devel openssl-devel pam-devel pkcs11-helper-devel
$ rpmdev-setuptree
$ yum install -y http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
$ yumdownloader --source openvpn
$ rpm -ivh openvpn-2.3.2-2.el6.src.rpm
$ curl http://swupdate.openvpn.org/community/releases/openvpn-2.3.4.tar.gz -o ~/rpmbuild/SOURCES/openvpn-2.3.4.tar.gz
$ curl http://swupdate.openvpn.org/community/releases/openvpn-2.3.4.tar.gz.asc -o ~/rpmbuild/SOURCES/openvpn-2.3.4.tar.gz.asc
$ sed -i "/^Version:/c\Version:           2.3.4" ~/rpmbuild/SPECS/openvpn.spec

とやって、

$ rpmbuild -ba ~/rpmbuild/SPECS/openvpn.spec

で行けるかと思いきや、

configure: error: PKCS11 enabled but libpkcs11-helper is missing

というエラーがでます。
source を落としてきて、config.log や configure などを見ていると、

"libpkcs11-helper-1 >= 1.11"

という記述がありました。
したがって、libpkcs11-helper-devel のバージョンを上げなくてはいけません。

これも、epel にはいっているので、yumdownloader で srpm を落としてきて、rpmbuild します。

$ yumdownloader --source pkcs11-helper-devel
$ rpm -ivh pkcs11-helper-1.07-5.el6.src.rpm
$ sed -i "/^Version:/c\Version:           1.11" ~/rpmbuild/SPECS/pkcs11-helper.spec
$ sed -i "/^:/c\Release:           1%{?dist}" ~/rpmbuild/SPECS/pkcs11-helper.spec
$ curl -L "http://downloads.sourceforge.net/project/opensc/pkcs11-helper/pkcs11-helper-1.11.tar.bz2" -o ~/rpmbuild/SOURCES/pkcs11-helper-1.11.tar.bz2
$ yum install -y doxygen graphviz
$ rpmbuild -ba ~/rpmbuild/SPECS/pkcs11-helper.spec

で pkcs11-helper-1.11-5.el6.x86_64.rpm と pkcs11-helper-devel-1.11-5.el6.x86_64.rpm が生成されるので、

$ yum install -y ~/rpmbuild/RPMS/x86_64/pkcs11-helper-{,devel-}1.11-5.el6.x86_64.rpm

のようにしてインストールします。

あとは、もう一度 rpmbuild しなおせば、

$ rpmbuild -ba ~/rpmbuild/SPECS/openvpn.spec
$ yum install -y ~/rpmbuild/RPMS/x86_64/openvpn-2.3.4-2.el6.x86_64.rpm

で build & install できます。

SSLv3 が無効になるのは、openvpn 2.3.3 以降だそうなので、
これで openvpn の POODLE 対応ができます。

※追記 openvpn.spec の CHANGELOG にいい感じに追記しておいたほうが良いですね。

あと、pkcs11-helper を使わなければこの手順は行わなくて良いので、
必要なければ openvpn.spec の、

--enable-pkcs11

を削除しても build できます。

以下に、コピペして使えるように必要なコマンドをまとめました。

yum install -y yum-utils rpm-build rpmdevtools lzo-devel openssl-devel pam-devel pkcs11-helper-devel
rpmdev-setuptree
yum install -y http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
yumdownloader --source openvpn
rpm -ivh openvpn-2.3.2-2.el6.src.rpm
curl http://swupdate.openvpn.org/community/releases/openvpn-2.3.4.tar.gz -o ~/rpmbuild/SOURCES/openvpn-2.3.4.tar.gz
curl http://swupdate.openvpn.org/community/releases/openvpn-2.3.4.tar.gz.asc -o ~/rpmbuild/SOURCES/openvpn-2.3.4.tar.gz.asc
sed -i "/^Version:/c\Version:           2.3.4" ~/rpmbuild/SPECS/openvpn.spec
yumdownloader --source pkcs11-helper-devel
rpm -ivh pkcs11-helper-1.07-5.el6.src.rpm
sed -i "/^Version:/c\Version:           1.11" ~/rpmbuild/SPECS/pkcs11-helper.spec
sed -i "/^:/c\Release:           1%{?dist}" ~/rpmbuild/SPECS/pkcs11-helper.spec
curl -L "http://downloads.sourceforge.net/project/opensc/pkcs11-helper/pkcs11-helper-1.11.tar.bz2" -o ~/rpmbuild/SOURCES/pkcs11-helper-1.11.tar.bz2
yum install -y doxygen graphviz
rpmbuild -ba ~/rpmbuild/SPECS/pkcs11-helper.spec
yum install -y ~/rpmbuild/RPMS/x86_64/pkcs11-helper-{,devel-}1.11-5.el6.x86_64.rpm
rpmbuild -ba ~/rpmbuild/SPECS/openvpn.spec
yum install -y ~/rpmbuild/RPMS/x86_64/openvpn-2.3.4-2.el6.x86_64.rpm