High Sierra10.13.6でSSHトンネリング
10.13.6に上げたら,これまでの方法ではSSHトンネリングできなくなった。オプション-oKexAlgorithms=+diffie-hellman-group1-sha1を指定するとできるようになった。
10.13.6に上げたら,これまでの方法ではSSHトンネリングできなくなった。オプション-oKexAlgorithms=+diffie-hellman-group1-sha1を指定するとできるようになった。
MacのTimeMachineバックアップに使っているディスクのUSBケーブルを間違って抜いてしまい,HDDを壊してしまった。立ち上げのたびに,修復できないからフォーマットするようにというメッセージが出るようになって書き込みもできない。最新版のファイルはMac本体にあるので,フォーマットした場合に失われるのは4年ほど前まで遡れる変更履歴ということになる。それで,ちょっと欲張って,データを別のHDDに移動させてからフォーマットすることにした。
問題は,膨大な数のファイルを迅速にコピーする方法。最初は素直にFinderを使ってコピーしようとした。そうしたら,ファイルサイズの計算を始めてしまい,一晩経っても終わらない。これでは話にならないので,ターミナルを開いてcp -Rでコピーすることを試みた。こちらは,直ちにコピーが始まったが,速度が速かったのは丸一日ちょっとくらいで,2日目になると大して大きく無いファイルでもコピーするのに何秒かかかるようになってしまった。結局,一番早くて速度低下が起きなかったは,
tar -cf – ./Backups.backupdb |(cd /Volumes/NewHDD/ ; tar -xvpf – )
を実行することだった。ただし,古い方のバックアップディスクにcdし,lsを実行した時にBackups.backupdbが見える状態でこのコマンドを実行する。/Volumes以下は,コピー先のHDDの名前とその中にあるコピー先フォルダまでを指定する。
コピー中は,リスクはあるが,ウイルスチェックソフトの実行は止めておくこと。コピーの度にチェックがかかると,数が多いだけにかかる時間が馬鹿にならない程度延びる。また,ディスクは
Mac OS拡張(ジャーナリング)でフォーマットするしかないが,ファイル変更履歴が記録されるので,単純コピーなら,ジャーナルはオフにしておく。dfするなどして,/dev以下のどれがコピー先ディスクか確認した後で
diskutil disableJournal disk***
を実行する。***には,/dev以下にあるデバイスの名前の一部が入る。
ただ,今回はこの努力は結局無駄になり,ディスクの内容は救い出せなかった。コピーは順調だったのだが,コピー元4TBディスクで3TB使用,コピー先4TBで行ったところ,コピー先の容量が3.5TBを超え,使用しているブロック数もコピー元をとっくに超えているのにコピーが終わらない。どうも,ディスクを壊した時に,読み出しでどこかでループに入るような壊れ方をしたらしい。特に失われた重要ファイルも無く,何ヶ月も前のファイルが必要になる可能性はほとんど無かったので,結局諦めて,壊れたディスクを再フォーマットして新たにバックアップを作成することにした。
High SierraにしたらこれまでできていたSSHトンネリングができなくなってしまった。どうも、Ciphersも明示的に指定して、
ssh -oHostKeyAlgorithms=+ssh-dss -oCiphers=+aes256-cbc 自分@メールサーバ -L 110:127.0.0.1:110 -L 25:127.0.0.1:25
のようにやらないといけないらしい。必要があればsudoで。
なにぶん昔のパソコン雑誌というかマイコン雑誌のスクラップなので、そのまま実行はできないだろうけど。参考資料として。
MICRO(さよならジュピター).pdf(50.8MBほどあるので回線細いところでクリック注意)
仕事場とおうちのMacBook Pro(macOS Sierra 10.12.6)に、Jupyter notebookとjuliaなどをインストールしたのでメモ。
最近は普通のアプリばっかりインストールしてるしTeXはインストーラがあるしで、パッケージからのインストールをずっとしていなかった。その間にOSのバージョンも上がったりしてるので、まずはbrewのアップデートから。なお、開発ツールのXCodeは最新版をインストール済みなので、インストールしていない場合はまずApp Storeからインストールしておくと後が楽かも。
$ brew doctor
を実行して、特にアップデートせよというメッセージが出なければ次の作業はすっ飛ばして参考サイトの通りに実行すれば良い。私の環境では、Warningがいくつか出た後、
You haven't updated for at least 24 hours. This is a long time in brewland!
To update Homebrew, run `brew update`.
と表示されたので、まずは素直に、
$ brew update
を実行。すると、
You should probably change the ownership and permissions of /usr/local
back to your user account.
sudo chown -R $(whoami):admin /usr/local
と表示された。/usr/localの所有者って、rootにしておくのかなと思っていたのだけど、どうも違うらしい。実は、長く使っている間にroot:admin, root:wheel, apj:admin(私)が/usr/local以下に混在している状態になっていたので、この際、root:wheelに統一しようかと思って試してみたのだけど、rootを所有者にした後で、root権限でbrewを実行しようとするとできなくなっていた。仕方がないのでまたも素直に、
$ sudo chown -R $(whoami):admin /usr/local
を実行。その後で、
$ brew update
を実行すると、暫く待たされた後でアップデートが完了した。/usr/local/Homebrew以下にbrewの関連ファイルが置かれた状態になる。which brewすると/usr/local/bin/brewが出るが、これはシンボリックリンクで、実体は/usr/local/Homebrew/bin/brewである。
これでbrewのアップデートが終わったので、チェックのために
$ brew doctor
を実行すると、
/usr/local/bin/brew: line 9: /usr/local/bin/readlink: Bad CPU type in executable
/usr/local/bin/brew: line 9: /usr/local/bin/readlink: Bad CPU type in executable
/bin/bash: /usr/local/Library/Homebrew/brew.sh: No such file or directory
となって動かない。どうも、システムの方は64-bitで動いているのに、/usr/local/bin/readlinkが32-bitで動いているということらしい。変なものを動かすのもアレなので、
$ sudo find / -name "readlink" -ls
して探してみると、
421811 24 -rwxr-xr-x 1 root wheel 27456 7 15 13:27 /usr/bin/readlink
1153733 32 -rwxrwxrwx 1 apj admin 13772 3 10 2004 /usr/local/bin/readlink
が見つかった。多分、/usr/bin/readlinkが正解で、/usr/local/bin/readlinkは2004年のもの……ってめっちゃ古い!古いやつが入ってる理由は忘れたが、LaTeXインストールの関係でexport PATHをした時に/usr/binよりも/usr/local/binを先に見に行くようになってしまったので古い方を先に見つけてしまうということになったらしい。そこで、(削除しちゃっても問題ないんだろうけどとりあえず)
$ mv /usr/local/bin/readlink /usr/local/bin/readlink.2004.old
と名前を変えてからwhith readlinkすると、/usr/bin/readlinkを見つけてくれるようになった。これで、エラーは出なくなった。再度、brew doctorすると、/usr/local/libにbrewで管理してないライブラリがあってトラブルの元だと警告されるが、とりあえず無視し、
Warning: Xcode alone is not sufficient on Sierra.
Install the Command Line Tools:
xcode-select --install
に対応。コマンドラインからxcode-select –installを実行すると、「”xcode-select”コマンドを実行するにはコマンドライン・デベロッパ・ツールが必要です。ツールを今すぐインストールしますか?」という表示が別ウィンドウで開くので、インストールをクリック。XCodeを入れていなければ、XCodeも一緒にインストールするボタンもあるのでそちらをクリックすれば良い。
Warning: Your XQuartz (2.7.7) is outdated.
Please install XQuartz 2.7.11 (or delete the current version).
XQuartz can be updated using Homebrew-Cask by running
brew cask reinstall xquartz
と、
Warning: Some installed formula are missing dependencies.
You should `brew install` the missing dependencies:
brew install pcre
には対応しておく。いずれもそれぞれ一番下の行をコマンドラインにコピペしてEnterを押すだけ。
$ brew prune
も実行しておく。
やり方はhttps://qiita.com/Haji-Fuji/items/9e3d6ca46eb02f3c241fに書いてある通り。まずはpyenvからインストール。以下の内容を1行ずつコピペして実行。
$ brew install pyenv
$ brew install pyenv-virtualenv
環境変数の登録。
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
登録したら、shellに設定を読み込ませる。
$ source .bash_profile
pyenvを使ってanacondaなどをインストール。以下を1行ずつコピペして実行。
$ pyenv install 3.6.0
$ pyenv install anaconda3-4.3.1
$ pyenv global anaconda3-4.3.1
$ conda create --name py3.6.0 python=3.6.0
$ pyenv local anaconda3-4.3.1/envs/py3.6.0
$ pyenv global system
$ source $PYENV_ROOT/versions/anaconda3-4.3.1/bin/activate py3.6.0
コマンドラインから1行ずつ以下を入力して実行するだけ。
$ pip install jupyter
$ pip install "ipython[notebook]"
起動するには、
$ jupyter notebook
終了するにはCtrl-Cを入力。
juliaをインストールするには、gfortranとcmakeが必要になる。gfortranはgccに統合されたので、gccをインストールすれば自動的にgfortranも使えるようになる。
$ brew install gcc
して、whitch gfortranを実行し、/usr/local/bin/gfortranと出ることを確認。cmakeの方は、
$ brew install cmake
で良い。
https://qiita.com/phigasui/items/8af41d1bcbe7ef276cfeを参考にした、というかほとんどこのサイトの通り。
$ sudo xcodebuild -license
を実行すると、license agreementが表示されるので、spaceを叩いて最後まで読んで、’q’で抜けたあと、agreeするかどうかきかれるので、agreeタイプしてEnter。
juliaをもらってくる。
$ git clone https://github.com/JuliaLang/julia.git
ダウンロードが終わったら、
$ cd julia
$ git tag
スペースを叩いて最後まで見ると、v0.6.2がある。
$ git checkout v0.6.2
次に、
$ system_profiler SPHardwareDataType | grep Cores
を実行すると、ウチの環境ではTotal Number of Cores: 4と出たので、上記サイトのアドバイスに従って
$ make -j4
を実行。ただ、makeする前にターミナルのログをクリアするか、新しいターミナルウィンドウでやった方が良い。コンパイル時間は長いしメッセージが長大で最長不倒メッセージかこれは、って勢いなので、途中でどんなエラーが出たかは後から検索して探すことになる。だからクリアしてからやらないと、これ以前の手順で出たエラーまでひっかかって面倒臭い。別の仕事をしてお茶淹れて休憩して……くらい待てば終了。
コンパイルが完了すると、$Home/julia/usr/bin/juliaができてて、これが実体。
パスを通すために、$Homeに戻り、.bash_profileの最後に、
source ~/.bashrc
を追加する。~./bashrcには、
alias julia='~/julia/usr/bin/julia'
と書いておく。書き換えたら忘れず、source ~./bash_profile。juliaと入力して、実行されることを確認する。抜ける時はCtrl-D。
上記サイトの手順通りで、juliaから行う。まずjuliaを起動し、ターミナルで
julia> Pkg.update()
julia> Pkg.add("IJulia")
となるように1行ずつ入力して実行。インストールできているかどうかのチェックは、
$ jupyter kernelspec list
Available kernels:
Available kernels:
julia-0.6 $Home/Library/Jupyter/kernels/julia-0.6
python3 $Home/.pyenv/versions/anaconda3-4.3.1/envs/py3.6.0/share/jupyter/kernels/python3
$ jupyter notebook
右上のNewをクリックすると、JuliaとPythonが選べるようになっていれば多分OK。
MarsEdit 4が出たのでバージョンアップしたのだが、自動でできるはずの3のファイルの読み込みができない。ウィンドウに「MarsEdit failed to import your existing data: “DataSources.plist” couldn’t be copied because you don’t have permission to access “MarsEdit4”.」と表示される。そのままcontinueすると、空のデータファイルができてしまう。
MarsEdit 3のデータファイルは、もともと /Users/apj/Library/Group Containers/493CVA9A35.com.red-sweater/Library/Application Support/MarsEdit である。複数のコンピューターで編集する場合があるので、このファイルを、別のフォルダに移動させ、元の場所にはシンボリックリンクのみを残して使っていた。が、MarsEdit4はシンボリックリンクの先を正しく見てくれないようである。
解決策としては、別の場所に置いていたMarsEditフォルダを(安全のため)複製し、上記の場所に置いてから、MarsEdit4を走らせると、データファイルを読み込んでくれた。なお、最初に、ブログの数+αくらいのキーチェーンのパスワードを訊かれる。2回目以降は特に問題なく動いたので解決はした。
ただ、バージョン4になって、データファイルの場所には実体がないと動かなくなってしまった。シンボリックリンクでは認識されない。念のため、上記のパスにできたMarsEdit4を移動させ、シンボリックリンクやエイリアスを置いてみたが、MarsEdit4を走らせると消されてしまうことがわかった。これでは、データファイルを移動させるのもできないし、クラウドに置くこともできなくて、却って不便である。
https://qiita.com/quattro_4/items/f5b56c1897c0cc235c0f
xattr -rc /Applications/LegacyAwesome.app
LegacyAwesome.appは、開きたいアプリのパスに適宜置き換えること。
作業時間管理のために、https://timingapp.com/のTiming.appというのをちょっと前から試していたわけだが、こいつを動かした状態で、Igor Pro 6.Xを使うと、Igorのコマンドウィンドウに”AppleEvent Processing err: system error #-609.”というメッセージが表示される。このエラーメッセージは、作業の途中で一時的に開くウィンドウを閉じる度に発生するので、Igorのコマンドウィンドウが、大量のエラーで埋まることになる。たとえば、グラフを表示させようとして、グラフにするためのwaveを選ぶウィンドウを表示させ、選んで、OKをクリックすると、グラフ自体は正常に表示されるのだが、実行したグラフ表示コマンドに並んでこのエラーが出る。どの操作をしても、ウィンドウを閉じるタイミングで出るし、操作によっては複数回発生して、操作を終えたとたんに数行にわたって同じエラーが表示される。
最初はOSのライブラリか何かが壊れたのかと思って、10.10で使っていたのを10.12にしたのだけど症状は変わらず。Igor Proの方を7.xに変えたら起きなくなった。
Igorの方を7にすると、Carbon対応のXOPが全部動かなくなるので、新しいXcodeとXOP Toolkit7でコンパイルし直しをすることになって、いろいろ作業しているうちに、もしや、と気づいてTiming.appを止めたらエラーが出なくなった。
ネットを調べてもこのエラーへの対処方法ってあんまり出てないし、AppleScriptを使っててこけると出ることがある、くらいしかわからなかったのだけど、アプリの起動状況を調べるのにイベントに干渉したりしてるんかね。試用期間も過ぎていたので、残念ながら、Timing.appは使わないことが決定。
事務処理仕事をしていたら問題発生。学科M先生から届いたメールのメッセージからはファイルが添付されているようなのに、受信したメッセージには添付ファイル有りのアイコンが全く出ない。ソースを表示させてみると、メッセージの中にエンコードされたでっかいブロックが入っているので、添付ファイルのデータ自体は受信できている模様。しかし、受信トレイで一覧を表示させても、添付ファイルありのマークも出ないし、メッセージを開いても、本文中にも末尾にも何も出ない。メッセージを.eml形式で保存してMacの「メール」で開くと、署名の前にファイルのアイコンが出る。
添付ファイル開始部分は、
Content-Disposition: attachment;
filename*=iso-2022-jp”2017%1B%(以下文字コード)
Content-Type: application/octet-stream;
name=”=?iso-2022-jp?B?MjAxNxs(以下文字列)
Content-Transfer-Encoding: base64
のようになっている。
送信側はMacの「メール」で、こいつでattachmentではなくinlineでファイル添付すると、ThunderbirdやOutlookで受信した場合に添付ファイルとして認識されないという問題が報告されていた。http://www.okhotskbirds.com/macmailtempu.html
しかし今回は、attachmentと明記されている(Content-Typeがoctet-streamだというのが少々不穏な気もするが)。いろいろ試した結果、Thunderbird側のメールの表示形式を、表示>メッセージの表示形式>プレーンテキスト、にしていると、添付ファイルが認識されないことがわかった。「シンプルHTML」あるいは「オリジナルHTML」を選んだ時は、受信一覧にも添付ありのマークが出るし、メッセージ末尾に添付ファイル有りのマークも出る。
表示にhtml形式を選んでもいいのだけど、怪しいhtmlファイルだと面倒なので、このへんを参考にして、「Show All Body Parts」というアドオンを入れて、表示>メッセージの表示形式>すべての本文パーツを選ぶことで、かなり余計なものまで表示されるが、一応は解決した。
https://www.python.org/downloads/から、最新版の3.6.1をダウンロードして、インストーラーをクリック。
アプリケーションフォルダに、Python 3.6というフォルダーができる。
https://www.activestate.com/activetclに行き、ウィンドウの下の方のCommunity EditionのDownloadをクリック。プラットフォーム別にいくつかバージョンが表示されるので、Macの8.5.18.0をダウンロード。パッケージをクリックして展開しインストーラを実行(ctrl+ダブルクリックで開く、を選ばないと開発元不明で開けないかも)。
https://atom.io/から、ATOMの最新版をダウンロードしてインストール。インストールが終わったら一度実行する。File→Settingsを選び、タブから「+Install」を選ぶ。「atom-runner」「japanese-menu」を検索してインストール。終わったら一度終了してまた実行。メニューの日本語化を確認。
Atom→個人設定、を選ぶ。ウィンドウ内にconfig.csonが表示されるので、
runner:
scopes:
python: “/Library/Frameworks/Python.framework/Versions/3.6/bin/Python3”
という内容を追加。これで、エディタ内からpythonのプログラムを実行できる。
これだけだと、pythonで日本語を表示しようとするとエラーになるので、Atom→起動スクリプト、を選んで、次を追加。必要なのはPython用の設定のみだが、Javaのことも考えて、ついでに設定しておく。
process.env.JAVA_TOOL_OPTIONS = ‘-Dfile.encoding=UTF-8’
process.env.PYTHONIOENCODING = “utf-8”;
これで、control+rでプログラムが実行できる。