■SoftEtherのソースコード(GPLv2)が公開されたので、debパッケージにしてみる。
設定や起動方法はマニュアルの通りなので、今回は特に記載しない。
参考:SoftEther VPN のソースコードを GPLv2 オープンソース・ライセンスで公開
http://ja.softether.org/9-about/news/800-open-source
コンパイル環境とdebパッケージ作成ツール、
前提条件のツールの導入。
■Wheezyでコンパイル、debパッケージ作成ツール、前提条件パッケージを導入する。
$ echo "build-essential dh-make debhelper devscripts
checkinstall
libssl-dev libreadline6-dev" | sudo apt-get install -y `xargs`
■とりあえず、ソースコードをgitからダウンロード。
$ git clone https://github.com/SoftEtherVPN/SoftEtherVPN.git
$ cd SoftEtherVPN
■「Makefile」が無いので作る。
$ ./configure
---------------------------------------------------------------------
SoftEther VPN for Unix
Copyright (c) SoftEther VPN Project at University of Tsukuba, Japan.
Copyright (c) Daiyuu Nobori. All Rights Reserved.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 2 as published by the Free Software Foundation.
---------------------------------------------------------------------
Welcome to the corner-cutting configure script !
Select your operating system below:
1: Linux
2: FreeBSD
3: Solaris
4: Mac OS X
Which is your operating system (1 - 4) ? : 1
Select your CPU bits below:
1: 32-bit
2: 64-bit
Which is the type of your CPU (1 - 2) ? : 2
The Makefile is generated. Run 'make' to build SoftEther VPN.
■とりあえずcheckinstall
$ sudo checkinstall
checkinstall 1.6.2, Copyright 2009 Felipe Eduardo Sanchez Diaz Duran
このソフトウェアはGNU GPLの下でリリースしています。
*****************************************
**** Debian package creation selected ***
*****************************************
*** Warning: The package name "SoftEtherVPN" contains upper case
*** Warning: letters. dpkg might not like that so I changed
*** Warning: them to lower case.
このパッケージは以下の内容で構成されます:
0 - Maintainer: [ root@vmx-rdebian ]
1 - Summary: [ Package created with checkinstall 1.6.2 ]
2 - Name: [ softethervpn ]
3 - Version: [ 20140105 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ checkinstall ]
7 - Architecture: [ amd64 ]
8 - Source location: [ SoftEtherVPN ]
9 - Alternate source location: [ ]
10 - Requires: [ ]
11 - Provides: [ softethervpn ]
12 - Conflicts: [ ]
13 - Replaces: [ ]
変更するものの番号を入力してください。Enterで続行します:
Installing with make install...
========================= インストールの結果 ===========================
cp src/bin/BuiltHamcoreFiles/unix/hamcore.se2 bin/vpnserver/hamcore.se2
cp: 通常ファイル 'bin/vpnserver/hamcore.se2' を作成できません: そのようなファイルやディレクトリはありません
make: *** [bin/vpnserver/hamcore.se2] エラー 1
**** インストールは失敗しました。パッケージの作成を中断します
クリーンアップ..OK
Bye.
■ディレクトリを作成して再度実行。
$ mkdir -p bin/vpnserver
$ sudo checkinstall
■一度削除
$ sudo dpkg -r softethervpn
$ ls *.deb
softethervpn_20140105-1_amd64.deb
■debパッケージを使ってインストール。
$ sudo dpkg -i softethervpn_20140105-1_amd64.deb
$ dpkg -L softethervpn
/.
/usr
/usr/bin
/usr/bin/vpncmd
/usr/bin/vpnbridge
/usr/bin/vpnserver
/usr/bin/vpnclient
/usr/vpncmd
/usr/vpncmd/hamcore.se2
/usr/vpncmd/vpncmd
/usr/vpnbridge
/usr/vpnbridge/hamcore.se2
/usr/vpnbridge/vpnbridge
/usr/share
/usr/share/doc
/usr/share/doc/softethervpn
/usr/share/doc/softethervpn/LICENSE
/usr/share/doc/softethervpn/README.TXT
/usr/share/doc/softethervpn/README
/usr/vpnserver
/usr/vpnserver/hamcore.se2
/usr/vpnserver/vpnserver
/usr/vpnclient
/usr/vpnclient/hamcore.se2
/usr/vpnclient/vpnclient
■お片付け
$ sudo make clean
$ sudo rm Makefile
$ sudo rm -fr bin/
■32bit版のdebパッケージの作成
$ ./configure
...
Select your operating system below:
1: Linux
2: FreeBSD
3: Solaris
4: Mac OS X
Which is your operating system (1 - 4) ? : 1
Select your CPU bits below:
1: 32-bit
2: 64-bit
Which is the type of your CPU (1 - 2) ? : 1
■64bit版なので、32bit版のdpkgインストールには失敗するが、
パッケージは出来る。
$ mkdir -p bin/vpnserver
$ sudo checkinstall
変更するものの番号を入力してください。Enterで続行します: 7
アーキテクチャを入力:
>> i386
find /var/tmp/ -type -f -name "dpkginstall.log" -exec cat {}\;
$ ls *.deb
softethervpn_20140105-1_amd64.deb softethervpn_20140105-1_i386.deb
■32bit版はインストールされないので、
debパッケージ情報を確認。
$ dpkg -I softethervpn_20140105-1_i386.deb
新形式 debian パッケージ、バージョン 2.0。
サイズ 7148614 バイト: コントロールアーカイブ = 311 バイト。
0 バイト、 0 行 conffiles
226 バイト、 9 行 control
Package: softethervpn
Priority: extra
Section: checkinstall
Installed-Size: 10672
Maintainer: root@vmx-rdebian
Architecture: i386
Version: 20140105-1
Provides: softethervpn
Description: Package created with checkinstall 1.6.2
■debパッケージに含まれるファイルの一覧の確認。
$ dpkg -c softethervpn_20140105-1_i386.deb | awk '{print $NF}'
./
./usr/
./usr/bin/
./usr/bin/vpncmd
./usr/bin/vpnbridge
./usr/bin/vpnserver
./usr/bin/vpnclient
./usr/vpncmd/
./usr/vpncmd/hamcore.se2
./usr/vpncmd/vpncmd
./usr/vpnbridge/
./usr/vpnbridge/hamcore.se2
./usr/vpnbridge/vpnbridge
./usr/share/
./usr/share/doc/
./usr/share/doc/softethervpn/
./usr/share/doc/softethervpn/LICENSE
./usr/share/doc/softethervpn/README.TXT
./usr/share/doc/softethervpn/README
./usr/vpnserver/
./usr/vpnserver/hamcore.se2
./usr/vpnserver/vpnserver
./usr/vpnclient/
./usr/vpnclient/hamcore.se2
./usr/vpnclient/vpnclient
■別の環境に依存関係を解決してインストール
$ sudo apt-get install -y gdebi
$ sudo gdebi softethervpn_20140105-1_amd64.deb
Reading package lists... Done
Building dependency tree
Reading state information... Done
Building data structures... Done
Building data structures... Done
Package created with checkinstall 1.6.2
ソフトウェアパッケージをインストールしますか? [y/N]:y
以前に未選択のパッケージ softethervpn を選択しています。
(データベースを読み込んでいます ... 現在 71050 個のファイルとディレクトリがインストールされています。)
(softethervpn_20140105-1_amd64.deb から) softethervpn を展開しています...
softethervpn (20140105-1) を設定しています ...
■RPM化してみる。
$ sudo apt-get install -y alien
$ sudo alien -r softethervpn_20140105-1_amd64.deb
softethervpn-20140105-2.x86_64.rpm generated
$ sudo alien -r softethervpn_20140105-1_i386.deb
softethervpn-20140105-2.i386.rpm generated
■rpmの情報を確認してみる。
$ rpm -qip softethervpn-20140105-2.x86_64.rpm
Name : softethervpn
Version : 20140105
Release : 2
Architecture: x86_64
Install Date: (not installed)
Group : Converted/checkinstall
Size : 10847333
License : see /usr/share/doc/softethervpn/copyright
Signature : (none)
Source RPM : softethervpn-20140105-2.src.rpm
Build Date : 2014年01月05日 05時39分24秒
Build Host : vmx-rdebian.labunix.net
Relocations : (not relocatable)
Summary : Package created with checkinstall 1.6.2
Description :
(Converted from a deb package by alien version 8.87.)
■依存関係の確認。
$ rpm -qRp softethervpn-20140105-2.x86_64.rpm
/bin/sh
libc.so.6()(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libcrypto.so.1.0.0()(64bit)
libcrypto.so.1.0.0(OPENSSL_1.0.0)(64bit)
libdl.so.2()(64bit)
libm.so.6()(64bit)
libncurses.so.5()(64bit)
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit)
libpthread.so.0(GLIBC_2.3.2)(64bit)
libreadline.so.6()(64bit)
librt.so.1()(64bit)
librt.so.1(GLIBC_2.2.5)(64bit)
libssl.so.1.0.0()(64bit)
libssl.so.1.0.0(OPENSSL_1.0.0)(64bit)
libtinfo.so.5()(64bit)
libz.so.1()(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
■余談。
■「bin/vpnserver」はインストールディレクトリの他にカレントディレクトリにも作る
「checkinstall」実行時の固有の問題。
普通に「./configure;make;make install」する場合、
「make」時にも「/tmp」の為にroot権限が必要。
また、「make uninstall」の代わりに「make -n install」でアンインストールだったりする。
$ make
Fatal error: can’t create tmp/objs/Mayaqua/Cfg.o: Permission denied
make: *** [tmp/objs/Mayaqua/Cfg.o] エラー 1
$ ls -ld /tmp/
drwxrwxrwt 13 root root 4096 1月 5 06:39 /tmp/
$ sudo make -n install
echo
echo "--------------------------------------------------------------------"
echo "Installation completed successfully."
echo
echo "Execute 'vpnserver start' to run the SoftEther VPN Server background service."
echo "Execute 'vpnbridge start' to run the SoftEther VPN Bridge background service."
echo "Execute 'vpnclient start' to run the SoftEther VPN Client background service."
echo "Execute 'vpncmd' to run SoftEther VPN Command-Line Utility to configure VPN Server, VPN Bridge or VPN Client."
echo "--------------------------------------------------------------------"
echo
■dpkgで、debパッケージをインストールする前に、
依存関係を確認する方法が分からなかったので、半ば無理やり確認した。
以下のようなシンプルなコマンドだったので、とても助かった。
$ which vpnserver | grep . `xargs`
/usr/vpnserver/vpnserver "$@"
exit $?
■apt-fileを使った依存関係の一覧
$ ldd /usr/vpnserver/vpnserver | \
awk '($(NF-1) != "=>") {print $(NF-1)}' | \
for list in `xargs`;do apt-file search "$list";done |
awk -F\: '{print $1}' | sort -u
libc6
libncurses5
libncurses5-dbg
libreadline6
libreadline6-dbg
libssl1.0.0
libssl1.0.0-dbg
libtinfo5
zlib1g
zlib1g-dbg
■dbg関連が入っていないが、aptで入れる事は出来る。
ライブラリの名前が同じなので、dbgにしかない呼び出しがなければ、
動作に特に影響はなさそう。
以下の「必要なソフトウェア」にもdbgパッケージが必要とは記載されていない。
参考:SoftEther VPN を UNIX 上でビルドする方法
http://ja.softether.org/5-download/src/2.unix
$ echo \
"
libc6
libncurses5
libncurses5-dbg
libreadline6
libreadline6-dbg
libssl1.0.0
libssl1.0.0-dbg
libtinfo5
zlib1g
zlib1g-dbg
" | for list in `xargs`;do dpkg -l | \
awk '{print $2}' | grep "${list}" || apt-cache show "$list" | grep ^Package; \
done | sort
Package: libncurses5-dbg
Package: libreadline6-dbg
Package: libssl1.0.0-dbg
Package: zlib1g-dbg
libc6-dev:amd64
libc6:amd64
libncurses5:amd64
libreadline6:amd64
libssl1.0.0:amd64
libtinfo5:amd64
zlib1g-dev:amd64
zlib1g:amd64
■依存関係の詳細は以下。
$ ldd /usr/vpnserver/vpnserver | \
awk '($(NF-1) != "=>") {print $(NF-1)}' | \
for list in `xargs`;do apt-file search "$list";done | sort
libc6: /lib/x86_64-linux-gnu/libc.so.6
libc6: /lib/x86_64-linux-gnu/libdl.so.2
libc6: /lib/x86_64-linux-gnu/libm.so.6
libc6: /lib/x86_64-linux-gnu/libpthread.so.0
libc6: /lib/x86_64-linux-gnu/librt.so.1
libc6: /lib64/ld-linux-x86-64.so.2
libncurses5-dbg: /usr/lib/debug/lib/x86_64-linux-gnu/libncurses.so.5.9
libncurses5-dbg: /usr/lib/debug/lib/x86_64-linux-gnu/libtinfo.so.5.9
libncurses5: /lib/x86_64-linux-gnu/libncurses.so.5
libncurses5: /lib/x86_64-linux-gnu/libncurses.so.5.9
libreadline6-dbg: /usr/lib/debug/lib/x86_64-linux-gnu/libreadline.so.6.2
libreadline6: /lib/x86_64-linux-gnu/libreadline.so.6
libreadline6: /lib/x86_64-linux-gnu/libreadline.so.6.2
libssl1.0.0-dbg: /usr/lib/debug/usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0
libssl1.0.0-dbg: /usr/lib/debug/usr/lib/x86_64-linux-gnu/libssl.so.1.0.0
libssl1.0.0: /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0
libssl1.0.0: /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0
libtinfo5: /lib/x86_64-linux-gnu/libtinfo.so.5
libtinfo5: /lib/x86_64-linux-gnu/libtinfo.so.5.9
zlib1g-dbg: /usr/lib/debug/lib/x86_64-linux-gnu/libz.so.1.2.7
zlib1g: /lib/x86_64-linux-gnu/libz.so.1
zlib1g: /lib/x86_64-linux-gnu/libz.so.1.2.7