ホンモノのエンジニアになりたい

ITやビジネス、テクノロジーの話を中心とした雑記ブログです。

CentOS7.4にLibreOfficeをインストールする

graph


現在(2018/11時点)の最新版LibreOfficeをインストールするにあたりやってみたこと、うまくいかなかったことをダラダラ書きます。世の中に似たようなエントリは多数あるけども、バージョンや環境の違いで微妙に変わることも多く、きっと誰か(未来の自分を含む)の役に立つだろうと思い筆を取りました。

●ゴール
CentOSのシェルからLibreOfficeコマンドが打てるところまで

●環境
CentOS 7.4 x64(virtualbox)
LibreOffice 6.1.3

ダウンロード

まずは本家サイトのダウンロードページ↓にアクセス

https://ja.libreoffice.org/download/libreoffice/

f:id:kwnflog:20181111135420p:plain

インストール環境に合わせたインストーラのダウンロードページが表示されます。

↑のキャプチャはローカルマシンのWindows10からアクセスしているので、Windows x86_64のダウンロードページになっています。インストール環境と別環境からアクセスしている場合は、「変更しますか?」をクリック。

f:id:kwnflog:20181111135551p:plain

OSの選択画面に飛ぶので、該当の環境を選択する。チェックボックスのように見えますが、実はリンクになっているので欲しいインストーラをクリック。私の場合はCentOS x64なので、赤枠の(まるでチェックボックスかのような)リンクをクリック。

f:id:kwnflog:20181111135854p:plain

インストール環境に合致したダウンロード画面に遷移したので、「ダウンロードバージョン」ボタンを右クリックして、「リンクのアドレスをコピー」

(上記キャプチャはChromeで表示した画面です。ブラウザによっては文言が違うので適宜読み替えてください)

すると、クリップボードにURLが格納される。私がやった時は以下のURLがコピーされていました。

https://donate.libreoffice.org/home/dl/rpm-x86_64/6.1.3/ja/LibreOffice_6.1.3_Linux_x86-64_rpm.tar.gz


で、ここからはCentOSのシェル上でコマンドを打っていく。

私はローカルPCの仮想環境でやっていますので、rootユーザで操作しています。必要ならば適宜sudoを入れてroot権限で実行してください。

まずは前手順で得たURLへ向けてwgetコマンドを打ってtarファイルを取得する。

# wget https://donate.libreoffice.org/home/dl/rpm-x86_64/6.1.3/ja/LibreOffice_6.1.3_Linux_x86-64_rpm.tar.gz
--2018-11-11 12:16:07-- https://donate.libreoffice.org/home/dl/rpm-x86_64/6.1.3
/ja/LibreOffice_6.1.3_Linux_x86-64_rpm.tar.gz
donate.libreoffice.org (donate.libreoffice.org) をDNSに問いあわせています... 89.
238.68.168, 2a00:1828:a012:168::1
donate.libreoffice.org (donate.libreoffice.org)|89.238.68.168|:443 に接続してい
ます... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 特定できません [text/html]
`LibreOffice_6.1.3_Linux_x86-64_rpm.tar.gz' に保存中

[ <=> ] 33,308 --.-K/s 時間 0.001s

2018-11-11 12:16:08 (54.3 MB/s) - `LibreOffice_6.1.3_Linux_x86-64_rpm.tar.gz' へ
保存終了 [33308]



何かわかりませんが、インストーラの実体は落ちてこなくて、ダウンロードページのhtmlがtarファイルとして保存されてる。調べてみたけど、わからず。

でも結局はtarファイルがあれば良いはずなので、上で貼った最後のキャプチャ画面で素直にダウンロードボタンをクリックしてローカルPC上にtarファイルを落とす。

でローカルPCからインストール環境へtar.gzファイルを転送。

インストール

ここからはインストール作業です。 まずはtar解凍から。

# tar zxvf LibreOffice_6.1.3_Linux_x86-64_rpm.tar.gz

LibreOffice_6.1.3.2_Linux_x86-64_rpm/
LibreOffice_6.1.3.2_Linux_x86-64_rpm/readmes/
LibreOffice_6.1.3.2_Linux_x86-64_rpm/readmes/README_en-US
LibreOffice_6.1.3.2_Linux_x86-64_rpm/RPMS/

(以下略)

解凍できたら、RPMディレクトリまで移動する。

# cd LibreOffice_6.1.3

# ls -l
合計 16
drwxrwxr-x 2 root root 4096 10月 30 11:24 RPMS
-rwxr-xr-x 1 root root 10490 10月 30 11:24 install
drwxr-xr-x 2 root root 26 10月 30 11:24 readmes

# cd RPMS/

ネットで調べた通りにrpmコマンドでインストール!

# rpm -Uvh *.rpm
エラー: 依存性の欠如:
libXinerama.so.1()(64bit) は libobasis6.1-core-6.1.3.2-2.x86_64 に必要とされています

うわーメンドクセー

ググってもイマイチわからなかったので、yumさんにお任せしてみる。

# yum install *.rpm

ダーっと画面が流れていく中で、以下の出力があったので、yumさんが解決してくれたようです。

依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ libobasis6.1-base.x86_64 0:6.1.3.2-2 を インストール
---> パッケージ libobasis6.1-calc.x86_64 0:6.1.3.2-2 を インストール
---> パッケージ libobasis6.1-core.x86_64 0:6.1.3.2-2 を インストール
--> 依存性の処理をしています: libXinerama.so.1()(64bit) のパッケージ: libobasis6
.1-core-6.1.3.2-2.x86_64


一応書き残しておきます。私の環境では以下の通り、インストール容量として570MBの空き容量が要求されました。ちなみにtar.gzファイルは218MB、解凍後のRPMファイルが220MBくらいなので、作業前に最低1GBくらいは容量を確保しておくのがよろしいかと思われる。環境によっては前提となるライブラリを持っていなかったりすると、更に多くの容量が求められるはずです。tarファイル消せばもう少し少なくなりますけど。

トランザクションの要約
===================================================
インストール 42 パッケージ (+2 個の依存関係のパッケージ)

合計容量: 570 M
総ダウンロード容量: 52 k
インストール容量: 570 M
Is this ok [y/d/N]:

yumコマンドの最後に以下が出力。

依存性関連をインストールしました:
libXext.x86_64 0:1.3.3-3.el7 libXinerama.x86_64 0:1.1.3-2.1.el7
完了しました!

先ほど怒られたライブラリ依存の問題を無事に解決してくれて「完了しました!」と。 うん、元気があってよろしい!

PDF出力しよう、そうしよう♫

動きまへんでしかしっ!!

さて、どちらにインストールされたのやらと探すと、

# find / -name *libreoffice*
/usr/bin/libreoffice6.1
/opt/libreoffice6.1

# ls -l /usr/bin/libreoffice6.1
lrwxrwxrwx 1 root root 35 11月 11 12:43 /usr/bin/libreoffice6.1 -> /opt/libreoffice6.1/program/soffice

実体は/opt/libreoffice6.1/program にあるsofficeらしい。

よし動かそう。コマンドラインオプションは何だったかなとヘルプオプション付きで実行してみる。

# libreoffice6.1 -h

/opt/libreoffice6.1/program/soffice.bin: error while loading shared libraries: libcairo.so.2: cannot open shared object file: No such file or directory


むむむ

libcairo.so.2とかってライブラリが無い。。。

これはググって解決。

Amazon Linuxで同じ問題に直面した方がQiitaに書いてくれていたのでマネする。

Amazon LinuxでLibre Officeをつかう - Qiita

# yum install cairo

->完了しました!

さぁ動け!というかまずヘルプ見せろ!

# libreoffice6.1 -h
/opt/libreoffice6.1/program/soffice.bin: error while loading shared libraries: libSM.so.6: cannot open shared object file: No such file or directory

libSM.so.6 ガ、アリマセン

ここで「ハイハイどうせlibSMとかってやつをyumすればいいんしょ」と思ってやってみると、

# yum install libSM
->完了しました!

yum searchとかinfoコマンドくらい打つべきだったなと少し反省。

ハイッ、で次は何のライブラリが足りないの?ねぇどうせまたでしょ!

# libreoffice6.1 -h
LibreOffice 6.1.3.2 
Usage: soffice [argument...]
argument - switches, switch parameters and document URIs (filenames).
(以下、ヘルプ画面略)


あ、ようやくヘルプ見れた。

ということはーーーー?

# libreoffice6.1 --convert-to pdf /tmp/test.xlsx
javaldx: Could not find a Java Runtime Environment!
Warning: failed to read path from javaldx
convert /tmp/test.xlsx -> /tmp/test.pdf using filter : calc_pdf_Export

できた!

何かJREが無いと引き続き怒られはしてますが、目的であったエクセルファイルのPDFコンバートが上手く動いてくれました。

このJRE無いぞメッセージは、結構昔から確認されているもののようで、ネット上にいくつか情報がありました。まぁ書いてある通り、LibreOfficeがJavaを見つけられないために表示される警告です。

解決しないとCalcのアドオン周りのセッティングが出来ないといった症状が出るようです。私はコマンドラインからファイル変換が出来ればそれでよいので、修正はしませんが、GUI上で「ツール」→「オプション」→「詳細」と進んでJREのパスを教えてあげれば警告を抑止できるらしい。やらないけど。

もしかしたらインストール時に環境変数のJAVA_HOMEとかを持ってれば勝手に読んでくれたかもなぁ。

文字お化け

xlsx->pdf変換が出来たので、作業が捗るぜと思ったら、PDFファイルが文字化けしとりました。関係無いだろうと思いつつ、ダウンロードページにある日本語パッケージを入れたがやはり文字化け。そりゃそうだよね。そういうことじゃないもんね。

色々トライエラーを繰り返して原因切り分けを行いましたが、文字化けの直接的な原因にはたどり着けず。

もしかしたら日本語環境のWindows上で作ったxlsxファイルって中身がSJISになっている?と思ってxlsxをzip展開して中身を調べてみましたが、UTF-8でしたのでCentOSでも中身を読めるはず。

ネット上で調べた感じだと、フォント設定によっては似たような現象が発生するらしいことがわかりました。何か腑に落ちませんが、GUIでファイルを開いてフォントの設定をすることで直るとか。

ここですぐにGUIでやってみればよかったんですが、私はサーバの容量の関係でデスクトップを入れておらず、空き容量も枯渇しておったので何とかGUIを使わない方法で直せないかと思案しておりました。

結果的にはこの選択が泥沼でした。要はコマンド操作やLibreのconfigらしきファイルを探して手動でカチャカチャいじってれば直るんじゃねと思っていたのですが、さにあらず。(出来るのかもしれませんが)

結局は何とか空き容量を確保してデスクトップを入れるという選択になりました。


で、デスクトップ入れました-、LibreOffice開きます-、日本語で表示されてます-

・・・え?

あれ何か日本語で表示されているのだが???

なんもしてないのに。コマンドを打って見よう

# libreoffice6.1 --convert-to pdf /tmp/test.xlsx
convert /tmp/test.xlsx -> /tmp/test.pdf using filter : calc_pdf_Export


それまでJREが無いって怒られていたのに、急に静かになった。出力されたPDFを開いてみると日本語が表示されてる...

何かよくわかりませんが、デスクトップ入れてLibreOfficeを起動したら、文字化けが無くなっておりました。

  • デスクトップ入れた時にJREが一緒に入ってきた?
  • LibreOfficeのGUI起動をトリガーに初期設定が走って文字関連の設定がされた?
  • デスクトップ入れた時に言語設定がなされた?

考えられるのは以上の三点。2つ目と3つ目が怪しいですね。

原因を追究したい気持ちはあるものの、目的は別のところにあるためここでお終い。

時間が出来たら追及してみようと思います。(こういう時は大抵しない)

おわり