GNU/Linux >> Linux の 問題 >  >> Linux

Raspberry Pi への PowerShell Core のインストール (.NET Core を利用)

今週の初めに、Raspberry Pi に .NET Core と Docker をセットアップしたところ、ポッドキャストを実行できることがわかりました。 Pi で非常に簡単に Web サイトを作成できます。投稿が多いのでチェックしてみてください。 Linux コンテナー内でテストし、テスト結果をホストに出力してから、VS で開くことができます。また、マルチアーチとマルチステージの両方を備えたかなり複雑な Dockerfile についても調べました。コンテナー内、または Windows または Linux のベア メタル上で、Web サイトを確実に構築およびテストできます。とても楽しいです。

主に Windows 開発者として、"test.bat" や "dockerbuild.bat" などのバッチ/コマンド ファイルをたくさん持っています。それらは自動化の小さな使い捨てのビットとして始まりますが、プロジェクトが必然的に複雑になるにつれて.

私は誰かに PowerShell を「売る」ことに興味はありません。 bash が好きなら、bash を使ってください。シェル スクリプトと同様に、これは便利です。 PowerShell はパイプラインでオブジェクト指向であり、実際のオブジェクトのリストを標準出力として移動します。彼らは異なっており、最も重要なことは、一緒に暮らすことができるということです。 Python スクリプトを bash から呼び出すのと同じように、PowerShell スクリプトを bash から呼び出すことも、その逆も可能です。ツールキットのもう 1 つのツールです。

PS /home/pi> Get-Process | Where-Object WorkingSet -gt 10MB

NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
0 0.00 10.92 890.87 917 917 docker-containe
0 0.00 35.64 1,140.29 449 449 dockerd
0 0.00 10.36 0.88 1272 037 light-locker
0 0.00 20.46 608.04 1245 037 lxpanel
0 0.00 69.06 32.30 3777 749 pwsh
0 0.00 31.60 107.74 647 647 Xorg
0 0.00 10.60 0.77 1279 037 zenity
0 0.00 10.52 0.77 1280 037 zenity

Bash およびシェル スクリプトは非常に強力です。それは全世界です。しかし、これはテキスト ベース (または新しいものでは json) であるため、多くの場合、テキストについてより多くのことを考えています。

pi@raspberrypidotnet:~ $ ps aux | sort -rn -k 5,6 | head -n6
root 449 0.5 3.8 956240 36500 ? Ssl May17 19:00 /usr/bin/dockerd -H fd://
root 917 0.4 1.1 910492 11180 ? Ssl May17 14:51 docker-containerd --config /var/run/docker/containerd/containerd.toml
root 647 0.0 3.4 155608 32360 tty7 Ssl+ May17 1:47 /usr/lib/xorg/Xorg :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
pi 1245 0.2 2.2 153132 20952 ? Sl May17 10:08 lxpanel --profile LXDE-pi
pi 1272 0.0 1.1 145928 10612 ? Sl May17 0:00 light-locker
pi 1279 0.0 1.1 145020 10856 ? Sl May17 0:00 zenity --warning --no-wrap --text

好きなだけ持っていけます。ある人にとっては直感力であり、他の人にとってはバロックです.

pi@raspberrypidotnet:~ $ ps -eo size,pid,user,command --sort -size | awk '{ hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }'
0.00 Mb COMMAND
161.14 Mb /usr/bin/dockerd -H fd://
124.20 Mb docker-containerd --config /var/run/docker/containerd/containerd.toml
78.23 Mb lxpanel --profile LXDE-pi
66.31 Mb /usr/lib/xorg/Xorg :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
61.66 Mb light-locker

ポイントは、選択肢があるということです。これは、Linux ユーザーの観点から見た PowerShell に関する素晴らしい記事です。 Raspberry Pi (または任意の Linux マシン) に PowerShell をインストールして、両方の場所で同じスクリプトを使用できますか?はい。

長年にわたり、PowerShell は Windows 専用のものであり、閉鎖的な Windows エコシステムの一部でした。実際、これは私が 12 年近く前に (私は銀行で働いていました)、PowerShell について Jeffrey Snover と話しているビデオです。現在、PowerShell はオープン ソース (https://github.com/PowerShell) で公開されており、多くのドキュメントとスクリプトもオープン ソースになっています。 PowerShell は、Windows、Mac、および半ダースの Linux でサポートされています。おなじみですか?これは、オープン ソースのクロス プラットフォーム .NET Core を (エヘム) 搭載しているためです。ここから PowerShell Core 6.0 をどのプラットフォームでも入手できます。

インストールしませんか? Docker で数秒で起動

docker run -it microsoft/powershell

甘い。 ARMv7 ベースの Raspberry Pi で Raspbian はどうですか?私は Raspbian Jessie を実行していましたが、PowerShell は Raspbian Stretch (新しい) でサポートされているため、Jesse から Stretch にアップグレードしました (そして、その間にファームウェアを片付けて実行しました):

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade
$ sudo sed -i 's/jessie/stretch/g' /etc/apt/sources.list
$ sudo sed -i 's/jessie/stretch/g' /etc/apt/sources.list.d/raspi.list
$ sudo apt-get update && sudo apt-get upgrade -y
$ sudo apt-get dist-upgrade -y
$ sudo rpi-update

涼しい。今、Raspberry Pi 3 で Raspbian Stretch を使用しています。PowerShell をインストールしましょう。これらは、最も基本的な入門手順です。前提条件やパスに問題がある場合は、GitHub で高度な詳細情報を確認してください。

<ブロック引用>

注: ここでは、PowerShell Core 6.0.2 を取得しています。今後これを読む場合は、リリース ページで新しいリリースを確認してください。私は 6.1.0 (プレビュー中) も使用して成功しました。次の 6.1 プレビューでは、.NET Core 2.1 にアップグレードされます。評価だけの場合は、最新のバグ修正が含まれているため、最新のプレビューを入手してください。

$ sudo apt-get install libunwind8
$ wget https://github.com/PowerShell/PowerShell/releases/download/v6.0.2/powershell-6.0.2-linux-arm32.tar.gz
$ mkdir ~/powershell
$ tar -xvf ./powershell-6.0.2-linux-arm32.tar.gz -C ~/powershell
$ sudo ln -s ~/powershell/pwsh /usr/bin/pwsh
$ sudo ln -s ~/powershell/pwsh /usr/local/bin/powershell
$ powershell

素敵です。

<ブロック引用>

落とし穴: Jessie から Stretch にアップグレードしたため、libssl1.0.0 が libssl1.0.2 に読み込まれるというバグに遭遇しました。これは、PowerShell と .NET Core 2.0 の間の相互作用に関する複雑なネイティブの問題であり、修正中です。心のようにアップグレードされたマシンだけがそれを行いますが、sudo apt-get remove libssl1.0.0 で簡単に修正できます

これは、PowerShell ビルド スクリプトが Windows と Linux の両方で機能することを意味します。これは非常に些細な例 (1 行だけ) ですが、Linux に *.ps1 ファイルの目的を知らせるために先頭にある "shebang" に注意してください。つまり、Raspbian で bash/zsh/fish を引き続き使用できますが、どのプラットフォームでも「build.ps1」または「test.ps1」を引き続き使用できます。

#!/usr/local/bin/powershell
dotnet watch --project .\hanselminutes.core.tests test /p:CollectCoverage=true /p:CoverletOutputFormat=lcov /p:CoverletOutput=./lcov

以下は、まったく無作為ですが素敵な PowerShell の例です:

PS /home/pi> Get-Date | Select-Object -Property * | ConvertTo-Json
{
"DisplayHint": 2,
"DateTime": "Sunday, May 20, 2018 5:55:35 AM",
"Date": "2018-05-20T00:00:00+00:00",
"Day": 20,
"DayOfWeek": 0,
"DayOfYear": 140,
"Hour": 5,
"Kind": 2,
"Millisecond": 502,
"Minute": 55,
"Month": 5,
"Second": 35,
"Ticks": 636623925355021162,
"TimeOfDay": {
"Ticks": 213355021162,
"Days": 0,
"Hours": 5,
"Milliseconds": 502,
"Minutes": 55,
"Seconds": 35,
"TotalDays": 0.24693868190046295,
"TotalHours": 5.9265283656111105,
"TotalMilliseconds": 21335502.1162,
"TotalMinutes": 355.59170193666665,
"TotalSeconds": 21335.502116199998
},
"Year": 2018
}

オブジェクト、ハッシュテーブル、JSON などとの間で PowerShell オブジェクトを取得できます。

PS /home/pi> $hash | ConvertTo-Json
{
"Shape": "Square",
"Color": "Blue",
"Number": 1
}
PS /home/pi> $hash = @{ Number = 1; Shape = "Square"; Color = "Blue"}
PS /home/pi> $hash

Name Value
---- -----
Shape Square
Color Blue
Number 1


PS /home/pi> $hash | ConvertTo-Json
{
"Shape": "Square",
"Color": "Blue",
"Number": 1
}

これは MCPMag からの素晴らしいものです:

PS /home/pi> $URI = "https://query.yahooapis.com/v1/public/yql?q=select  * from weather.forecast where woeid in (select woeid from geo.places(1) where  text='{0}, {1}')&format=json&env=store://datatables.org/alltableswithkeys"  -f 'Omaha','NE'
PS /home/pi> $Data = Invoke-RestMethod -Uri $URI
PS /home/pi> $Data.query.results.channel.item.forecast|Format-Table

code date day high low text
---- ---- --- ---- --- ----
39 20 May 2018 Sun 62 56 Scattered Showers
30 21 May 2018 Mon 78 53 Partly Cloudy
30 22 May 2018 Tue 88 61 Partly Cloudy
4 23 May 2018 Wed 89 67 Thunderstorms
4 24 May 2018 Thu 91 68 Thunderstorms
4 25 May 2018 Fri 92 69 Thunderstorms
34 26 May 2018 Sat 89 68 Mostly Sunny
34 27 May 2018 Sun 85 65 Mostly Sunny
30 28 May 2018 Mon 85 63 Partly Cloudy
47 29 May 2018 Tue 82 63 Scattered Thunderstorms

または、不快になりたい場合はワンライナーで。

PS /home/pi> (Invoke-RestMethod -Uri  "https://query.yahooapis.com/v1/public/yql?q=select  * from weather.forecast where woeid in (select woeid from geo.places(1) where  text='Omaha, NE')&format=json&env=store://datatables.org/alltableswithkeys").query.results.channel.item.forecast|Format-Table

例: Windows 固有の AIP を使用しているため、これは Linux では機能しませんが、Windows マシンに PowerShell がある場合は、このワンライナーでクールなデモを試してみてください:

iex (New-Object Net.WebClient).DownloadString("http://bit.ly/e0Mw9w")

考え?

スポンサー :JetBrains Rider:クロスプラットフォームの .NET IDE を確認してください。 ASP.NET、.NET Framework、.NET Core、Xamarin、または Unity アプリケーションを編集、リファクタリング、テスト、およびデバッグします。詳細を確認し、30 日間の試用版をダウンロードしてください!


Linux
  1. .NET Core でのクロスプラットフォーム ファイル名の処理

  2. 自己完結型の ASP.NET Core アプリケーションを Ubuntu で実行する

  3. .Net Core で Linux デーモンを作成する方法

  1. RaspberryPIにNagiosCoreをインストールしてセットアップする方法

  2. Linux 上の .NET Core 用 NuGet

  3. Linux 上の .NET コア X509Store

  1. Debian10に.NETCoreをインストールする方法

  2. Kali Linux に PowerShell をインストールする

  3. Visual Basic は Linux 上の .NET Core でサポートされていますか?