LibreOfficeをLinux環境でビルドするためのTips
このテキストについて
このテキストは、2024年韓国釜山で開かれたDebConf24で、LibreOffice韓国コミュニティのデヒョンさんが、LibreOfficeハンズオンをすると聞いたので、そのとき参考にしてもらうために書いた文章の原文に加筆、修正を加えたものです。
LibreOfficeをビルドすることについて
LibreOfficeの新機能や翻訳を確認するだけなら、わざわざソースコードからビルドする必要はありません。The Document Foundationが用意するデイリービルドを使いましょう。
UI翻訳で開発版を利用したい場合は、本体と通常のlanguage packのほかKeyID(翻訳メッセージの場所を表すユニークなIDラベル)が入ったqtz
と書かれたLanguage Packも一緒にダウンロードすれば、翻訳場所の確認ができます。Windows環境であれば、SI-GUIを使えば、デイリービルドをダウンロードしてリリース版と並行する形で利用できます。
開発版を利用する場合、環境が整っているので、LibreOfficeをビルドして利用する人はLibreOffice本体の開発者か、デイリービルドに反映されていない部分の翻訳を確認したいUI翻訳者ぐらいしかいないでしょう。そういうこともあり、LibreOfficeをビルドしたことがある人は限られています。
TDF Wikiには、LibreOfficeをビルドするためのBuilding On Linuxという文書があります。この文書は参考になりますが、実情を反映していなことや抜けもあって、これだけ読んでビルドできる人はあまりいません。そのため、LibreOfficeのビルドは難しいという印象を持っている方もいらっしゃるでしょう。
このテキストでは、ビルドのために必要だけれどTDF Wikiでは説明されていないことや、より良くビルドするためのTipsを紹介します。
LibreOfficeをビルドする
それでは、LibreOfficeのソースコードをクローンしてビルドしましょう。
ライブラリのインストール
筆者は、Debian GNU/Linux Sid上でビルドしています。なので、違う部分があるかもしれませんが次のようなパッケージをインストールすれば、ビルドに必要なライブラリは揃います。
bookwormをお使いでbackportsを有効にしていない場合は、以下の手順でbackportsを有効にしてください。すでに有効にされている方は、飛ばして先に進めてください。管理者権限が必要なところは、sudo
を使っています。rootを有効にしている人は、rootになってコマンドを実行してください。
# backportリポジトリを有効化する
sudo apt install extrepo
sudo extrepo enable debian_backports
sudo apt update
backportsを有効にしたなら、LibreOfficeのビルドに必要なライブラリを追加します。
sudo apt-get -t bookworm-backports build-dep libreoffice
sudo apt install build-essential git gstreamer1.0-libav libkrb5-dev nasm graphviz wget ccache
ccacheを設定する
ccacheは、ビルドしたデータをキャッシュしておいて、再ビルドの速度を上げるツールです。ホームディレクトリに.ccache
ディレクトリを作成して、その中に設定ファイルccache.conf
を作成します。
mkdir ~/.ccache/
touch ~/.ccache/ccache.conf
~/.ccache/ccache.conf
の設定は、次のようにしています。
max_size = 32G
compression = true
# cache_dir = /var/cache/ccache
設定ファイル内でコメントアウトしていますが、筆者は使用しているPCでSSDのある/var/cache/ccache
をキャッシュディレクトリにするために作成して、設定していました。ccacheの詳しいオプションについては、ccacheのドキュメントをご覧ください。
ソースコードをクローンする
それでは、LibreOfficeのソースコードリポジトリからソースコードをクローンしますが、TDFのサーバーはヨーロッパにあります。そしてソースコードはとても巨大です。
ここでBuilding on Linuxに書いてあるようにgit clone https://gerrit.libreoffice.org/core libreoffice
を実行してしまうと1日かかっても終わりません。終わらないだけではなく、途中で切れるので何度もやり直しになります。ですので、次の方法を使います。
LibreOfficeのソースコードは、GitHubにミラーされています。なのでTDFサーバーからではなく、GitHubからクローンします。そしてGitHubからのクローンも履歴を全部をクローンすると時間がかかるので、shallow clone
を使って1世代だけクローンします。
適当な作業ディレクトリを作成したら、その中で以下のgit
コマンドを実行します。ハンズオンで利用するだけであれば、これで問題ありません。
git clone -o github --depth=1 --recurse-submodules --shallow-submodules https://github.com/LibreOffice/core.git libreoffice
ビルドオプションについて
ビルドオプションは、autogen.sh --help
で表示できます。表示させると大量にオプションが表示されて圧倒されます。そして、Building on Linuxではaugogen.sh
のオプションは最小から始めましょうと書いてあります。
それを信じて最小で始めると、個人でビルドするには不要なオプションが有効になっているので、ビルドの最中で止まります。仕方がないのでオプションを指定しますが、長くなると大変です。
autogen.sh
のオプションは、autogen.input
ファイルに記述しておくと適用してくれるので、あらかじめ書いておきましょう。ソースコードがあるlibreoffice
ディレクトリに入ったらファイルを作成します。
cd libreoffice/
touch autogen.input
作成したautogen.input
ファイルを編集してオプションを記述します。オプションについては、どのようにするかは人によって変わりますが私は、このようにしています。
--disable-breakpad
--disable-odk
--disable-online-update
--enable-dbgutil
--enable-debug
--enable-epm
--enable-gen
--enable-gtk3-kde5
--enable-gtk4
--enable-kf5
--enable-optimized=debug
--enable-qt5
--enable-qt6
--enable-sal-log
--with-help
--with-lang=ja en-US
--with-locales=ja en
--with-package-format=deb
--with-privacy-policy-url=https://www.example.com/
--with-vendor=test build
--without-doxygen
--without-myspell-dicts
--enable-kf5
などUI関連やdebパッケージ作成の--with-package-format=deb
んど不要なものは外してください。言語--with-lang
も自分が使うものに合わせてカスタマイズするとよいですが、en
は入れておいたほうがよいでしょう。
ビルドする
ここまでできれば、Linux上でLibreOfficeを失敗なくビルドできます。最初のビルドは時間がかかりますが、2回目以降はすぐに終わります。
make
バイナリを実行するには
ビルドしたLibreOfficeのバイナリファイルは、(LibreOfficeソースディレクトリ)/instdir/
以下にあります。
次のようにオプションで消してもよいディレクトリを指定して実行します。実行例では/tmp/test
を指定していますが、場所は問題がない場所ならどこを指定しても構いません。
./instdir/program/soffice -env:UserInstallation=file:///tmp/test
ビルドしたdebパッケージはどこにある?
autogen.sh
ではオプションでdebパッケージやrpmパッケージの作成も指定できます。パッケージも同時にビルドした場合、作成したパッケージは以下の場所に生成されます。
- 本体:
(LibreOfficeソースディレクトリ)/workdir/installation/LibreOfficeDev/deb/install/LibreOfficeDev_(バージョン).alpha0_Linux_x86-64_deb/
- 言語パック:
(LibreOfficeソースディレクトリ)/workdir/installation/LibreOfficeDev_languagepack/deb/install/
ここにあるdebパッケージをdpkg
などでパッケージをインストールすれば利用できます。パッケージは/opt/
以下にインストールされるので既存のLibreOfficeと分けて利用できます。
パッケージ版でプロファイルを分けるには
debパッケージ版をインストールした場合にプロファイルを分けるには、/opt/libreofficedev(バージョン)/program/bootstraprc
ファイルを編集します。
管理者権限が必要になるので、sudo vim /opt/libreofficedev(バージョン)/program/bootstraprc
のように管理者権限付きで実行したら、UserInstallation
の部分を編集します。
UserInstallation=$SYSUSERCONFIG/libreofficedev20250307/4
編集する場合、プロファイルの保存先はどこでも構いませんが、筆者は次のように日付を付けています。
今後も継続してビルドするには
これで、LibreOfficeのビルドができたと思います。ここで、この続きをする場合についても説明します。
git shallowを解除してoriginを付け替える
今回、リポジトリのクローンでは時間節約のためにshallow cloneしています。今後もリポジトリを使い続けるには、shallowを解除(unshallow)しておく必要があります。
解除をするには、リポジトリをクローンしたlibreoffice
ディレクトリで次のgit
コマンドを実行して解除できます。
git fetch --unshallow
そして今はgitリポジトリのリモートorigin
がgithub
になっています。これをTDFのリポジトリをorigin
として登録します。
git remote add origin https://git.libreoffice.org/core
libreoffice
ディレクトリ内にある、辞書 dictionary
、ヘルプ helpcontents
、翻訳 translations
ディレクトリはsubmoduleになっています。これらのリポジトリのorigin
もTDFリポジトリにします。ディレクトリが3つあるので気をつけてください。
cd dictionaries
git remote add origin https://git.libreoffice.org/dictionaries
cd ../helpcontents2/
git remote add origin https://git.libreoffice.org/help
cd ../translations/
git remote add origin https://git.libreoffice.org/translations
これでTDFリポジトリと同じになりました。これで、パッチを作ってlogerrit
を使って提出することになっても安心ですね。
git pull
するには
リポジトリは日々更新されているのでビルド前にリポジトリを更新しますが、git pull
だけではsubmodule
のリポジトリは更新されません。なのでgit pull
をした後は、`git submodule update``も実行します。
cd libreoffice/
git pull
git submodule update
最後に
これでLinux上でLibreOfficeがビルドできるようになりました。おそらく、LibreOfficeのビルドはLinux上が一番しやすいと思います。
WindowsやMacOSでビルドする場合は、ビルド環境構築のヘルパースクリプトLODEが用意されています。ある程度まではこれで環境が整えられるはずです(とはいえ複雑なことには変わりありませんが…)。
MacOS上でLibreOfficeをビルドする方法については、筆者のサイトに「【2021年版】macOSでLibreOfficeをビルドする」を掲載しているので、こちらをご覧ください。
Discussion