👨‍💼

LibreOfficeをLinux環境でビルドするためのTips

2025/02/27に公開

このテキストについて

このテキストは、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リポジトリのリモートorigingithubになっています。これを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