20210514のMacに関する記事は6件です。

Mac初心者のGoインストール

Goを使ってみたいと思ったのだ。 環境 MacBook Air (M1, 2020) macOS Big Sur 11.3.1 zsh 制約 M1 Macがネイティブサポートされた、go version 1.6以降を入れたい goenvのインストール Homebrewでインストールしたら最新のGoはサポートされていないようだったので、公式のgitからインストールする。 基本は公式のインストール手順に従う。 goenvのclone % git clone https://github.com/syndbg/goenv.git ~/.goenv 環境変数の設定 % echo 'export GOENV_ROOT="$HOME/.goenv"' >> ~/.zshrc % echo 'export PATH="$GOENV_ROOT/bin:$PATH"' >> ~/.zshrc % echo 'eval "$(goenv init -)"' >> ~/.zshrc % echo 'export PATH="$GOROOT/bin:$PATH"' >> ~/.zshrc % echo 'export PATH="$PATH:$GOPATH/bin"' >> ~/.zshrc シェルを立ち上げ直して環境変数を適用する % exec $SHELL goのインストール % goenv install --list % goenv install 1.6.3 % goenv global 1.6.3 % goenv rehash % go version go version go1.16.3 darwin/arm64 備忘録 goenvをupgradeするときはgit pullする $ cd ~/.goenv $ git pull
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Mac初心者の初期環境設定

はじめてMacで開発するので、備忘録 環境 MacBook Air (M1, 2020) macOS Big Sur 11.3.1 シェル コンピューター名が長いので、短くする ターミナルで以下を実行 % cd /Users/Shared/kay/ % touch .zshrc .zshrcに以下の行を記載 PROMPT='%n %c %# ' ターミナルで読み込んで設定を反映 % source .zshrc macのデフォルトシェルはzshなんですね。 とりあえず、そのまま使ってみる homebrewを入れる おとなしく、公式サイトのインストラクションに従ってインストール https://brew.sh/index_ja.html gitのインストール % brew install git % git --version git version 2.30.1 (Apple Git-130) 感想 最初にターミナルを起動する方法が一番難しかった
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Mac-アプリケーションの配布(署名なしPKG)

はじめに... 調査した内容を時系列にまとめた資料なので、その点ご了承ください。 目次 実行環境 実現したいこと 概要 barrierアプリの入手 barrierアプリの変換 barrierアプリをwebサーバへ配置 [参考]スクリプト barrierアプリ配信用スクリプトの配置 まとめ 参考資料 1. 実行環境 項目 情報 OS macOS 11.3.1 HW MacBook Air (11-inch, Mid 2013) MDM環境 microsoft intune 2. 実現したいこと 最終目標 GUIの操作なしにmacのセットアップが行える環境を整備したい ― ※ただし、ユーザが選択する部分を除く 今回の目標 intuneに参加しているmac端末に署名されたpkg以外のアプリを配布したい 3. 概要 intuneでmacOSのアプリを配信するには、署名されたpkgファイルを使う必要がある。しかし、署名されたpkgがない場合には、ライセンス上署名なしに配信する必要がある。 今回は、テストとしてsynergyからフォークした、barrierというアプリを配信する。 また、dmgがマウントできない(デバイス制御されている)環境も考慮し、dmg形式を署名なしpkg形式に変換し、変換したファイルをローカルのwebサーバに配置/配布する。 4. barrierアプリの入手 barrierは、以下githubから入手する。 5. barrierアプリの変換 4.で取得したファイルを署名なしのpkg形式に変換し、最後にzip圧縮しておく。 ※dmgからpkgへの変換手順は、Microsoft社の手順を参考 example) hdiutil attach < app.dmg > ​
pkgbuild --install-location /Applications --component /Volumes/< appname >/< appname >.app < pkgname_1 >.pkg productbuild --synthesize --package < pkgname_1 >.pkg < distribution >.xml ​productbuild --distribution < distribution >.xml --package-path < pkgname_1 >.pkg < pkgname_2 >.pkg​
 hdiutil detach /Volumes/< appname > ​
cp < pkgname_2 >.pkg​ < pkgname >.pkg​ zip < pkgname >.zip < pkgname >.pkg 
 mkdir ~/barrier cp ~/Downloads/Barrier-2.3.3-release.dmg ~/barrier hdiutil attach ~/barrier/Barrier-2.3.3-release.dmg pkgbuild --install-location /Applications --component /Volumes/Barrier/Barrier.app ~/barrier/barrier_1.pkg productbuild --synthesize --package ~/barrier/barrier_1.pkg ~/barrier/distribution.xml​
productbuild --distribution ~/barrier/distribution.xml​ --package-path ~/barrier/barrier_1.pkg ~/barrier/barrier_2.pkg Cp ~/barrier/barrier_2.pkg ~/barrier/barrier.pkg zip ~/barrier/barrier.zip ~/barrier/barrier.pkg 6. barrierアプリをwebサーバへ配置 今回はテストのため、localhostにファイルを配置する 7. [参考]スクリプト 参考にスクリプトを添付する。実装した機能としては ・Mac端末からサーバにアクセスできるかチェック ・アプリがインストール済みであるかの判定 ・ファイルのダウンロード ・ダウンロードしたファイルのshaによるチェック ・アプリのインストール スクリプト本体 #!/bin/bash SHA="4a066d7004417dc7ec65d2bcf428af59c6645740" SERVER_FQDN="localhost" SERVER_IP="127.0.0.1" BARRIER_APP="/Applications/Barrier.app" DOWNLOAD_PKG_URL="http://${SERVER_FQDN}:8080/barrier.zip" PKG_FILE=/tmp/barrier.pkg ZIP_FILE=/tmp/barrier.zip # # check location echo "0000 -- check location" nslookup ${SERVER_FQDN} | grep ${SERVER_IP} 2>&1 if [ $? -eq 0 ]; then echo "location check is success" else echo "location check is not success" exit 1 fi # # barrier install check echo "0001 -- barrier install check" if [ -d "$BARRIER_APP" ]; then echo "barrier is installed" exit 0 else echo "barrier is not installed" fi # # download echo "0002 -- download pkg file" curl -fsSL ${DOWNLOAD_PKG_URL} -o ${ZIP_FILE} # # check sha echo "003 -- check sha1" SHA_CALC="$(shasum ${ZIP_FILE} | cut -d " " -f 1)" echo "SHA : ${SHA}" echo "SHA_CALC : ${SHA_CALC}" if [ "$SHA" = "$SHA_CALC" ]; then echo "download succeeded" else echo "download error re-try" curl -fsSL ${DOWNLOAD_PKG_URL} -o ${PKG_FILE} SHA_CALC="$(shasum ${ZIP_FILE} | cut -d " " -f 1)" if [ "$SHA" = "$SHA_CALC" ]; then echo "download succeeded(2)" else echo "download error(2) stop it" exit 1 fi fi # # unzip pkg file unzip -B ${ZIP_FILE} -d /tmp # # install barrier echo "005 -- install pkg" sudo installer -pkg ${PKG_FILE} -target /Applications if [ $? -eq 0 ]; then echo "install succeeded" exit 0 else echo "install error" exit 1 fi 8. barrierアプリ配信用スクリプトの配置 Microsoft Endpoint Manager Admin Centerにログインし、 デバイス > macOS > シェルスクリプトを開き、追加ボタンをクリック 今回は、以下のようにポリシーを作成/適用。 9. まとめ dmg形式以外のファイルを配布することができた スクリプトについて必要最低限の機能を実装したが、必要に応じて、追加機能が必要と思われる 注意-ファイルのダウンロード元をlocalhostと指定しているため、実行タイミングによっては、エラーになることがあるため、注意が必要 10. 参考資料
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Teradata Studio, Teradata Studio Express (Mac版) のインストール

概要 Teradata Studio, Teradata Studio ExpressはTeradataデータベースを操作するGUIソフトウェアですが、そのMac版のインストーラにはやや問題があり、インストトールが失敗することがあります。 私の経験したのは、適切なJavaプログラムを見つける仕組みの問題でした。 結局、インストールした .pkg ファイルを一度解凍して中のスクリプトを修正し、再度パッケージ化するという荒療治により解決することができました。この方法を紹介します。 参考:Studio Express Mac JDK installation issue | Teradata Forum インストーラの取得 https://downloads.teradata.com からソフトウェアのインストーラをダウンロードします。 Teradata Studio Express Teradata Studio リンク切れの場合は検索すればすぐに見つかると思います。 Mac用には、.pkgファイルが用意されています。 インストーラが機能するかの確認 普通は.pkgファイルをダブルクリックしてウィザードに従っていれば完了なのですが、私の環境では失敗しました。 この失敗への対処を紹介します。 Javaのバージョンの確認 Teradata Studio (Express) は、Java Runtime Environmentのバージョン 1.8, 10, 11 のいずれかを必要とします。これが満たされないとエラーが生じます。悪いことに、たとえ指定のバージョンのJavaがインストールされていても、これが正しく検知されなければやはりエラーがでます。ですので、(1) 指定のJavaバージョンをインストールする (2) それが正しく検知されるようにスクリプトを書き換える、の2手順で対応します。 指定のJavaバージョンをインストールする バージョン 1.8, 10, 11 のいずれかがインストールできれば良いのですが、ここでは AdoptOpenJDK をHomebrew経由でインストールする方法を紹介します。 brew tap AdoptOpenJDK/openjdk brew install adoptopenjdk8 インストールが完了すると、/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/bin/java に、Javaプログラムがインストールされます。 下記はその確認コマンドです。 /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/bin/java -version # openjdk version "1.8.0_252" # OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_252-b09) # OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.252-b09, mixed mode) このバージョンを既定にするには、~/.bash_profile に下記を記載します。 .bash_profile export JAVA_HOME=`/usr/libexec/java_home -v 1.8` PATH=${JAVA_HOME}/bin:${PATH} 次回以降Terminalを開き直すと、次のようになります。 which java # /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/bin/java 参考:HomeBrew で AdoptOpenJDK をインストールしてみた(訂正版)| qiita Javaバージョン判定のスクリプトの修正 残念ながら、指定のJavaバージョンをインストールして既定に設定したとしても、まだTeradata Studio (Express) のインストールは成功しません。中で動いているJavaバージョンの判定スクリプトがあまり頑健でないためです。 そこで、エラー解消のため、スクリプトを直接修正します。 以下では、Expressの場合のコマンドを例として示しますが、適宜 Teradata Studioに読み替えてください。 まず、インストールした.pkgファイルを解凍します。 コマンド最後のTSE.unpkgの部分は、解凍先フォルダで任意です。 pkgutil --expand TeradataStudioExpress.pkg TSE.unpkg すると、Javaのバージョン判定をしているスクリプトが、TSE.unpkg/TeradataStudioExpComponent.pkg/Scripts/preinstall に見つかります(紛らわしいですが、TeradataStudioExpComponent.pkgはフォルダ名です)。 これは、以下のような短いPerlスクリプトです。 Scripts/preinstall #!/usr/bin/perl use strict; use warnings; my $javaversion = `java -XshowSettings:properties -version > /tmp/javaver 2>&1`; my $javaversionhelp = `grep "java.specification.version" "/tmp/javaver"`; my ($jdk, $version) = split /\s*=\s*/, $javaversionhelp; my $retval = 0; if ( $version != 10 && $version != 1.8 && $version != 11 ) { $retval=system("/usr/bin/osascript -e 'tell application \"Finder\"' -e 'activate' -e 'display dialog \"Java Runtime Environment 1.8 or 10 or 11 is required and should be installed before installing Teradata Studio Express Application.\" buttons{\"OK\"} with title \"Teradata Studio Express Warning\"' -e 'end tell'") ; exit(-1); } exit(0); 読み解くと、次のような構成のようです。 javaコマンドでバージョン情報を一時ファイルに書き出し 一時ファイルの該当箇所からバージョン番号を取得 バージョンが 10, 1.8, 11 のいずれかでなければ、警告を出した上でエラー終了 さて、このプログラムが失敗する理由ですが、どうやら使っているjavaコマンドのパスが意図と違っているためです。これは、おそらく.bash_profileに記載した設定が反映されていないためです。したがって、既定バージョンを 1.8 にしたつもりでも、このプログラムではそう判定されません。 さて、プログラムの修正方法ですが、丁寧にやるなら、java コマンド部分をフルパス /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/bin/java に書き換えることです。 しかし、実際のところこのプログラムがしているのはバージョン判定だけで、インストール作業とは関係ないので、無条件でパスさせてしまえば良さそうです。 そこで、プログラムの冒頭を以下のように書き換えます。そうすると、常に成功してプログラムが終了するはずです。 Scripts/preinstallの冒頭 #!/usr/bin/perl use strict; use warnings; exit(0); 上記の編集後、下記のコマンドでパッケージを再構築します。 新しくTSE.pkgが作られます。 pkgutil --flatten TSE.unpkg TSE.pkg TSE.unpkgをダブルクリックしてウィザードに従うと、上手くいけばインストールが成功します。 プログラム実行時のJavaバージョンを設定 インストール時にはバージョン判定を回避することでパスさせましたが、ソフトウェア実行時には、正しく意図したバージョンのJavaを使わせる必要があります。そのためには、プログラムの設定ファイルを編集します(管理者権限が必要です)。 Vimを使っていますが、適宜別のエディタに読み替えてください。 sudo vim /Applications/TeradataStudioExpress.app/Contents/Info.plist 後半部分に 特定のJava version を指定するようにコメントされている部分があるので、そこへ下記を追加します。 Info.plist に追加 <string>-vm</string><string>/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/bin/java</string> 終わりに 以上で設定変更は終わりです。あとは、ランチャーから起動すればソフトウェアが使えるようになっていると思います。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

モジュールのインストールが完了したら、ターミナルから通知をもらいたい

課題 マイクロサービスの環境構築をするときに、 複数のプロジェクトのモジュールをインストールする必要がある。 インストール中に別の作業をしていると、別の作業に集中してしまって、環境構築が進まないことがある。(私が過集中してるだけかもしれない) 解決策 ターミナルで、コマンドを実行し、 5秒以上かかる処理が終わったら通知してくれればいい。 対応環境 Mac OS Zsh(Bashじゃない) Homebrewが入っている 設定方法 brew install terminal-notifier vi ~/.zshrcで下記の内容を追記 .zshrc local COMMAND="" local COMMAND_TIME="" precmd() { if [ "$COMMAND_TIME" -ne "0" ] ; then local d=`date +%s` d=`expr $d - $COMMAND_TIME` if [ "$d" -ge "5" ] ; then COMMAND="$COMMAND " which terminal-notifier > /dev/null 2>&1 && terminal-notifier -message "${${(s: :)COMMAND}}" -m "$COMMAND" -sound Glass; fi fi COMMAND="0" COMMAND_TIME="0" } preexec () { COMMAND="${1}" if [ "`perl -e 'print($ARGV[0]=~/ssh|^vi/)' $COMMAND`" -ne 1 ] ; then COMMAND_TIME=`date +%s` fi } 3, source ~/.zshrc で設定を反映 4, 実行に時間がかかるコマンドを実行して、通知が来ることを確認しましょう
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ターミナルで、モジュールのインストールが完了したら、通知をもらいたい

課題 マイクロサービスの環境構築をするときに、 複数のプロジェクトのモジュールをインストールする必要がある。 インストール中に別の作業をしていると、別の作業に集中してしまって、環境構築が進まないことがある。(私が過集中してるだけかもしれない) 解決策 ターミナルで、コマンドを実行し、 5秒以上かかる処理が終わったら通知してくれればいい。 対応環境 Mac OS Zsh(Bashじゃない) Homebrewが入っている 設定方法 brew install terminal-notifier vi ~/.zshrcで下記の内容を追記 .zshrc local COMMAND="" local COMMAND_TIME="" precmd() { if [ "$COMMAND_TIME" -ne "0" ] ; then local d=`date +%s` d=`expr $d - $COMMAND_TIME` if [ "$d" -ge "5" ] ; then COMMAND="$COMMAND " which terminal-notifier > /dev/null 2>&1 && terminal-notifier -message "${${(s: :)COMMAND}}" -m "$COMMAND" -sound Glass; fi fi COMMAND="0" COMMAND_TIME="0" } preexec () { COMMAND="${1}" if [ "`perl -e 'print($ARGV[0]=~/ssh|^vi/)' $COMMAND`" -ne 1 ] ; then COMMAND_TIME=`date +%s` fi } 3, source ~/.zshrc で設定を反映 4, 実行に時間がかかるコマンドを実行して、通知が来ることを確認しましょう
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む