brew用の管理者を別IDで設定することの得失

複数人で１台のMacintoshを利用する場合、IDを分けて導入するソフトを決める場合があります。
何台、何十台のMacintoshを管理する場合に、どの機器に何を入れるかの管理を分担することがあります。

 <この項は書きかけです。順次追記します。>
# Homebrew（自家醸造）
複数人、複数台のどちらの場合も、とても強力な道具がHomebrew（自家醸造）です。
Homebrewは、brew（醸造）というコマンドを使い、導入するソフトウェア間の整合性を図るものです。
## brew自体の導入

```
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```

brew 自体はrubyで記述しています。導入もrubyです。macOS にはrubyが導入されています。ネットが繋がっていれば、上記命令を実行してbrewを導入しましょう。

## brew install
brew installで導入するのは、主にコマンドとして利用できるソフトです。
該当するソフトに必要な道具、ライブラリを同時に導入します。
また道具、ライブラリの版が古いものであれば、新しいものを導入します。

## brew cask install
brew cask installで導入するのは、主にアプリケーションフォルダにアイコンを生成し、アイコンをクリックすれば起動するソフトです。

# ソフト導入ソフト　brew
brewはmacosの応用ソフト導入の便利な道具です。

1. brew install appli

例

```
$ brew install gcc
```

2. brew cask install os-appli

例

```
$ brew cask install java
```

### コンパイラ、コマンドラインツール
コンパイル済みのものがうまく入らない場合には、コンパイルするため、X-code及び道具類が必要となる
Apple StoreでXcode検索。AppleのWebで検索すると。
https://itunes.apple.com/us/app/xcode/id497799835?mt=12&ign-mpt=uo=2
「view in Apple Store」
Xcodeが入ったら、次のコマンドを事項して道具類を整備する。

```
xcode-select --install
```
# brew管理者用ID
システム管理者権限は与えないが、アプリ導入権限を与えたいという時に、brew管理者用 IDを設けることがあります。brew_managerという名前だとします。

```
$ su brew_manager
$ password:xxxxxxxx
$ brew update
```

# 得
権限の細分化で作業分担ができる。
関連するシステムの更新が円滑に実施できる。
brewの機能の専門家を養成できる。

# 失・課題
順次記録中です。

## 1 brew管理者のID, Passowordを忘れる
毎日使うIDでないと、ついついbrew管理者のID, passwordを忘れる。
IDは

```
$ ls -al /usr/local/Cellar
total 0
drwxrwxr-x  92 brew_manager   admin  3128  2 27 09:50 .
drwxrwxr-x  20 administrator  brew    680 10 17 18:58 ..
drwxr-xr-x   3 brew_manager   admin   102  9 28 10:39 ant
drwxr-xr-x   5 brew_manager   admin   170 11  9 11:06 apr
drwxr-xr-x   5 brew_manager   admin   170 11  9 11:06 apr-util
...
```
とすれば分かる。

## 2. 慌ててsudoで処理

```
* snip *
tar: Error exit delayed from previous errors.
Error: Failure while executing: tar xzf /Users/brew_manager/Library/Caches/Homebrew/openssl-1.0.2n.sierra.bottle.tar.gz
Warning: Bottle installation failed: building from source.
==> Downloading https://www.openssl.org/source/openssl-1.0.2n.tar.gz
Already downloaded: /Users/brew_manager/Library/Caches/Homebrew/openssl-1.0.2n.tar.gz
Error: Permission denied @ dir_s_mkdir - /usr/local/Cellar/openssl/1.0.2n
```
こんな時、調べてみるとadministratorの所有のフォルダ、ファイルができている。
元に戻すには、brew_manager以外のファイル・フォルダができているフォルダに移動し

```
$ sudo chown brew_manger *
```

##3. その他困った時
まず

```
$ brew update
```
次に

```
$ brew upgrade
``
そして

```
$ brew doctor
```
または

```
$ brew cleanup
```

問題があった時には、報告するように要請が出ることがある。
機密事項を含んでいなければ、積極的にご協力ください。

https://github.com/Homebrew/brew/blob/master/docs/Troubleshooting.md

# 現時点でのまとめ

## 台数と人数
### 人数
同じ機材を何人以上で使うか。二人で使うときから、brewは便利です。一人で使うときでも、頼りにしています。
### 台数
機材を何台管理するか。二台で使うときから、いえ一台だけでも便利です。

一台を一人で使っていても、複数のアプリが、別々の版の同じソフトウェアが必要な場合には工夫が要ります。

21台の機材を、研修用に同じ状態に保ちたいのは至難の技。

## 複数の版
python、tcl/tkのようなスクリプト言語では、版によって機能が違うと、複数の版が必要になることがあります。

brew installでソフトが入ったからといってすぐに有効になるとは限りません。

```
brew install tcl-tk
Updating Homebrew...
==> Downloading https://homebrew.bintray.com/bottles/tcl-tk-8.6.8.sierra.bottle.
######################################################################## 100.0%
==> Pouring tcl-tk-8.6.8.sierra.bottle.tar.gz
==> Caveats
This formula is keg-only, which means it was not symlinked into /usr/local,
because tk installs some X11 headers and macOS provides an (older) Tcl/Tk.

If you need to have this software first in your PATH run:
  echo 'export PATH="/usr/local/opt/tcl-tk/bin:$PATH"' >> ~/.bash_profile
```

echoコマンドと、

```
$ source ~/.bash_profile
```
をしないと有効になりません。

Macintoshでtcl/tk　そのままでも動くのに罠５つに嵌った
https://qiita.com/kaizen_nagoya/items/0bebb8e5a757a7d1b9f2

##使い方
研修のコースごとにIDを振り、他のコースの影響を受けないようにしている。
それぞれに管理の仕方が違うが、brewで導入できるものはbrewで導入することに統一したい。
それぞれのコースの管理者が、システムの管理者とは限らない。

# 参考資料
## 基礎
homebrewとは何者か。仕組みについて調べてみた
https://qiita.com/omega999/items/6f65217b81ad3fffe7e6

##いろんなソフトを入れてみた
Macintosh OS XにEclipseを導入する(５つの壁+1)
https://qiita.com/kaizen_nagoya/items/b17f03db00aceee41a80

MacintoshにWiresharkを導入する５つの壁
https://qiita.com/kaizen_nagoya/items/69eb2d357a125f5368e1

MacintoshにLaTeXを導入する７つの利点と導入方法
https://qiita.com/kaizen_nagoya/items/75be26d34a7432d5700b

Macintoshでtcl/tk　そのままでも動くのに罠５つに嵌った
https://qiita.com/kaizen_nagoya/items/0bebb8e5a757a7d1b9f2

MacintoshでCoqide
https://qiita.com/kaizen_nagoya/items/0314ca15130bdfa9dce2

R(データマイニング入門) Raspbian(Raspberry PI),Mac OSX, docker/ubuntu　６段階。データ取得・導入・起動・実行・描画・一括実行。
https://qiita.com/kaizen_nagoya/items/e8417310129c2425af59

大川知、鈴木大郎　著「コンパイラ　言語処理系の基礎からyacc/lexまで」近代科学社(2008)のソースをMacintoshで実行(java版)
https://qiita.com/kaizen_nagoya/items/1606e97b7f10bf8fe519

brewインストールパッケージメモ
https://qiita.com/ichiro-arai/items/03c9a44cf0862b285420

##不具合対策
MacにHomebrewをインストールする手順とWarningの解決方法
https://qiita.com/unsoluble_sugar/items/6ac1848ba1933ac05c76

brewで管理しているソフトウェアで何かあった時のトラブルシューティングメモ
https://qiita.com/sayama0402/items/d206d5458a3bf6e55140

brew update実行時に、tapエラーがでるときの対処方法
https://qiita.com/saicologic/items/c90a2d79105275b2f2dd

brew update実行時に、Permission deniedになる場合の対処方法
https://qiita.com/saicologic/items/0673f9c8e918312232d8

brew upgrade で Error: Calling Formula.md5 is disabled! 出た時の対処
https://qiita.com/masahixixi/items/2e7e7c1058baa4b5e75c

brewコマンドを実行するとbad interpreterと言われる問題の解決方法
https://qiita.com/pugiemonn/items/b3073855911ba88c0f10

brew update で to_sym エラーが出た時の対処方法
https://qiita.com/hshimo/items/e2ea3c21d8b150e3a055

brew updateがNo such file or directoryで失敗したとき
https://qiita.com/justin999/items/f09c77a17427dbb454ef

Fix brew update error
https://qiita.com/liubin/items/b9f27e75d6a49cc73f2f
まず、brew update; brew upgrade; brew doctorをして欲しい。

goreleaserでHomebrewのFormulaを自動生成する
https://qiita.com/knqyf263/items/53dd0d0916afc5472281

 ＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞

# 文書履歴
ver 1.00 初稿 20180227
ver 1.01 参考文献追記 20180304
ver 1.02 参考文献追記 20180325


### 最後までおよみいただきありがとうございました。

いいね　💚、フォローをお願いします。

#### Thank you very much for reading to the last sentence.

Please press the like icon 💚　and follow me for your happy life.