月別アーカイブ: 2020年2月

Launchd が Catalina で動かなかった理由

悩みました。悩んでもらちがあかないので、色々試してようやく理由がわかりました。わかってしまえば簡単で、 Catalina のセキュリティ設定でした。

経緯

内容については割愛しますが、 1 日に数回起動したいシェルスクリプトがありまして、それを macOS の最近の流れに従って launchd に登録してみました。ところが動きません。エラーを吐くように、 ErrorPath も指定してやってもエラーすら吐きません。

Console としばしにらめっこして、 Console に Service could not initialize と言うエラーメッセージが出ていることに気がつきました。検索してみたのですが、よく分かりません。 Catalina 以前の検索結果ばかりで、あまりしっくりくるものがありませんでした。私の探し方が悪かった可能性はあります。

解決

私は、ホームディレクトリにファイルを置くのは好きではありません。理由は簡単で、 iMac の SSD を容量圧迫させたくなかったためです。ほぼ全てのファイルを愛用している外付け HDD においています。アクセス速度が必要なファイルは( VM などですね ) 、 USB-C 接続の外付け SSD に入れています。

さて、問題のスクリプトも外付け HDD に入れてあります。これが原因でした

macOS のセキュリティ設定でフルディスクアクセスと言うのがあります。悪さをするアプリがディスクにアクセスするのを防ぐために、ユーザーにアプリがそのようなことをすることに関する許可を与えるようになっています。

外付け HDD にあるスクリプトは、この機構に引っかかってディスクアクセスできずにいたのですね。試しにスクリプトをホームディレクトリ直下においてみると、起動したときに「ディスクアクセスを許可するや否や!」というダイアログが出ます。ここで許可してやれば、スクリプトはきちんと動作します。

解決はしたけれど …

じゃ、外付け HDD のスクリプトにも許可を与えてやれば良いじゃないか。と言うことで、システム環境設定のところで外付け HDD のスクリプトを Drag&Drop して登録してみました。結論から言うと、最初のエラーを吐いて起動すらしてくれません。

ホームディレクトリ直下にフォルダを作ってそこにスクリプトを入れてやると動作します。どうもしっくりこないのですが、外付け HDD からの起動には何か別の認可の方法が必要なのかもしれません。

動いているので、文句はないのです。スクリプトそのものも数百バイトです。 SSD の容量圧迫など問題にならない大きさですね。しかし、しっくりこないです


思考には気をつけよう。いつ口に出してしまうかわからないから。

イアラ・ガッセン

楽天から出店の依頼が来た

今をときめく楽天様から「出店しませんか」という電話がかかってきた。ちょっと驚いた。まぁ、出店しないけどね。

一体なぜ私のところにかかってきたのかというと、以前 (4 〜 5 年前 ) 、 Amazon さんで間違えてオーダーした IDE のハードディスクケースを Amazon さんで売買する契約を結んで販売していたことがあるんですね。その時の情報を引っ張り出してきたみたいです。そんな情報、私自身忘れてましたし、言われるまで「なんで私?」状態でした。

ただ、その売買は成立しないままで終わらせました。なので、それを楽天さんが拾って電話してきたことはちょっと驚きでしたよ。

楽天さんと言えば、送料の問題でもめてますよね。 Amazon さんと楽天さんでは単純に比較できないわけで、楽天さんも Amazon さんと同じような集積センターのでっかいのを作って「送料は楽天が持つから、集積センターの使用料とるよ」的な方向で送料問題かたつけないと、泥沼になると思うわけですよ。

もう一つ、個人情報はやっぱり 1 度公開してしまうと、いろんなところにダダ漏れ。っていうのがわかりました。わかっているから一定の個人情報までは躊躇なく出せるんですけどね。 4 〜 5 年前のほんの一時期公開していた情報が、今になってこういう形で利用される。そう言うのがイヤな人は、住所とか電話番号とかを公開してはいけません。鉄則ですよ。

そんなこんなで、電話でセールスしてくるのは ( 個人的に ) 嫌いなので、けっこうです。の一言で終わりました。楽天さん、もっと良いリストを使って営業した方がいいですよ。


恩恵を施す者はそれを隠せ。恩恵を受けるものはそれを公にせよ。

セネカ