xrdp でRDP Proxy ゲートウェイ を作る話(3) 〜debian用dpkg作成編〜
前回まで
RockyLinux 上で rpmbuildでRPMパッケージを作成する方法を書きました。
今回はdebian系ディストリビューション用のdpkg形式パッケージを作成する方法をご紹介します。
対象ディストリビューション
ここでは debian GNU/Linux 11.5 を対象とします。
(docker hubにある debian:stable-20221205コンテナを利用して記事を書きました)
対象バージョン
記事執筆時点(2022/12/8)で、以下バージョンを対象とします。
- xrdp v0.9.20
- NeutrinoRDP git hash #836b738
build 環境の準備
build 環境をインストールします。
インストール直後の状態を想定しています。
rootユーザーにて実行してください。
最低限必要なdpkgを追加
リポジトリをupdateして基本的に必要なコマンドをインストールします。
apt update
apt install sudo wget curl vim git
build用ユーザ追加
build用ユーザbuilduser
を作成し、パスワード不要でsudo
できるようにしておきます。
useradd -m -s /bin/bash builduser
usermod -aG sudo builduser
echo "builduser:<任意のパスワード>" | chpasswd
echo "ALL ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/builduser
su - builduser
以降は builduser
で作業します。
dpkg-devのインストールと初期設定
deb パッケージを作成するためのdpkg-dev
をインストールし、初期設定として環境変数にメールアドレスと名前をセットします。これはパッケージ作成の際に使われます。
sudo apt install dpkg-dev
export DEBEMAIL="hoge@example.com"
export DEBFULLNAME="Hoge Hoge"
quilt コマンドの準備とalias設定
deb pkg のパッチ管理コマンドのquilt をインストールしaliasを作ります。
sudo apt install quilt
alias dquilt="quilt --quiltrc=${HOME}/.quiltrc-dpkg"
. /usr/share/bash-completion/completions/quilt
complete -F _quilt_completion -o filenames dquilt
quiltコマンドの初期設定ファイルを作成します。
以下内容で ${HOME}/.quiltrc-dpkg
を作成します。
d=. ; while [ ! -d $d/debian -a `readlink -e $d` != / ]; do d=$d/..; done
if [ -d $d/debian ] && [ -z $QUILT_PATCHES ]; then
QUILT_PATCHES="debian/patches"
QUILT_PATCH_OPTS="--reject-format=unified"
QUILT_DIFF_ARGS="-p ab --no-timestamps --no-index --color=auto"
QUILT_REFRESH_ARGS="-p ab --no-timestamps --no-index"
QUILT_COLORS="diff_hdr=1;32:diff_add=1;34:diff_rem=1;31:diff_hunk=1;33:diff_ctx=35:diff_cctx=33"
if ! [ -d $d/debian/patches ]; then mkdir $d/debian/patches; fi
fi
これで準備は整いました。
NeutrinoRDP のbuild
xrdpのbuildに先立ち、RDP Proxy機能の依存ライブラリである NeutrinoRDPをbuildします。
buildに必要なpkgを追加
NeutrinoRDPをbuildするために必要なpkgを追加インストールします。
sudo apt-get install build-essential git-core cmake libssl-dev libx11-dev libxext-dev libxinerama-dev \
libxcursor-dev libxdamage-dev libxv-dev libxkbfile-dev libasound2-dev libcups2-dev libxml2 libxml2-dev \
libxrandr-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libavutil-dev libavcodec-dev dh-make devscripts lintian git-buildpackage quilt pbuilder \
dput debhelper debmake fakeroot equivs cdbs libpcsclite-dev libpulse-dev xmlto
srcpkg を取得
私のgithubのリポジトリから必要なファイルをダウンロードしてください。
wget https://github.com/TOMATO-ONE/xrdp-proxy/raw/devel/debian/sources/neutrinordp-836b738.tar.gz
wget https://github.com/TOMATO-ONE/xrdp-proxy/raw/devel/debian/debian11/srcpkg/neutrinordp_1.0.1%2B836b738-1.debian.tar.xz
wget https://github.com/TOMATO-ONE/xrdp-proxy/raw/devel/debian/debian11/srcpkg/neutrinordp_1.0.1%2B836b738-1.dsc
ln -s ./neutrinordp-836b738.tar.gz neutrinordp_1.0.1+836b738.orig.tar.gz
Source 展開
dpkg-source コマンドを使ってソースコードを展開してください。
dpkg-source -x neutrinordp_1.0.1+836b738-1.dsc
cd neutrinordp-1.0.1+836b738/
patch 適用
追加でpatchを適用する場合は以下を実行してください。
(既に生成済みのdebian source packageをそのままbuildする場合は不要です)
while dquilt push; do dquilt refresh; done
build
dokg-buildpackage
コマンドでdeb pkgをbuildします。
dpkg-buildpackage -us -uc
作業ディレクトリの親ディレクトリに、debファイルとソースpkgが生成されます。
以下のようなファイルが生成されているはずです。
cd ..
ls .
libneutrinordp-dbgsym_1.0.1+836b738-1_amd64.deb
libneutrinordp-dev_1.0.1+836b738-1_amd64.deb
libneutrinordp-plugins-dbgsym_1.0.1+836b738-1_amd64.deb
libneutrinordp-plugins_1.0.1+836b738-1_amd64.deb
libneutrinordp_1.0.1+836b738-1_amd64.deb
neutrinordp-1.0.1+836b738
neutrinordp-836b738.tar.gz
neutrinordp-dbgsym_1.0.1+836b738-1_amd64.deb
neutrinordp_1.0.1+836b738-1.debian.tar.xz
neutrinordp_1.0.1+836b738-1.dsc
neutrinordp_1.0.1+836b738-1_amd64.buildinfo
neutrinordp_1.0.1+836b738-1_amd64.changes
neutrinordp_1.0.1+836b738-1_amd64.deb
neutrinordp_1.0.1+836b738.orig.tar.gz
RDP Proxy 可能な xrdpをbuildするためには libneutrinordp-dev
と libneutrinordp
が必要になります。
xrdpのbuild
続いてxrdpのbuildを行います。
前段で作成したNutrinoRDPをインストールする
RDP Proxy機能のために必要な NeutrinoRDPのライブラリをインストールします。
sudo apt install \
./libneutrinordp_1.0.1+836b738-1_amd64.deb \
./libneutrinordp-dev_1.0.1+836b738-1_amd64.deb
buildに必要なpkgを追加
xrdpのbuildに必要なpkgをインストールします。
sudo apt install \
dh-make devscripts lintian git-buildpackage quilt pbuilder \
dput debhelper debmake fakeroot equivs cdbs check libfuse-dev libopus-dev \
libpam0g-dev libssl-dev nasm systemd libfuse2 libsubunit-dev libsubunit0
srcpkg を取得
私のgithub のリポジトリから以下ファイルを取得してください。
標準のdebian source pkgとの主な差分は xrdpのバージョンを引き上げていることと、--enable-neutrinordp
オプションを加えていることです。
wget https://github.com/TOMATO-ONE/xrdp-proxy/raw/devel/debian/sources/xrdp-0.9.20.tar.gz
wget https://github.com/TOMATO-ONE/xrdp-proxy/raw/devel/debian/debian11/srcpkg/xrdp_0.9.20-1.debian.tar.xz
wget https://github.com/TOMATO-ONE/xrdp-proxy/raw/devel/debian/debian11/srcpkg/xrdp_0.9.20-1.dsc
ln -s ./xrdp-0.9.20.tar.gz xrdp_0.9.20.orig.tar.gz
xrdpのSource 展開
dpkg-source コマンドでソースファイルを展開します。
dpkg-source -x xrdp_0.9.20-1.dsc
cd xrdp-0.9.20
patch 適用
追加でpatchを適用する場合は以下を実行してください。
(既に生成済みのdebian source packageをそのままbuildする場合は不要です)
while dquilt push; do dquilt refresh; done
xrdpのbuild
dpkg-buildpackage
コマンドでbuildします。
dpkg-buildpackage -us -uc
親ディレクトリに、debファイルとソースpkgが展開されます。
cd ..
ls
xrdp-0.9.20
xrdp-0.9.20.tar.gz
xrdp-dbgsym_0.9.20-1_amd64.deb
xrdp_0.9.20-1.debian.tar.xz
xrdp_0.9.20-1.dsc
xrdp_0.9.20-1_amd64.buildinfo
xrdp_0.9.20-1_amd64.changes
xrdp_0.9.20-1_amd64.deb
xrdp_0.9.20.orig.tar.gz
xrdp_0.9.20-1_amd64.deb
が RDP Proxy 機能を持った xrdp となります。
これを以下のようにインストールします。
sudo apt install ./xrdp_0.9.20-1_amd64.deb
以上で終了です。
補足
私のgithubリポジトリでは ubuntu 20.04LTS用と 22.04LTS用のsrcpkgも公開しておりますので、よろしければご参考ください。wgetで取得するファイルを差し替えていただければ手順は今回ご紹介したのと同様の方法で可能です。
まとめ
今回はdebian11での package build方法をご紹介しました。
次回予告
xrdp の RDP Proxy 設定についてご紹介する予定です。
参考とさせていただいたURL