Ubuntu に Mono を導入する
今回は Mono および Mono で動くアプリケーションを導入する。
Mono の導入
Mono を導入するにはリポジトリの登録から始める必要がある。
gnupg
と ca-certificates
は既に入ってるみたいなので公開鍵のインポートとソースリストの追加から。
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
$ echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
$ sudo apt update
続いて mono-devel
を導入する。
$ sudo apt install mono-devel
インストール処理が完了したら念のため動作確認をしておこう。
$ mono -V
Mono JIT compiler version 5.20.1.19 (tarball Thu Apr 11 09:02:17 UTC 2019)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notifications: epoll
Architecture: amd64
Disabled: none
Misc: softdebug
Interpreter: yes
LLVM: yes(600)
Suspend: hybrid
GC: sgen (concurrent by default)
よーし,うむうむ,よーし。
KeePass の導入
KeePass は OSS のパスワード管理ツールで,基本的には Windows 用だが各種プラットフォーム用のバージョンが公開されている。 Ubuntu では APT で導入可能である。
$ sudo apt show keepass2
Package: keepass2
Version: 2.39.1+dfsg-1
Priority: optional
Section: universe/utils
Origin: Ubuntu
...
ちょっとバージョンが古いがプラットフォームが違うし,まぁいいだろう。 インストールしてしまおう。
$ sudo apt install keepass2
インストールが完了するとドックのアプリボタンで表示されるアプリ一覧にアイコンが追加される。 あとは Windows 版と同じように使える。
パスワードを覚えるなんて脳みその無駄遣い。 適切な管理ツールでパスワード管理を行いましょう。
Git Extensions の導入
Git Extensions は .NET Framework 上で動く git 用の GUI フロントエンドだが, Mono 版もあって他プラットフォームでも利用できる。 ただし Mono 版はバージョン 2 系までしか対応していないので注意が必要である。
ダウンロードページから Mono 版の最新バージョンをダウンロードする。
適当なディレクトリにダウンロードした zip ファイルを unzip
コマンドで展開する。
GitExtensions
ディレクトリが作成されてファイルが展開されている筈である。
展開されたファイルの中に gitext.sh
があるので,これに実行権限を付与して起動する。
今後のためにパスを通しておいたほうがいいだろう。
最初に Git Extensions を起動すると言語の選択ウィンドウが表示される。

日本語があってよかったね。 あとは Windows 版と同じ。
けど Windows 版と比べて操作感がイマイチなんだよなぁ。 まぁ Git Extensions をメインに作業するわけではないので,これでもいいか。
【追記 2019-04-20】 Git Extensions が落ちる
Ubuntu を 19.04 にアップグレードしたら Git Extensions が落ちるようになってしまった。
似た事例がないかと探してみたら GitExtensions/Plugins/Bitbucket.dll
を削除したら行けるみたいな記述を見かけたので試してみたら上手く行ったっぽい?
やれやれだぜ。
Git Extensions の代わりになるような GUI フロントエンドを探しているのだがいいのがない。 コミットやタギングで電子署名を付与できて結果を検証できればいいのだが,特にタギングに署名できる製品がない。 GitKraken v5.0 ならいけると思ったのだが設定画面が分かりにくい上にフリー版だと署名の検証ができないっぽい?
.NET Framework と Mono と .NET Core
.NET Framework と Mono と .NET Core の関係がいまひとつ分からなかったのでちょろんと調べてみた。 かなり大雑把な説明なのはご容赦。
.NET Framework
.NET Framework が最初に公開されたのは2001年。 基盤となる CLI (Common Language Infrastructure) や CLR (Common Language Runtime) は標準化され Windows 以外のプラットフォームでも実装可能となるよう設計されたが,実際にはリファレンス実装である .NET Framework は Windows 以外には対応しなかった。 まぁ,当時の Microsoft は FOSS に敵対的だったし,それもやむなしというところだろうか。
Mono と Xamarin
当然ながら,.NET Framework に対抗する OSS 製品を作ろうという動きがあり,そのうちのひとつが Mono Project であった。 Mono はマルチプラットフォームで動作するアプリケーション基盤として実装されているのが特徴である。
Mono を巡っては紆余曲折があったが(生臭い話は省略),最終的に Xamarin が開発母体となった。
Xamarin は Mono Project のオーナー企業であると同時に Mono を基盤とした製品群を指すようだ。 なので今後は Mono/Xamarin と一括りにしてしまおう。
企業としての Xamarin は後に Microsoft に買収され Mono/Xamarin は Microsoft 傘下である .NET Foundation において今も開発が続けられている。
.NET Core
一方,実質 Windows でしか動作しない .NET Framework の派生として .NET Core が Microsoft からリリースされた。 .NET Core はマルチプラットフォームで動作する OSS 製品として,こちらも .NET Foundation で開発が行われている。
ここに於いて Microsoft は経営方針の大転換を果たしたわけだ。
.NET Core と Mono/Xamarin
現在 Microsoft は OSS の .NET シリーズとして .NET Core と Mono/Xamarin の2系統の製品を持っている。 両者の棲み分けは以下のような感じらしい。
つまり Linux や macOS,あるいは iOS や Android の GUI アプリケーションとしては Mono/Xamarin,サーバ・サイドあるいはクラウド向けには .NET Core ということのようだ。 さらに将来的には Windows アプリケーション向けの .NET Framework,マルチプラットフォーム向けの .NET Core と Mono/Xamarin の基盤を共通化すると表明されている。
そうなったら Mono も役目を終える感じになるのかねぇ。