Ubuntu18.04にデスクトップ版Linphoneをインストールします。Flatpak版も提供されていますが、デスクトップ版Linphoneの最新版をソースからビルドします。ビルドの際の依存パッケージ関連エラーなどを回避する為、Linphoneの開発ツールであるlinphone-sdk(for Ubuntu18.04)の役割をDockerコンテナに担わせます。
ソースファイル
GitLab
Github
ビルド・インストール環境
Linux 4.15.0-55-generic/Ubuntu18.04
事前準備
事前に必要なパッケージは以下の通りです。
Docker CE(linphone-sdkのコンテナイメージ作成・コンテナ起動)
Dockerのインストールについては以下フォーラム記事を参照願います。
ビルド・インストール手順
以下ビルド・インストール手順です。
- プロジェクトフォルダの作成
- linphone-sdkコンテナイメージの作成とコンテナの起動
- ソースファイルのダウンロード(git clone)
- prepare.pyによるビルドスクリプトの作成
- makeコマンドによるビルド
- debパッケージのインストール
- パスの指定
- Linphoneの起動、動作確認
1.プロジェクトフォルダの作成
以下作業ディレクトリを作成、作業ディレクトリ内に移動します。
$ mkdir ~/build_project
$ cd build_project
2.linphone-sdkコンテナイメージの作成とコンテナの起動
以下コマンドによりDockerイメージのダウンロード、コンテナlinphone-sdkが起動、そのままコンテナ内シェルに移動します。
$ docker run --name linphone_desktop -v $PWD:/home/bc -it gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-ubuntu:18.04
bc@container_id:~$
Dockerファイルは以下参照して下さい。
https://gitlab.linphone.org/BC/public/linphone-sdk/tree/feature/ubuntu_18.04_runner/docker-files
別のターミナルにより起動コンテナを確認出来ます。
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
xxxxxxxxxxx gitlab.linphone.org:4567/bc/public/linphone-sdk/bc-dev-ubuntu:18.04 "/bin/sh -c bash" 15 hours ago Exited (0) 5 hours ago linphone-desktop
以下3,4,5の作業はコンテナ内で実行します。
3.ソースファイルのダウンロード(git clone)
コンテナ内シェルで以下コマンドを実行します。
$ cd /home/your_user_name/build_project
$ git clone https://gitlab.linphone.org/BC/public/linphone-desktop.git
$ cd linphone-desktop
4.prepare.pyによるビルドスクリプトの作成
prepare.pyによりcmakeスクリプトを作成します。
$ ./prepare.py desktop-rpm -DENABLE_DOC=OFF
linphone-desktop/WORKフォルダ内にdesktop-rpmが作成されます。
このままmakeするとmacros関連の2つのエラーが発生します。
エラー1
“%cmake error”
https://github.com/BelledonneCommunications/flexisip/issues/64
以下パッケージをダウンロードしてコンテナ内の該当フォルダにコピーします。以下の作業は別ターミナル(コンテナ外)から行う場合です。
https://rpmfind.net/linux/rpm2html/search.php?query=cmake-rpm-macros
$ docker cp cmake.prov container_name:/usr/lib/rpm/cmake.prov
$ docker cp cmake.req container_name:/usr/lib/rpm/cmake.req
$ docker cp cmake.attr container_name:/usr/lib/rpm/fileattrs/cmake.attr
$ docker cp macros.cmake container_name:/usr/lib/rpm/macros.d/macros.cmake
エラー2
“empty error: linphone-minizip-2.2.7/debugfiles.list”
ckameフォルダ内のrpmビルドに関わる全てのシェルファイルに以下の行を追加します。
参考
https://wiki.mageia.org/en/Packaging_problems_and_solutions#debug_packages
修正ファイル郡
linphone-desktop/WORK/desktop-rpm/cmake/EP_XXXXX_build_rpm.sh
追加
--define '_enable_debug_packages %{nil}' --define 'debug_package %{nil}' \
追加後
rpmbuild -ta --clean --rmsource --define "_topdir $RPM_TOPDIR" \
--define='_localstatedir /var/opt/belledonne-communications' \
--define '_mandir %{_prefix}' --nodeps --define 'dist .deb' --define '_lib lib' --define '_libdir %{_prefix}/%{_lib}' --define '_buildshell /bin/bash' \
--define '_enable_debug_packages %{nil}' --define 'debug_package %{nil}' \
\
--rmspec /home/bc/WORK/desktop-rpm/Build/bctoolbox/*.tar.gz \
$VERBOSE
5.makeコマンドによるビルド
コンテナ内でmakeコマンドを実行します。
$ make
6.debパッケージのインストール
コンテナから出てdebパッケージをインストールします。
$ exit
linphone-desktop/WORK/desktop-rpm/rpmbuild/DEBSフォルダ内にdebパッケージが作成されています。
このフォルダ内でdpkgコマンドによりインストールします。
$ cd WORK/desktop-rpm/rpmbuild/DEBS
$ sudo dpkg -i linphone-*.deb
7.パスの指定
バイナリパスは/opt/com.belledonne-communications/linphone/bin
ライブラリパスは/opt/com.belledonne-communications/linphone/lib
のため、各々のパスを設定ファイルに追加します。
バイナリパスの指定
ホームフォルダ内の.bashrcファイルの最後に以下を追加します。
export PATH=$PATH:/opt/com.belledonne-communications/linphone/bin
ライブラリパスの指定
$ sudo nano /etc/ld.so.conf.d/linphone.conf
/opt/com.belledonne-communications/linphone/lib
ライブラリパスの有効化
$ sudo ldconfig
暫定的には
$ export PATH=$PATH:/opt/com.belledonne-communications/linphone/bin
$ export LD_LIBRARY_PATH=/opt/com.belledonne-communications/linphone/lib
8.Linphoneの起動、動作確認
Linphoneを起動します。
$ linphone
ターミナルで動作を確認して下さい。
Linphoneメイン画面
設定画面(ALSAを選択)