LoginSignup
1
0

More than 5 years have passed since last update.

SoftEther VPN のCentOS7 用 rpm ファイルを作成する

Last updated at Posted at 2018-10-15

はじめに

CentOS7 のローカルビルド環境を用意し、SoftEther VPN をソースコードからビルドして rpm パッケージを作成します。

いわゆるオレオレパッケージの作成です。個人的にはオレオレパッケージはできるだけ作成しない方針なのですが、ちょっと自分に合ったものが発見できなかったため、作成することにしました。

rpm ファイルを作成するコマンドはいくつかありますが、なかなか調子のよいファイルを作成できなかったため、ここでは真面目に rpmbuild の spec ファイルを用意してビルドします。

SoftEther VPN には centos 用の spec ファイルが同梱されていますので、今回はそれをベースとして使わせていただき、少し独自の調整をしました。

バージョンに関しては、適切最新版などに読み替えてください。

必要パッケージのインストール

rpmbuild の実行と、Softether VPN のコンパイルに必要なパッケージをインストールします。

console
# yum install -y make gcc rpm-build wget ncurses-devel openssl-devel readline-devel

rpmbuild に必要なディレクトリを作成します。

console
$ mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
$ echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros

rpm ファイルの作成

www.softether-download.com より SoftEther VPN を入手し(giuhub でもよいと思います)、rpmbuild でビルドできるようにファイルを配置します。

console
$ cd ~/rpmbuild/SOURCES
$ wget http://www.softether-download.com/files/softether/v4.28-9669-beta-2018.09.11-tree/Source_Code/softether-src-v4.28-9669-beta.tar.gz

spec ファイルを編集します。元となるファイルは softether-src-v4.28-9669-beta.tar.gz を解凍したディレクトリ中にあります。今回は以下のように修正しました。

簡単に修正内容を挙げますと……

  • バージョンの調整
  • init スクリプトの利用を廃止し、systemd 設定ファイルを利用するように修正
  • %post、%postun、%preun 設定の廃止。

最後のは重要視するかたも多い気がするので、気になるかたは修正を入れる方がいいと思います。

~/rpmbuild/SPECS/softethervpn.spec
%define majorversion 4
%define minorversion 28
%define buildversion 9669
%define dateversion 2018.09.11
%define buildrelease beta

Name:           softethervpn
Version:        %{majorversion}.%{minorversion}.%{buildversion}
Release:        1%{?dist}
Summary:        An Open-Source Free Cross-platform Multi-protocol VPN Program

Group:          Applications/Internet
License:        GPLv2
URL:            http://www.softether.org/
Source0:        http://www.softether-download.com/files/softether/v%{majorversion}.%{minorversion}-%{buildversion}-%{buildrelease}-%{dateversion}-tree/Source_Code/softether-src-v%{majorversion}.%{minorversion}-%{buildversion}-%{buildrelease}.tar.gz

BuildRequires:  ncurses-devel
BuildRequires:  openssl-devel
BuildRequires:  readline-devel

Requires(post):         chkconfig
Requires(postun):       initscripts
Requires(preun):        chkconfig
Requires(preun):        initscripts

%description
SoftEther VPN is one of the world's most powerful and easy-to-use multi-protocol VPN software. It runs on Windows, Linux, Mac, FreeBSD, and Solaris.

%prep
%setup -q -n v%{majorversion}.%{minorversion}-%{buildversion}
sed -e 's/\/opt\//\/usr\//g' systemd/softether-vpnserver.service > systemd/softether-vpnserver.service.new
sed -e 's/\/opt\//\/usr\//g' systemd/softether-vpnbridge.service > systemd/softether-vpnbridge.service.new
sed -e 's/\/opt\//\/usr\//g' systemd/softether-vpnclient.service > systemd/softether-vpnclient.service.new

%build
%ifarch i386 i686
cp centos/SOURCES/linux_32bit.mak Makefile
%else
cp centos/SOURCES/linux_64bit.mak Makefile
%endif
make

%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/usr/lib/systemd/system/multi-user.target.wants/
install -m 755 -d $RPM_BUILD_ROOT/usr/bin/
install -m 755 centos/SOURCES/scripts/vpnserver $RPM_BUILD_ROOT/usr/bin/vpnserver
install -m 755 centos/SOURCES/scripts/vpnbridge $RPM_BUILD_ROOT/usr/bin/vpnbridge
install -m 755 centos/SOURCES/scripts/vpnclient $RPM_BUILD_ROOT/usr/bin/vpnclient
install -m 755 centos/SOURCES/scripts/vpncmd $RPM_BUILD_ROOT/usr/bin/vpncmd
install -m 644 systemd/softether-vpnserver.service.new $RPM_BUILD_ROOT/usr/lib/systemd/system/softether-vpnserver.service
install -m 644 systemd/softether-vpnbridge.service.new $RPM_BUILD_ROOT/usr/lib/systemd/system/softether-vpnbridge.service
install -m 644 systemd/softether-vpnclient.service.new $RPM_BUILD_ROOT/usr/lib/systemd/system/softether-vpnclient.service

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root,-)
%{_usr}/bin/vpnserver
%{_usr}/bin/vpnbridge
%{_usr}/bin/vpnclient
%{_usr}/bin/vpncmd
%{_usr}/vpnserver/hamcore.se2
%{_usr}/vpnserver/vpnserver
%{_usr}/vpnbridge/hamcore.se2
%{_usr}/vpnbridge/vpnbridge
%{_usr}/vpnclient/hamcore.se2
%{_usr}/vpnclient/vpnclient
%{_usr}/vpncmd/hamcore.se2
%{_usr}/vpncmd/vpncmd
%{_usr}/vpnserver/
%{_usr}/vpnbridge/
%{_usr}/vpnclient/
%{_usr}/vpncmd/
%{_usr}/lib/systemd/system/softether-vpnserver.service
%{_usr}/lib/systemd/system/softether-vpnbridge.service
%{_usr}/lib/systemd/system/softether-vpnclient.service
%doc AUTHORS.TXT BUILD_UNIX.TXT BUILD_WINDOWS.TXT ChangeLog ChangeLog.txt LICENSE LICENSE.TXT README README.TXT THIRD_PARTY.TXT WARNING.TXT

#%post
#systemctl enable softether-vpnserver

#%postun
#if [ "$1" -ge "1" ]; then
#       /sbin/service vpnserver condrestart >/dev/null 2>&1 || :
#fi

#%preun
#if [ $1 -eq 0 ]; then
#        systemctl stop softether-vpnserver
#        systemctl disable softether-vpnserver
#fi

%changelog
* Wed Sep 30 2015 Jeff Tang <mrjefftang@gmail.com> - 4.19.9582-1
- Update upstream to 4.19.9582-beta

* Wed Sep 30 2015 Jeff Tang <mrjefftang@gmail.com> - 4.19.9577-1
- Update upstream to 4.19.9577

* Wed Jan 29 2014 Dexter Ang <thepoch@gmail.com> - 4.04.9412-2
- Made initscript more Fedora/RH-like.
- initscript currently using killall. Need to fix this.

* Tue Jan 21 2014 Dexter Ang <thepoch@gmail.com>
- Initial release

rpm ファイルを作成します

console
$ rpmbuild -ba --clean ~/rpmbuild/SPECS/softethervpn.spec

成功すると ~/rpmbuild/RPMS ディレクトリに rpm ファイルが生成されていると思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0