Ubuntu に Mono を導入する

no extension

今回は Mono および Mono で動くアプリケーションを導入する。

Mono の導入

Mono を導入するにはリポジトリの登録から始める必要がある。 gnupgca-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 が落ちる

Ubuntu19.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系統の製品を持っている。 両者の棲み分けは以下のような感じらしい。

via ASCII.jp:.NET Core / .NET Framework / Xamarin / Monoの関係を整理する

つまり Linux や macOS,あるいは iOS や Android の GUI アプリケーションとしては Mono/Xamarin,サーバ・サイドあるいはクラウド向けには .NET Core ということのようだ。 さらに将来的には Windows アプリケーション向けの .NET Framework,マルチプラットフォーム向けの .NET Core と Mono/Xamarin の基盤を共通化すると表明されている。

via ASCII.jp:.NET Core / .NET Framework / Xamarin / Monoの関係を整理する

そうなったら Mono も役目を終える感じになるのかねぇ。

ブックマーク