📝

Linux Mint 20.1にCherryTree(アウトラインプロセッサ)をビルドしてインストールする

2021/03/24に公開

Mint18くらいまではaptで入れれたのに20.1にした途端にデフォルト状態ではFlatpack版しか選択肢がなくなったCherryTreeをビルドしてインストールします。

ちなみにFlatpack版はMint18からグレードアップで20.1にしたら日本語入力出来るという謎現象も起きてます。

わざわざビルドした経緯

aptから消えたので以下のプロジェクトサイトを参考にMintはありませんでしたがUbuntuの手順が大体の場合においてそのまま適用できるのでadd-apt-repositoryで追加してインストールしようと試みました

https://www.giuspen.com/cherrytree/#downl

すると以下のエラーが出ました

次の PPA を追加しようとしています:
 詳しい情報: https://launchpad.net/~giuspen/+archive/ubuntu/ppa
続けるには Enter キーを、キャンセルするには Ctrl + C を入力してください

Executing: /tmp/apt-key-gpghome.WkQbN5bGmx/gpg.1.sh --keyserver hkps://keyserver.ubuntu.com:443 --recv-keys A98E8BBCABCF6A49A5DA2F43B8668B055FE1EFE4
gpg: 鍵B8668B055FE1EFE4: 公開鍵"Launchpad PPA for giuspen"をインポートしました
gpg: 処理数の合計: 1
gpg:               インポート: 1
gpg: invalid key resource URL '/tmp/apt-key-gpghome.WkQbN5bGmx/home:manuelschneid3r.asc.gpg'
gpg: keyblock リソース'(null)': 一般エラーです
gpg: key 1488EB46E192A257: 鍵がないため1個の署名は検査しません
gpg: key 1488EB46E192A257: 鍵がないため1個の署名は検査しません
gpg: key A6616109451BBBF2: 鍵がないため12個の署名は検査しません
gpg: key 3B4FE6ACC0B21F32: 鍵がないため3個の署名は検査しません
gpg: key D94AA3F0EFE21092: 鍵がないため3個の署名は検査しません
gpg: key C8CAB6595FDFF622: 鍵がないため2個の署名は検査しません
gpg: key 871920D1991BC93C: 鍵がないため1個の署名は検査しません
gpg: 処理数の合計: 11
gpg:       スキップした新しい鍵: 11

まぁコレ系はapt-keyでキー受信したらいけるやろって思ってやりましたがそんなもん無いぞって言われてだめでした。。。

ちなみにDockerコンテナ上のUbuntuだと何の問題も出ずにaptでインストールできたのでMint特有の問題かと思います。

そしてググっていたら同様の事象が起きているFAQを発見しそこに対応しますとは書かれていましたが(適当にタブ開きまくってたら見失ってそのURL見つけられなくなった。。。)
それが去年の話で今まだ直ってないということはそういうことなのでしょう。。。

対応すると言ってる以上そのうちaptでインストールできる時代が来るのでしょう
この記事をみて先走って次の手順を試す前に出来るかどうか試してみる価値はあります。

という訳で他の方法を試していきます

気を取り直してFlatpack版を入れる→日本語入力不可
気を取り直してsnap版を入れる→日本語入力不可
虚ろな目で無気力にビルドする。。。→イマココ

という訳でその時の手順を残しておきます。

ビルド手順

手順は以下です。

https://github.com/giuspen/cherrytree#building-cherrytree-on-ubuntu-2004

いらんもん入れたくないのでとりあえずDockerのUbuntuコンテナ内でビルドしてビルド結果をホストOSで動かします。

マルチステージビルドのインストール先がホストOS版みたいな感じだと思えばわかりやすいか?

$ docker run -it -v /usr/local/lib:/usr/local/lib --rm ubuntu bash
root@3231ee9e3af0:/# cd /usr/local/lib/

日本語ロケールでビルドしたいのでコンテナを日本語ロケールにしときましょう

root@3231ee9e3af0:/# cd /usr/local/lib/
root@3231ee9e3af0:/usr/local/lib# apt-get update -y
root@3231ee9e3af0:/usr/local/lib# apt install -y language-pack-ja systemd
〜略〜
Configuring tzdata
------------------

Please select the geographic area in which you live. Subsequent configuration questions will narrow this down by presenting a list of cities, representing the time zones in which they are located.

  1. Africa  2. America  3. Antarctica  4. Australia  5. Arctic  6. Asia  7. Atlantic  8. Europe  9. Indian  10. Pacific  11. SystemV  12. US  13. Etc
Geographic area: 6

Please select the city or region corresponding to your time zone.

  1. Aden      9. Baghdad   17. Chita       25. Dushanbe     33. Irkutsk    41. Kashgar       49. Macau         57. Omsk        65. Rangoon        73. Taipei    81. Ujung_Pandang  89. Yekaterinburg
  2. Almaty    10. Bahrain  18. Choibalsan  26. Famagusta    34. Istanbul   42. Kathmandu     50. Magadan       58. Oral        66. Riyadh         74. Tashkent  82. Ulaanbaatar    90. Yerevan
  3. Amman     11. Baku     19. Chongqing   27. Gaza         35. Jakarta    43. Khandyga      51. Makassar      59. Phnom_Penh  67. Sakhalin       75. Tbilisi   83. Urumqi
  4. Anadyr    12. Bangkok  20. Colombo     28. Harbin       36. Jayapura   44. Kolkata       52. Manila        60. Pontianak   68. Samarkand      76. Tehran    84. Ust-Nera
  5. Aqtau     13. Barnaul  21. Damascus    29. Hebron       37. Jerusalem  45. Krasnoyarsk   53. Muscat        61. Pyongyang   69. Seoul          77. Tel_Aviv  85. Vientiane
  6. Aqtobe    14. Beirut   22. Dhaka       30. Ho_Chi_Minh  38. Kabul      46. Kuala_Lumpur  54. Nicosia       62. Qatar       70. Shanghai       78. Thimphu   86. Vladivostok
  7. Ashgabat  15. Bishkek  23. Dili        31. Hong_Kong    39. Kamchatka  47. Kuching       55. Novokuznetsk  63. Qostanay    71. Singapore      79. Tokyo     87. Yakutsk
  8. Atyrau    16. Brunei   24. Dubai       32. Hovd         40. Karachi    48. Kuwait        56. Novosibirsk   64. Qyzylorda   72. Srednekolymsk  80. Tomsk     88. Yangon
Time zone: 79
〜略〜
root@3231ee9e3af0/usr/local/lib# update-locale LANG=ja_JP.UTF-8
root@3231ee9e3af0:/usr/local/lib# export LANG=ja_JP.UTF-8
root@3231ee9e3af0:/usr/local/lib# date
2021324日 水曜日 10:50:49 JST

OKですね続いて必要なモジュールをインストール

root@3231ee9e3af0:/usr/local/lib# apt install -y build-essential cmake ninja-build libgtkmm-3.0-dev libgtksourceviewmm-3.0-dev libxml++2.6-dev libsqlite3-dev gettext libgspell-1-dev libcurl4-openssl-dev libuchardet-dev libfmt-dev libspdlog-dev gnome-icon-theme git

gitからソースを落としてきてビルド

root@3231ee9e3af0:/usr/local/lib# git clone https://github.com/giuspen/cherrytree.git
root@3231ee9e3af0:/usr/local/lib# cd cherrytree
root@3231ee9e3af0:/usr/local/lib/cherrytree# git submodule update --init
root@3231ee9e3af0:/usr/local/lib/cherrytree# ./build.sh

これが長いんだよ。。。
aptでバイナリ落とせたらこんな事しなくていいのに。。。
最悪Flatpackでもいいけどちゃんと動く状態でリリースしろよ。。。
こんなんだからいつまで経ってもWindowsに勝てずにChromeOSにユーザ食われんだよ。。。
とかグダグダ怨念を垂れ流していたら終わりました。
途中途中Faildとか接続を拒否とか見たくないワードが出てましたが最終的にtestがPASSってなってたんで良しとしました。

で,このビルドしたコンテナはホストOSの/usr/local/libをマウントしてるのでコンテナ落としてもビルドしたモジュールはホストOS側に残ります。

なのでコンテナを落としてビルドした物以外全部消して実際にアプリを動かすホストOSで動作確認します。

root@3231ee9e3af0:/usr/local/lib/cherrytree# exit
1 dev@dev-virtual-machine:/tmp$ /usr/local/lib/cherrytree/build/cherrytree 
** Message: 11:10:39.440: Language overwrite = ja (localedir = /usr/local/lib/cherrytree/po)

(process:188525): Gtk-WARNING **: 11:10:39.443: Locale not supported by C library.
        Using the fallback 'C' locale.
[2021-03-24 11:10:39.486] [   ] [debug] /home/dev/.config/cherrytree/config.cfg parsed
[2021-03-24 11:10:39.569] [   ] [debug] autosave is started

Imgur

いけてるいけてる

たまたまライブラリ揃ってたからすんなり動いたけどこれで動かない時はlddで足りてないライブラリを確認して追加でインストールするだけで動くと思います。

後はMintのメニューにこいつを登録して

MintMateの場合はmozoってアプリがメニューの編集をしてくれるよ
メニューに登録するアイコンは
/usr/local/lib/cherrytree/icons
から好きなの選べばいいと思うよ

Imgur

ランチャから見えるようになってればOKっと

Imgur

というわけで無事動きました

ただ自分が一番信用できないのでaptの問題が解決していたらaptで入れ直そうと思います。
その時は/usr/local/lib/cherrytreeディレクトリを削除して登録したメニューを消すだけです

むかしまっこう、さるまっこう、さるのつべはぎんがりこ

Discussion