ビルドUbuntu18.04 Linphoneデスクトップ

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のインストールについては以下フォーラム記事を参照願います。

ビルド・インストール手順

以下ビルド・インストール手順です。

  1. プロジェクトフォルダの作成
  2. linphone-sdkコンテナイメージの作成とコンテナの起動
  3. ソースファイルのダウンロード(git clone)
  4. prepare.pyによるビルドスクリプトの作成
  5. makeコマンドによるビルド
  6. debパッケージのインストール
  7. パスの指定
  8. 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

https://rpmfind.net/linux/mageia/distrib/cauldron/x86_64/media/core/release/cmake-rpm-macros-3.15.0-0.rc3.1.mga8.x86_64.rpm

$ 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を選択)