Introduction

.NET Core をDocker経由で動かしたりしました。

今回はGUIで動かしたいですし、きちんとホストOSに環境を構築します。
対象はRedhat Enterprise Linux 7.3です。

Install .NET Core

結論から良うと、2017/05/16の時点で、.NET Coreの公式ページのRHELへのインストール手順は動きません。
コマンド自体は間違っていませんが、

  • コマンドが古い
    • .NET Core 1.0がインストールされてしまう
  • パッケージが見つからない
    • RHELは下準備が必要

なのです。
実際に、インストールコマンドを入力すると、

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ sudo yum install rh-dotnetcore10
読み込んだプラグイン:langpacks, product-id, search-disabled-repos, subscription-manager
Repo rhel-rs-for-rhel-7-server-eus-rpms forced skip_if_unavailable=True due to: /etc/pki/entitlement/7836591386407218947-key.pem
Repo rhel-7-server-extras-rpms forced skip_if_unavailable=True due to: /etc/pki/entitlement/7836591386407218947-key.pem
Repo rhel-ha-for-rhel-7-server-eus-rpms forced skip_if_unavailable=True due to: /etc/pki/entitlement/7836591386407218947-key.pem
Repo rhel-7-server-eus-rpms forced skip_if_unavailable=True due to: /etc/pki/entitlement/7836591386407218947-key.pem
Repo rhel-7-server-rt-beta-rpms forced skip_if_unavailable=True due to: /etc/pki/entitlement/7836591386407218947-key.pem
Repo rhel-rs-for-rhel-7-server-rpms forced skip_if_unavailable=True due to: /etc/pki/entitlement/7836591386407218947-key.pem
Repo rhel-ha-for-rhel-7-server-rpms forced skip_if_unavailable=True due to: /etc/pki/entitlement/7836591386407218947-key.pem
Repo rhel-7-server-rpms forced skip_if_unavailable=True due to: /etc/pki/entitlement/7836591386407218947-key.pem
Repo rhel-7-server-rt-rpms forced skip_if_unavailable=True due to: /etc/pki/entitlement/7836591386407218947-key.pem
https://cdn.redhat.com/content/beta/rhel/server/7/x86_64/rt/os/repodata/repomd.xml: [Errno 14] curl#58 - "unable to load client key: -8178 (SEC_ERROR_BAD_KEY)"
他のミラーを試します。
警告: 一致するものが見つかりません: dotnetcore
No matches found

となります。

RHELの場合、サブスクリプションを再登録し、リポジトリへ.NET Coreのチャネルを登録する必要があります。
CHAPTER 1. INSTALL .NET CORE 1.0 ON RED HAT ENTERPRISE LINUX

サブスクリプションの再登録

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ subscription-manager unregister
$ subscription-manager clean
# RedHatのアカウントを入力
$ subscription-manager register
登録中: subscription.rhsm.redhat.com:443/subscription
ユーザー名: XXX@YYY.ZZZ
パスワード:
このシステムは次の ID で登録されました: XXXXXXXX-YYYY-ZZZZ-AAAA-BBBBCCCCDDDD
# 日本語環境なら、subscription-manager list --available | egrep "サブスクリプション名|プール ID"
$ subscription-manager list --available | egrep "Subscription Name|Pool"
サブスクリプション名: Red Hat Enterprise Linux Developer Suite
プール ID: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
subscription-manager attach --pool=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
サブスクリプションが正しく割り当てられました: Red Hat Enterprise Linux Developer Suite

リポジトリの登録

1
2
3
4
# workstationなら -server- を -workstation- に変更
$ subscription-manager repos --enable=rhel-7-server-dotnet-rpms
# ついでにベータのリポジトリを無効
$ subscription-manager repos --disable=rhel-7-server-rt-beta-rpms

scl-utilsのインストール

1
$ yum install scl-utils 

.NET Coreのインストール

.NET Core 1.1をインストールします。

  • 誤) dotnetcore10
  • 正) dotnetcore11

です。

1
$ yum install rh-dotnetcore11 -y 

.NET Coreの有効化

まだこの状態では.NET Coreは使えません。下記のコマンドを実行して、.NET Coreを有効化します。

1
$ scl enable rh-dotnetcore11 bash

上記コマンド実行後、同一のシェルのみで、dotnetが使えます。
逆を言えば、別のシェルを立ち上げても、dotnetは使えません。
毎回、上記コマンドを実行するのは面倒なので、

1
$ source scl_source enable rh-dotnetcore11

を実行すれば良い、と前述のRedhatのページに書いてあるのですが、何故か効果がありません。
なので、シェルを立ち上げる際に、毎回自動で実行されるよう、**~/.bashrc**にコマンドを追記します。

1
2
$ su -
$ vi ~/.bashrc

viを起動し、末尾に

1
source scl_source enable rh-dotnetcore10

を追記します。
そして、シェルを立ち上げ直して、dotnetのバージョンを確認します。

1
$ dotnet --version 1.0.0-preview2-1-003177

これで、.NET Coreが利用できるようになりました。

Conclusion

基本となる.NET Coreの導入が完了です。