2018年8月5日日曜日

5: UNOプログラムをLinuxで開発する環境を構築する

<このシリーズの前の記事 | このシリーズの目次 | このシリーズの次の記事>

マクロ、外部UNOプログラム、UNO拡張機能を、Java、C++、Pythonで開発するために。

話題


About: UNO (Universal Network Objects)
About: LibreOffice
About: Apache OpenOffice
About: Java programming language
About: C++
About: Python programming language
About: LibreOffice Basic
About: Apache OpenOffice Basic
About: BeanShell
About: JavaScript

この記事の目次


開始コンテキスト



ターゲットコンテキスト



  • 読者は、UNOプログラム(外部UNOプログラムやUNO拡張機能)をLinuxで開発する環境(Gradleを使用する)を構築する方法を知る。
ト書き
Hypothesizer 7、Objector 5A、Objector 5Bがコンピューターの前にいる。


オリエンテーション


Hypothesizer 7
この記事では、UNOプログラム(外部UNOプログラムやUNO拡張機能)をLinuxで開発する環境(Gradleを使用する)を構築する方法を学びます。

Objector 5A
「環境」と君は言ったが、何の環境なのか?Java環境なのかそうでないのか、君が全然言わなかったから、私には分からない。

Hypothesizer 7
サー、Java、C++、Python、LibreOffice BasicまたはApache OpenOffice Basic、BeanShell、JavaScriptのコードを含むことのできるUNO プログラムを開発できる環境でございまして、それが、Java環境だとは言えなかった理由です。

Objector 5A
そんなにいろんなコードを含めるつもりはないんだが...

Hypothesizer 7
勿論、そうしなければならないわけではありません。ただ、そうできるだけです。

Objector 5A
不要なものはインストールしたくないと私は言っているのだ。

Hypothesizer 7
する必要はありません。あなたが必要なものだけを選ぶことができます。

Objector 5A
私に何が必要かを君が明確に示さないのではないかと心配していると私は言っているのだ...

Hypothesizer 7
ああ、ご心配は承りました。どの部分が何の目的のために必要かを明確に示しましょう。

Objector 5A
どのIDEを使うかも君は言わなかったが。

Hypothesizer 7
言わなかったのは、テキストエディタとGradleだけを使うからです。

Objector 5A
はあ?君は石器時代から来たのかね?

Hypothesizer 7
石器時代にコンピューターがあったとは思いませんが. . .

Objector 5A
何のIDEも使わないやつがいるとは信じられん...

Hypothesizer 7
ほとんどのIDEは私の低速コンピューターには重すぎますし、将来のサンプルプログラムを特定のIDEに依存させたくもないのです。

Objector 5A
私のコンピューターは別に低速ではなく、私はEclipseを使っている。

Hypothesizer 7
勿論、あなたはそうできます。Eclipseやその他の任意のIDEを使っていても、Gradleのコマンドはあなたのプロジェクトをビルドするでしょう。

Objector 5A
それでは十分ではない!統合しなくては!

Hypothesizer 7
...「統合しなくては」とおおせられますと?

Objector 5A
ソースファイルは保存されたら自動的にコンパイルされなければならない。プロジェクトは、Eclipseのビルドボタンがクリックされたらビルドされなければならない。プログラムはEclipse内でデバッグできなければならない。

Hypothesizer 7
...どうしてもそうでなければなりませんか?

Objector 5A
どうしてもだ!

Hypothesizer 7
ふーむ、...そうでなければならないのであれば、どうやってそうさせられるか、将来の記事で調べてみましょう。しかし、ご理解いただきたいのですが、私の将来のサンプルはGradleのプロジェクトという形になるので、それらをそのままビルドするためには、この記事で構築する環境が必要になります。

Objector 5A
分かった。私はけっしてゴリ押しなどしないからな。

Hypothesizer 7
勿論です...

Objector 5B
私はBasicのマクロしか開発しなくって、そのための開発環境なんて必要ないのよ、LibreOffice自体を除いては。

Hypothesizer 7
そうでしょうね、マダム。

Objector 5B
でも、Basicマクロを呼び出すメニュー項目やツールバーボタンをLibreOfficeに追加したいわけ。そのために開発環境は必要かしら?

Hypothesizer 7
それは、UNO拡張機能を作成・登録することでできますが、UNO拡張機能ファイルは実際にはZIPファイルなので、このファイルを作成するために、zipコマンドを除き、開発環境は必要ありません。しかし、UNO拡張機能ファイルを作成しLibreOfficeに登録するビルドシステムがあれば、便利かもしれません。

Objector 5B
便利なものには反対しないわ。でも、'開始コンテキスト'が言うようにあなたの過去の記事を本当に読まないといけないの?だって、ただインストール作業をするだけのために、なんでそんな知識が要るわけ?

Hypothesizer 7
ああ、それはいい質問ですね。確かに、この記事に挙げられているいくつかのコマンドを盲目的に実行するのであれば、そのような知識は必要ないでしょう。しかしながら、「 UNOデータタイプを開発する場合はこれをする必要があります」といった説明を私はしますので、それをあなたがすべきかを判断されるためには、UNOデータタイプとは何であるか、そしてそれを開発しなければならないかを、あなたは知っておかなければならないでしょう。

Objector 5B
でも、あなたの過去の記事を最初から最後まで読む必要はないんでしょう?

Hypothesizer 7
確かにその必要はありません。しかし、技術的知識は階層状になっており、そこに含まれる要素は互いに関連しているため、UNOとは何であるかをまず理解することなく、UNOデータタイプが何であるかだけを適切に理解することはできません。また、UNOオブジェクトUNOコンポーネントUNOインターフェースUNOサービスが何であり、互いにどう関係しているかをまず理解することなく、UNOデータタイプを開発しなければならないかを適切に理解することはできません。したがって、あなたは、前提知識をある程度整然と学ばなければならないでしょう。

Objector 5B
でも、あなたの過去の記事を熟読する必要はないんでしょう?

Hypothesizer 7
確かにその必要はありません。御自分の必要に応じて、飛ばし読みの優れたスキルを活用されればよいでしょう。

Objector 5B
ふーん...


本体


1: 開発環境はどのようなものになるのか?


Hypothesizer 7
最初に明らかにしておきましょう。UNOプログラムを開発するのに絶対に必要なのは以下のものだけです。LibreOfficeまたはApache OpenOffice、LibreOffice SDKまたはApache OpenOffice SDK(UNOデータタイプを開発するか、C++コードを開発する場合のみ)、JDK(Javaコードを開発する場合のみ)、GCC(C++コードを開発する場合のみ)。

Objector 5A
自分オリジナルのシェルスクリプトでプロジェクトをビルドするならばということだな?

Hypothesizer 7
はい。しかし、私たちはビルドシステムを使いたいですし、実際、私たちの将来のサンプルプログラムは、Gradleのプロジェクトという形になります。

Objector 5A
それでは、君のサンプルプログラムをそのままビルドしたければ、Gradeをしぶしぶインストールしなければならんな . . .

Hypothesizer 7
Gradleをどうしても拒絶なさるのであれば、どうぞご遠慮なくご自身のビルドシステムをご開発ください。

Objector 5A
もちろん、君に言われなくても遠慮などしない...

Hypothesizer 7
比較的新しいプラットフォームおよび比較的新しいバージョンのソフトウェアのどれでも使用できますが、私は、2019-02-20現在、以下のプラットフォームとソフトウェアを使用します。

プラットフォーム:Lubuntu 18.04 64-bit、bash 4.4.19

ソフトウェアどのような場合に必要か
LibreOffice 6.0.7または6.2.0 あるいは Apache OpenOffice 4.1.6どのようなUNOプログラムを開発する場合にも
LibreOffice SDK 6.0.7または6.2.0あるいはApache OpenOffice SDK 4.1.6UNOデータタイプを開発する場合およびC++コードを開発する場合
OpenJDK 10.0.2 or 11.0.2 + OpenJFX 11どのようなUNOプログラムを開発する場合にも(Javaコードを開発しなくても、Gradleを動作させるために必要)。OpenJFXは、JavaFXを使用しないのであれば不要(将来のサンプルプログラムは使用する)。
Gradle 3.4.1または5.2.1どのようなUNOプログラムを開発する場合にも
GCC 7.3.0 + wxWidgets 3.0または3.1.2C++コードを開発する場合。wxWidgetsは、使用しないのであれば不要(将来のサンプルプログラムは使用する)。
wmctrl 1.07UNO拡張機能をインストール前にLibreOfficeまたはApache OpenOfficeインスタンスを自動的かつきれいにシャットダウンする場合

Objector 5A
「Lubuntu」?ふーむ、どちらにしろ、私のCentOSにはインストールコマンドが違うだろう、もし、君がパッケージ管理システムを使うのであればだが。

Hypothesizer 7
実のところ使います。ここで挙げるインストールコマンドは、あなたのプラットフォーム用に変更する必要があるでしょう。

Objector 5A
まあ、インストールするべきパッケージが特定できれば、確かに、大した問題ではないが...

ト書き
Hypothesizer 7は、Webブラウザを開き、何かを探す。

Hypothesizer 7
えーと、...CentOS 7のパッケージのリストをここに見つけたのですが、そこには、LibreOffice 5.3.6、LibreOffice SDK 5.3.6、OpenJDK 8、GCC 4.8.5があるようです。

いずれにせよ、パッケージ群をパッケージ管理システムを使わずにどのようにインストールできるか(それが可能な場合)も見ることにしましょう、あなたのパッケージ管理システムに一部のパッケージが含まれていない場合のために。

Objector 5A
「+ OpenJFX」というのは何だ?

Hypothesizer 7
OpenJDK 10.0.2にも11.0.2にもJavaFXが含まれていないので、JavaFXを使用するのであれば、それが必要です。

Objector 5A
Oracle JDKを使えないのか?

Hypothesizer 7
使えますが、ライセンス規定が変更になったので、今後、それの説明はしないことにします。

Objector 5A
それで、「wxWidgets」というのはなんだ?

Hypothesizer 7
それは、クロスプラットフォームなGUIライブラリーです。

Objector 5A
選択肢がいろいろある中で特にそのGUIライブラリーをなぜ私が使わねばならんのか?

Hypothesizer 7
そうしなければならないことはありません、私のサンプルC++プログラムをそのまま使うのでなければ。私はそのGUIライブラリーを選んだというだけです。

Objector 5A
なぜ君はそれを選んだのかね?

Hypothesizer 7
実は、はじめは裸のGTK+(実は、wxWidgetsは、LinuxではGTK+ベースになっています、Windowsではそうでありませんが)を使用する計画だったのですが、WindowsのVisual C++でGTK+を使用する方法がはっきりせず、Qtは私にはオーバースペックです: 私はGUIライブラリを必要としているだけであって、アプリケーションフレームワークを必要としてはいません。結局、wxWidgetsが選択肢として消去されなかったわけです。

Objector 5A
ふーん...。上の表で、いくつかのソフトウェアで2つのバージョンが挙げられているのはなぜだ?

Hypothesizer 7
その2つのバージョンは、パッケージ管理システムを通してインストールしたソフトウェアのバージョンと他の方法でインストールしたソフトウェアのバージョンを、その順番で挙げたものです。パッケージ管理システムは必ずしも最新バージョンを含んでいません。


2: ソフトウェアをインストールし設定する



2-1: 注意事項


Hypothesizer 7
以下で、ZIPファイルを展開する際にrootディレクトリを除去することができる'bsdtar' コマンドを使うことがあります。これは、一部のZIPファイルがrootにバージョンディレクトリを持っているが、私はこうしたバージョンディレクトリが欲しくないからです(バージョンが変わるとパス設定を変えなければならなくなるため)。

Objector 5A
'rootのバージョンディレクトリ'というのは、ソフトウェアのバージョンを名前に持つ、ZIPファイル内のrootディレクトリのことか?

Hypothesizer 7
そうです。

Objector 5A
バージョンディレクトリが欲しくないというのは君の趣味にすぎない...

Hypothesizer 7
知っています。だから、'bsdtar'コマンドは必須では全くないと言いたかったのです。代わりに、'unzip'コマンドなどを使用しても問題ありません。

Objector 5A
'bsdtar'というのは単にBSDにおける'tar'だろう、コマンド名が示唆しているとおり。

Hypothesizer 7
そうです。そこで、'bsdtar'で大騒ぎしないよう、私はお願いしたかったわけです。どんな方法であっても、ZIPファイルを展開できればそれでよいのです。

Objector 5A
そうであれば、'unzip'を使えばいいだろうに...

Hypothesizer 7
私たちのビルドシステムにはバージョンディレクトリを含まない形でデフォルト設定が含まれているため、そうしたデフォルト設定にここで矛盾したくないのです...

Objector 5A
ふーむ...

Hypothesizer 7
全然重要でないことにこのように大きなスペースを取って、大変すみません...

Objector 5A
...では、直ちに終わらせて、先に進めてくれ。

Hypothesizer 7
'bsdtar'が私のプラットフォームでは以下のコマンドでインストールできることだけ付け加えさせていただきます。

ト書き
Hypothesizer 7はターミナルを開き、そのターミナルで以下のコマンドを実行する。

@bash ソースコード
sudo apt-get install bsdtar

Objector 5A
OK. オーケー。

Hypothesizer 7
別の注意点として、これは当然のことですが、念の為に申し上げておきます。

シェルコマンドパスの設定が以下に幾度か登場しますが、それらは、以下のように1行で書けます。

@bash ソースコード
export PATH=~/myApplications/execution/oracleJdk/bin:~/myApplications/execution/gradle/bin:~/myApplications/execution/ant/bin:$PATH

以下で私は1行で書きませんでしたが、これは、どのソフトウェアをインストールするかによってシェルコマンドパスは変わるからです。

Objector 5A
それは当然すぎるだろう!私は5歳児かね?

Hypothesizer 7
大変すみません。

Hypothesizer 7
また、私は、ディレクトリ名にスペースを使用しない習慣なので、私たちのビルドシステムは基本的に、名前にスペースを含まないディレクトリに対してだけテストされております。

Objector 5A
だから?

Hypothesizer 7
だから、名前にスペースを含むディレクトリに対して問題があった場合、Gradleビルドスクリプトを修正するか、ディレクトリ名を変更するかしなければならないでしょう、あるいは、そのようなディレクトリ名を始めから使わないことを選択されるかもしれません。

Objector 5A
...


2-2: LibreOfficeをインストールする


Hypothesizer 7
LibreOfficeをインストールします。Apache OpenOfficeを使うのであれば、これは必要ありません。

第1の方法は、パッケージ管理システムを使うものです。ターミナルで以下のコマンドを実行します(後者の言語パックは必要に応じて変更してください)。

ト書き
Hypothesizer 7はターミナルを開き、その中でいくつかのコマンドを実行する。

@bash ソースコード
sudo apt-get install libreoffice
sudo apt-get install libreoffice-l10n-ja

Hypothesizer 7
私のプラットフォームでは、前者のコマンドは、LibreOfficeの1群のパッケージをインストールします。

Objector 5A
「1群のパッケージ」?

Hypothesizer 7
例えば、'libreoffice-script-provider-python'、'libreoffice-script-provider-bsh'、'libreoffice-script-provider-js'はそれぞれ、LibreOfficeでPython、BeanShell、JavaScriptを使用するためのパッケージです。あなたのLibreOfficeにそうしたプログラミング言語の一部のためのメニュー項目が表示されない場合、対応するパッケージがあなたのシステムに欠けているはずです。

第2の方法は、あるWebサイトからパッケージ群をダウンロードするものです。LibreOfficeのダウンロードWebページから、本体のdebパッケージ群のアーカイブファイルと1つの言語パックのdebパッケージ群のアーカイブファイルをどこかに(ここでは'~/myData/downloadedFiles')ダウンロードし、ターミナルで以下のコマンドを実行します(ディレクトリパスとアーカイブファイル名は必要に応じて変更してください)。

ト書き
Hypothesizer 7は、Webブラウザを起動し、Linux 64-bit debパッケージ群のtar.gzファイル群をダウンロードし、ターミナルでいくつかのコマンドを実行する。

@bash ソースコード
mkdir -p ~/myData/downloadedFiles/libreOffice
tar -xvzf ~/myData/downloadedFiles/LibreOffice_6.2.0_Linux_x86-64_deb.tar.gz -C ~/myData/downloadedFiles/libreOffice --strip-components=1
tar -xvzf ~/myData/downloadedFiles/LibreOffice_6.2.0_Linux_x86-64_deb_langpack_ja.tar.gz -C ~/myData/downloadedFiles/libreOffice --strip-components=1
sudo dpkg -i ~/myData/downloadedFiles/libreOffice/DEBS/*.deb

Hypothesizer 7
アプリケーションは、'/opt/libreoffice6.2'にインストールされました。

Objector 5A
当然、私は、rpmパッケージ群のアーカイブファイル群をダウンロードして使わなければならない...

Hypothesizer 7
そこはお任せします。


2-3: Apache OpenOfficeをインストールする


Hypothesizer 7
Apache OpenOfficeをインストールします。LibreOfficeを使うのであれば、これは必要ありません。

私のパッケージ管理システムにはApache OpenOfficeが含まれていないので、Webサイトからパッケージ群をダウンロードして、これをインストールします。Apache OpenOfficeのダウンロードWebページから、本体のdebパッケージ群のアーカイブファイルと1つの言語パックのdebパッケージ群のアーカイブファイルをどこかに(ここでは'~/myData/downloadedFiles')ダウンロードし、ターミナルで以下のコマンドを実行します(ディレクトリパスとアーカイブファイル名は必要に応じて変更してください)。

ト書き
Hypothesizer 7は、Linux 64-bit debパッケージ群のtar.gzファイル群をダウンロードし、ターミナルでいくつかのコマンドを実行する。

@bash ソースコード
mkdir -p ~/myData/downloadedFiles/apacheOpenOffice
tar -xvzf ~/myData/downloadedFiles/Apache_OpenOffice_4.1.6_Linux_x86-64_install-deb_ja.tar.gz -C ~/myData/downloadedFiles/apacheOpenOffice --strip-components=1
tar -xvzf ~/myData/downloadedFiles/Apache_OpenOffice_4.1.6_Linux_x86-64_langpack-deb_en-US.tar.gz -C ~/myData/downloadedFiles/apacheOpenOffice --strip-components=1
sudo dpkg -i ~/myData/downloadedFiles/apacheOpenOffice/DEBS/*.deb

Hypothesizer 7
アプリケーションは、'/opt/openoffice4'にインストールされました。


2-4: LibreOffice SDKをインストールする


Hypothesizer 7
LibreOffice SDKをインストールします。Apache OpenOfficeを使う場合やUNOデータタイプもC++コードも開発しない場合は、これは必要ありません。

第1の方法は、パッケージ管理システムを使うものです。ターミナルで以下のコマンドを実行します(ドキュメントが不要であれば、後者のコマンドは不要です)。

ト書き
Hypothesizer 7はターミナルでいくつかのコマンドを実行する。

@bash ソースコード
sudo apt-get install libreoffice-dev
sudo apt-get install libreoffice-dev-doc

Hypothesizer 7
第2の方法は、あるWebサイトからパッケージをダウンロードするものです。LibreOfficeのダウンロードWebページから、debパッケージのアーカイブファイルをどこかに(ここでは'~/myData/downloadedFiles')ダウンロードし、ターミナルで以下のコマンドを実行します(ディレクトリパスとアーカイブファイル名は必要に応じて変更してください)。

ト書き
Hypothesizer 7は、Linux 64-bit debパッケージ群のtar.gzファイルをダウンロードし、ターミナルでいくつかのコマンドを実行する。

@bash ソースコード
tar -xvzf ~/myData/downloadedFiles/LibreOffice_6.2.0_Linux_x86-64_deb_sdk.tar.gz -C ~/myData/downloadedFiles/libreOffice --strip-components=1
sudo dpkg -i ~/myData/downloadedFiles/libreOffice/DEBS/libobasis6.2-sdk_6.2.0.3-3_amd64.deb


2-5: Apache OpenOffice SDKをインストールする


Hypothesizer 7
Apache OpenOffice SDKをインストールします。LibreOfficeを使う場合やUNOデータタイプもC++コードも開発しない場合は、これは必要ありません。

私のパッケージ管理システムにはApache OpenOffice SDKが含まれていないので、Webサイトからパッケージをダウンロードして、これをインストールします。Apache OpenOfficeのダウンロードWebページから、debパッケージのアーカイブファイルをどこかに(ここでは'~/myData/downloadedFiles')ダウンロードし、ターミナルで以下のコマンドを実行します(ディレクトリパスとアーカイブファイル名は必要に応じて変更してください)。

ト書き
Hypothesizer 7は、Linux 64-bit debパッケージのtar.gzファイルをダウンロードし、ターミナルでいくつかのコマンドを実行する。

@bash ソースコード
tar -xvzf ~/myData/downloadedFiles/Apache_OpenOffice-SDK_4.1.6_Linux_x86-64_install-deb_en-US.tar.gz -C ~/myData/downloadedFiles/apacheOpenOffice --strip-components=1
sudo dpkg -i ~/myData/downloadedFiles/apacheOpenOffice/DEBS/openoffice-sdk_4.1.6-1_amd64.deb


2-6: OpenJDK + OpenJFXをインストールし設定する


Hypothesizer 7
OpenJDKをインストールします。Oracle JDKを使うのであれば、これは必要ありません。

第1の方法は、パッケージ管理システムを使うものです。ターミナルで以下のコマンドを実行します。

ト書き
Hypothesizer 7はターミナルでコマンドを実行する。

@bash ソースコード
sudo apt-get install default-jdk

Hypothesizer 7
第2の方法は、あるWebサイトからアーカイブファイルをダウンロードするものです。OpenJDKのダウンロードWebページから、アーカイブファイルをどこかに(ここでは'~/myData/downloadedFiles')ダウンロードし、ターミナルで以下のコマンドを実行します(ディレクトリパスとアーカイブファイル名は必要に応じて変更してください)。

ト書き
Hypothesizer 7は、Linux 64-bit用のtar.gzファイルをダウンロードし、ターミナルでいくつかのコマンドを実行する。

@bash ソースコード
mkdir -p ~/myApplications/execution/openJdk
tar -xvzf ~/myData/downloadedFiles/openjdk-11.0.2_linux-x64_bin.tar.gz -C ~/myApplications/execution/openJdk --strip-components=1

Hypothesizer 7
OpenJFXをインストールします。JavaFXを使用しないのであれば(私たちのサンプルプログラムは使用します)、これは必要ありません。

OpenJFXのダウンロードWebページから、アーカイブファイルをどこかに(ここでは'~/myData/downloadedFiles')ダウンロードし、ターミナルで以下のコマンドを実行します(ディレクトリパスとアーカイブファイル名は必要に応じて変更してください)。

ト書き
Hypothesizer 7は、Linux 64-bit用のZIPファイルをダウンロードし、ターミナルでいくつかのコマンドを実行する。

@bash ソースコード
mkdir -p ~/myApplications/libraries/javaFx
bsdtar -xvf ~/myData/downloadedFiles/openjfx-11.0.2_linux-x64_bin-sdk.zip -C ~/myApplications/libraries/javaFx --strip-components=1

Hypothesizer 7
次に、OpenJDKがパッケージ管理システムを使ってインストールされたのでなければ、JDKのバイナリディレクトリをシェルのコマンドパスに追加します。加えて、OpenJDKがパッケージ管理システムを使ってインストールされたのであろうがなかろうが、必要な環境変数を1つセットします。実際には、'~/.bashrc'の先頭部に以下を追加します(第1行は、OpenJDKがパッケージ管理システムを使ってインストールされたのであれば不要です)。

ト書き
Hypothesizer 7は、'~/.bashrc'ファイルを開き、ファイルに以下を追加する。

@bash ソースコード
export PATH=~/myApplications/execution/openJdk/bin:$PATH
export JAVA_HOME=$(readlink -f $(which javac) | sed "s/\/bin\/javac$//")


2-7: Gradleをインストールし設定する


Hypothesizer 7
Gradleをインストールします。

第1の方法は、パッケージ管理システムを使うものです。ターミナルで以下のコマンドを実行します。

ト書き
Hypothesizer 7はターミナルでコマンドを実行する。

@bash ソースコード
sudo apt-get install gradle

Hypothesizer 7
第2の方法は、あるWebサイトからアーカイブファイルをダウンロードするものです。GradleのダウンロードWebページから、アーカイブファイルをどこかに(ここでは'~/myData/downloadedFiles')ダウンロードし、ターミナルで以下のコマンドを実行します(ディレクトリパスとアーカイブファイル名は必要に応じて変更してください)。

ト書き
Hypothesizer 7は、ZIPファイルをダウンロードし、ターミナルで以下のコマンドを実行する。

@bash ソースコード
mkdir -p ~/myApplications/execution/gradle
bsdtar -xvf ~/myData/downloadedFiles/gradle-5.2.1-bin.zip -C ~/myApplications/execution/gradle --strip-components=1

Hypothesizer 7
次に、Gradleがパッケージ管理システムを使ってインストールされたのでなければ、Gradleのバイナリディレクトリをシェルのコマンドパスに追加します。加えて、Gradleがパッケージ管理システムを使ってインストールされたのであろうがなかろうが、必要な環境変数を1つセットします。実際には、'~/.bashrc'の先頭部に以下を追加します(第1行は、Gradleがパッケージ管理システムを使ってインストールされたのであれば不要です)。

ト書き
Hypothesizer 7は、'~/.bashrc'ファイルを開き、ファイルに以下を追加する。

@bash ソースコード
export PATH=~/myApplications/execution/gradle/bin:$PATH
export GRADLE_HOME=$(readlink -f $(which gradle) | sed "s/\/bin\/gradle$//")


2-8: GCC + wxWidgetsをインストールする


Hypothesizer 7
GCCをインストールします。C++コードを開発しないのであれば、これは必要ありません。

パッケージ管理システムを使わずにGCCをインストールする方法は追求しないことにします。どのディストリビューションにもこれは含まれているはず(たぶん)だからです。実際には、ターミナルで以下のコマンドを実行します。

ト書き
Hypothesizer 7は、ターミナルで以下のコマンドを実行する。

@bash ソースコード
sudo apt-get install build-essential

Hypothesizer 7
wxWidgetsをインストールします。wxWidgetsを使用しないのであれば(私たちのサンプルプログラムは使用します)、これは必要ありません。

第1の方法は、パッケージ管理システムを使うものです。ターミナルで以下のコマンドを実行します。

ト書き
Hypothesizer 7はターミナルでコマンドを実行する。

@bash ソースコード
sudo apt-get install libwxgtk3.0-dev

Hypothesizer 7
第2の方法は、あるWebサイトから、ソースファイルを格納したアーカイブファイルをダウンロードするものです。wxWidgetsのダウンロードWebページから、ソースファイルを格納したアーカイブファイルをどこかに(ここでは'~/myData/downloadedFiles')ダウンロードし、ターミナルで以下のコマンドを実行します(ディレクトリパスとアーカイブファイル名は必要に応じて変更してください)。

ト書き
Hypothesizer 7は、"Source for Linux, macOS, etc"tar.bz2ファイルをダウンロードし、ターミナルで以下のコマンドを実行する。

@bash ソースコード
mkdir -p ~/myApplications/libraries/wxWidgets
bsdtar -xvjf ~/myData/downloadedFiles/wxWidgets-3.1.2.tar.bz2 -C ~/myApplications/libraries/wxWidgets --strip-components=1
cd ~/myApplications/libraries/wxWidgets
./configure --enable-stl
./make


2-9: wmctrlをインストールする


Hypothesizer 7
wmctrl(EWMH(NetWM)互換のX Windowウィンドウマネージャーでウィンドウをコントロールするために使用されるコマンド)をインストールします。UNO拡張機能を開発しないのであれば、これは必要ありません。たとえするとしても、必須ではありません(私たちのGradleビルドシステムでは、UNO拡張機能をLibreOfficeまたはApache OpenOfficeにインストールする前に、LibreOfficeまたはApache OpenOfficeのプロセスをきれいに(LibreOfficeまたはApache OpenOfficeのプロセスをシャットダウンする前に、開かれているドキュメントをユーザに閉じてもらうことを意味します)シャットダウンするためにwmctrlが使われますが、wmctrlがインストールされていなければ、LibreOfficeまたはApache OpenOfficeが全てシャットダウンされるのをビルドは待ちますから、ユーザは、LibreOfficeまたはApache OpenOfficeのプロセスを手動でシャットダウンすればよいだけです)。

これをインストールするのに、パッケージ管理システムを使う方法しか私は知りません。あなたのX WindowウィンドウマネージャーがEWMH(NetWM)互換でないか、あなたのパッケージ管理システムにこれが含まれていなければ、これをただ無視して構いません(これは必須ではありません)。または、どこか別のところにパッケージを見つけることができるかもしれません。実際には、ターミナルで以下のコマンドを実行します。

ト書き
Hypothesizer 7は、ターミナルで以下のコマンドを実行する。

@bash ソースコード
sudo apt-get install wmctrl


2-10: LibreOfficeまたはApache OpenOfficeが使用するJREをセットする


Hypothesizer 7
LibreOfficeまたはApache OpenOfficeのプロセス内のJVMに使われるJREをセットします。そうしたJVMで実行されるJavaコードを開発しないのであれば、これは必要ありません。

LibreOfficeでは、以下のようにしてセットできます。LibreOfficeプロセスを起動する。メニューの'Tools(ツール)'をクリックする。'Options(オプション)'をクリックする。'Advanced(詳細)'をクリックする。'Use a Java runtime environment(Java実行環境を使用)'をクリックする。JREを選択する。'OK'をクリックする。

Apache OpenOfficeでは、以下のようにしてセットできます。Apache OpenOfficeプロセスを起動する。メニューの'Tools(ツール)'をクリックする。'Options(オプション)'をクリックする。'Advanced(詳細)'をクリックする。'Use a Java runtime environment(Java実行環境を使用)'をクリックする。JREを選択する。'OK'をクリックする。


2-11: LibreOfficeまたはApache OpenOfficeに含まれたいくつかの'UNOデータタイプのマージされたファイル'からC++ヘッダーファイルを作成する


Hypothesizer 7
LibreOfficeまたはApache OpenOfficeに含まれたいくつかの 'UNOデータタイプのマージされたファイル'からC++ヘッダーファイルを作成します。C++コードを開発しないのであれば、これは必要ありません。

ターミナルで以下のコマンドを実行します(ディレクトリパスは必要に応じて変更してください( '/usr/lib/libreoffice'はLibreOfficeのベースディレクトリ、'${HOME}/myApplications/headerFiles'はC++ヘッダーファイル群のベースとなるディレクトリ))。

ト書き
Hypothesizer 7は、ターミナルで以下のコマンドを実行する。

@bash ソースコード
cd /usr/lib/libreoffice
sdk/bin/cppumaker -Gc -O${HOME}/myApplications/headerFiles ./program/types.rdb ./program/types/offapi.rdb


3: The Conclusion and Beyond 結びとその先


Hypothesizer 7
これで、UNO Programs in Linux UNOプログラムをLinuxで開発する環境が構築されました。勿論、この環境は、UNOプログラムを開発するのに絶対的に必要なものではありませんが(makeやMavenなどの別のビルドソフトウェアを使うことができますし、EclipseやNetBeansなどのIDEを使うこともできます)、私たちの、将来のサンプルプログラムをビルドするのに必要です。

この環境でビルドできるさまざまなサンプルプログラムを将来の記事で見ていきます。

UNOプログラムをWindowsで開発する環境は、次の記事で構築します。


参考資料


  • Wikimedia Foundation, Inc.. (2018-05-22). Lubuntu. Retrieved from https://en.wikipedia.org/wiki/Lubuntu
  • n/a. (n/a). Index of /centos/7/os/x86_64/Packages. Retrieved from http://mirror.centos.org/centos/7/os/x86_64/Packages/
  • The Document Foundation. (n/a). Download LibreOffice | LibreOffice. Retrieved from https://www.libreoffice.org/download/download/
  • The Apache Software Foundation. (2019). Apache OpenOffice - Downloads. Retrieved from https://openoffice.apache.org/downloads.html
  • Oracle Corporation and/or its affiliates. (2019). JDK 11.0.2 GA Release. Retrieved from https://jdk.java.net/11/
  • Gluon. (2019). JavaFX. Retrieved from https://gluonhq.com/products/javafx/
  • Gradle Inc.. (2019). Gradle | Releases. Retrieved from https://gradle.org/releases/
  • Wikimedia Foundation, Inc.. (2016/07/21). wmctrl. Retrieved from https://en.wikipedia.org/wiki/Wmctrl
<このシリーズの前の記事 | このシリーズの目次 | このシリーズの次の記事>