モッピー!ポイ活応援ポイントサイト
未分類

solanaをM1で動かす

Solana開発ツールをM1Macにインストールする方法

新しいM1MacでSolanaの開発を始めたばかりの場合は、今すぐ髪を抜いている可能性があります。Solanaの公式インストールガイドに従い、solanaCLIコマンドを初めて実行したため、すべてが順調に進んでいました。しかし、solana-test-validatorコマンドを使用してバリデーターを起動しようとするとすぐに、次のエラーメッセージが表示されます。

dyld: Library not loaded: /usr/local/opt/openssl@1.1/lib/libssl.1.1.dylib
  Referenced from: /Users/123/.local/share/solana/install/active_release/bin/solana-test-validator
  Reason: image not found
zsh: abort      solana-test-validator

たぶん、あなたはエラーメッセージを読み、賢くなり、OpenSSLをインストールしました…ただ別のエラーメッセージに出くわすだけです:

Ledger location: test-ledger
Log: test-ledger/validator.log
⠁ 
zsh: illegal hardware instruction  solana-test-validator

🧐😕

ここでの問題は、新しいM1 MacがARMベースのアーキテクチャを使用しているのに対し、Solana開発ツールはIntelベースのx86チップ用に作成されていることです。ここでの解決策は、光沢のある新しいMacbookを販売したり、古いラップトップを取り出したりすることではありません。幸い、Rosettaという便利なツールを使用して、Appleシリコンで実行される方法でソースコードからSolanaを再コンパイルできます。

1.最初からやり直します

Solanaのガイドに従って環境をセットアップしようとした場合、最初に行うことは、すべてをアンインストールして最初からやり直すことです。

Finderでターミナルアプリを見つけることから始め、⌘Iキーストロークを使用してFinderのインスペクターウィンドウを開きます。[ Rosettaを使用して開く]オプションが無効になっいることを確認し、ターミナルを再起動します。

スクリーンショット2021-09-29at 11.38.58 AM

これで、先に進んですべてをきれいにアンインストールできます。まず、Solanaをアンインストールしましょう。

rm -rf /Users/USERNAME/.local/share/solana/
rm [-f] [-i] [-r] [-v] FILE…

rmコマンドは、FILE...に指定したファイルと空のディレクトリを削除します。ディレクトリを削除する場合には、そのディレクトリ配下にファイルやディレクトリがあってはいけません。ただし、オプション「-r」を指定すると、空でないディレクトリを削除できます。

オプション
① -f
通常、FILE...に指定したファイルやディレクトリが存在しない場合には、エラーが発生します。しかし、このオプションを指定するとファイルやディレクトリの存在するものだけを削除し、エラーは発生しません。
② -i
FILE...に指定したそれぞれのファイルやディレクトリの削除の前に、削除するかどうか問い合わせます。
③ -r
FILE...に指定したディレクトリが空でなくても削除します。
④ -v [Linux][FreeBSD]
処理内容を出力します。

次に、Rustをアンインストールします。

rustup self uninstall

2.ロゼッタを設定します

SolanaとRustをアンインストールすると、ローカルの開発環境はクリーンな状態になり、最初からやり直すことができます。今回は、最初にRosettaをインストールすることから始めましょう。

/usr/sbin/softwareupdate --install-rosetta --agree-to-license

次に、Finderウィンドウに戻り、ターミナルアプリケーションの複製コピーを作成します。

スクリーンショット2021-10-01at 12.30.51 PM

ターミナルの2つのバージョンを作成します。1つはRosettaを使用し、もう1つは使用しません。複製したTerminalインスタンスにTerminalRosettaという名前を付けることをお勧めします。これにより、使用しているバージョンが常に明確になります。

ターミナルRosettaバージョンでRosettaを有効にするには、⌘Iもう一度キーストロークを使用してFinderのインスペクターウィンドウを表示し、[Rosettaを使用して開く]オプションが有効になっいることを確認します。

スクリーンショット2021-10-01at 12.35.23 PM

これ以降は、ターミナルRosettaアプリのみを使用するため、既存のターミナルウィンドウを閉じるか最小化して、混乱しないようにすることをお勧めします。次のセクションのために、ターミナルロゼッタウィンドウを開いてください。

3.依存関係をインストールします

Solanaを実行するために必要なすべての依存関係を詳しく調べてインストールしましょう。でターミナルロゼッタシェル、錆をインストールするには、次のコマンドを実行します。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

次に、Homebrewをインストールしましょう。コマンドはarch -x86_64プレフィックスで始まることに注意してください。これにより、Rosettaはx86命令セットを使用して次のコマンドを実行するように指示されます。

arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

OpenSSLもインストールしましょう:

arch -x86_64 brew install openssl@1.1

次に、CargoがマシンのRustコードをコンパイルする方法を認識できるように、構成ファイルを設定する必要があります。で新しいファイルを作成し、~/.cargo/config次のビルド構成に貼り付けます。

[target.x86_64-apple-darwin]
rustflags = [
  "-C", "link-arg=-undefined",
  "-C", "link-arg=dynamic_lookup",
]

[target.aarch64-apple-darwin]
rustflags = [
  "-C", "link-arg=-undefined",
  "-C", "link-arg=dynamic_lookup",
]

4.Solanaをインストールしてビルドします

Solanaソースコードを保存できる安定したディレクトリに移動します。たとえば、のすべてのプロジェクトにアンブレラフォルダを使用しています~/Developer

Solanaリポジトリのクローンを作成してから、Solanaディレクトリに移動します。

git clone https://github.com/solana-labs/solana.git
cd solana

次に、Cargoを使用してSolanaソースコードをコンパイルしましょう。

cargo build

次に、インストールスクリプトを実行します。少し時間がかかりますので、お気軽にコーヒーをお召し上がりください。

./scripts/cargo-install-all.sh .

エラーが出たのでこれを試した。https://swaroopmaddu.medium.com/solana-installation-in-macbook-m1-b08582d50db1

最後に、PATHターミナルがSolanaCLIコマンドの場所を認識できるように更新します。

export PATH=$PWD/bin:$PATH

質問のコマンドを実行すると、エラーメッセージが表示されます。

$ PATH =$PATH:`pwd`
bash: PATH: command not found

スペースがタイプミスであり、実際にこれを実行する場合:

PATH=$PATH:`pwd`

次に、現在のシェルセッション(ターミナルを閉じた場合)の間、現在のディレクトリ(現在のディレクトリpwdのパスを`pwd`出力し、の出力に置き換えられるコマンドpwd)をPATH変数に追加します。説明する:

$ pwd
/home/terdon/foo  ## I am in /home/terdon/foo

$ echo $PATH ## the current PATH
/home/terdon/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

$ PATH=$PATH:`pwd`
$ echo $PATH
/home/terdon/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/terdon/foo

現在のディレクトリ/home/terdon/fooPATH変数の最後に追加されていることに注意してください。



たたーみなるあたらたーみなるあたらsターミナル新しく開いたら動かなくなった

  • .zshenv
    • ログインシェル、インタラクティブシェル、シェルスクリプト、どれでも常に必要な設定を定義する
    • zsh が起動して、必ず最初に読み込まれる設定ファイル
    • 対話形式のシェル設定をここですると、シェルスクリプト誤作動の原因になるため注意する
    • 影響範囲が大きいので記述は必要最低限にするべき
  • .zprofile
    • ログインシェルに必要な設定だけを記述する
    • zshenv の次に読み込まれる設定ファイル
    • zsh ログイン時の一回だけ読み込まれる
  • .zshrc
    • ログインシェル、インタラクティブシェルの場合に読み込まれる
  • .zlogin
    • ログインシェルに必要な設定だけを記述する
    • 最後に読み込まれる
    • 役割は .zprofile とほぼ一緒。混乱を避けるため併用しないこと
  • .zlogout
    • exit コマンドで zsh を抜けたときに読み込まれる

https://suwaru.tokyo/zshenv/

環境変数というのは、solanaとかのコマンドを打ったときに本当はフルパスでコマンドを指定しなきゃいけないんだけど、PATHを設定しておくとそのPATHの中にあるファイルの中からsolanaを探して実行してくれるというもの。

PATHの確認 echo $PATH

PATHの変更 ユーザーディレクトリにある .zshenvに、使いたいコマンドがあるパスを追加する。

.npmとか、今ユーザーディレクトリ直下にインストールしているコマンドはPATHを設定していなくても動く。

exportでは一時的にしか動かない。

5.遊んでください!

ここまでできたら、おめでとうございます!これで、Solanaソースコードが正常にダウンロードされ、Rosettaを使用してコンパイルしてM1Macで実行できるようになりました。 すべてが期待どおりに機能していることを確認しましょう。まず、SolanaCLIコマンドを使用できることを確認してください。

 

solana

そして今、真実の瞬間のために、ローカルテストバリデーターを起動しましょう!

solana-test-validator

すべてが正しく構成されている場合、バリデーターは実行を開始し、次のようにステータスを出力します。

スクリーンショット2021-10-01at 4.04.29 PM

今、あなたのローカルマシン上で実行されているソラナバリデータを持っているなどのコマンドを実行することができますsolana balanceし、solana transferあなた自身の個人的なDevNetのにトランザクションを提出します。

ノート

このガイドのフォロー中に問題が発生した場合は、コメントでお知らせいただくか、TwitterでDMを送信して、改訂版を公開してください。あなたが作ったものを見るのが待ちきれません!

ABOUT ME
たけ
はじめまして! たけといいます。 20代男性サラリーマンが資産運用で5年で3000万をめざします。 これを読んで自分でも出来るのではないかと思ってくれる人が増えると嬉しいです。 お金を得ることは手段に過ぎません。若いうちに稼いで、自分の時間をより大切なことに使いたいです。 【2019投資戦歴】 投資資金合計 300万 2019年度単年損益(年利) FX 15万(15%) 投信 9万(7%) 株式 4万(8%) ※投信、株式は含み益