nDiki : シンボリックリンク

シンボリックリンク - symbolic link

ツール

  • symlinks

2021年1月5日 (火)

最近の Unisonビルドする

双方向ファイル同期化ツール Unison File Synchronizer、 Mac で使っているのが Unison 2.48.6 の GUI 版なのだけれど、古いせいか macOS Catalina だと「Install command-line tool」 が機能しない(/usr/bin にインストールしようとしているからかな)。

macOS 上で text UI 版がちょっと使いたい & GUI 版も新しいのにしたいなと思ってビルドとかした。

現在の Unison のバージョン

2021年01月05日時点での安定版は 2.51.3

Homebrew で入れる

 $ brew install unison

で text UI 版の「unison version 2.51.3 (ocaml 4.10.0)」が入る。GUI 版は入らない。

macOS Catalina 上でビルドする

Unison 最新版のバイナリ配布が見当たらないのでビルドしてみる。 Xcode が必要。

 $ xcode-select --install

で入る Command Line Tools だけだと text UI 版の Unison しかビルドできないので App Store から Xcode をインストールした。

OCaml は Homebrew ので済ます。

 $ brew install ocaml

今日時点で入るのは OCaml 4.10.0 だ。次に Unison 2.51.3 をビルドする。

 $ cd ~/tmp
 $ curl -OL https://github.com/bcpierce00/unison/archive/v2.51.3.tar.gz
 $ tar zxvf v2.51.3.tar.gz
 $ cd unison-2.51.3
 $ make all

make だけだと text UI 版しかビルドされないので make all してみた。が残念 GUI 版はエラーで途中で止まった。今はうまくビルドできないのかもしれない。

諦めて make で text UI 版だけバイナリを得ることにした。 make 後

 $ ./src/unison -version

で実行できることを確認。 ./src/unison を適当なところにコピーしておく(これなら brew install unison で十分だった)。

FreeBSD 上でビルド

ローカルホストの Unison とリモートホストの Unison のバージョンが合っていないと同期できないのでリモートホスト側 (FreeBSD 9.1-RELEASE-p24) でも同じバージョンのものをビルドする。さくらのレンタルサーバ プレミアムで root 権限はないのでユーザー権限にて。

まずは OCaml。最近の OCaml は opam というのでインストールして使うのが流儀らしい。 opam をインストール。

 $ cd ~/tmp
 $ mkdir bin
 $ curl -OL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh
 $ BINDIR=$HOME/tmp/bin sh install.sh

リモートホストの環境に合ったプレビルドが無いとエラーが出て install.sh ではインストールできず。

OCaml の前に遡って opam のビルドをする。

 $ cd ~/tmp
 $ curl -OL https://github.com/ocaml/opam/archive/2.0.7.tar.gz
 $ tar zxvf 2.0.7
 $ cd opam-2.0.7
 $ gmake cold CONFIGURE_ARGS="--prefix ~/tmp/opam"
 $ gmake cold-install

ビルドできた。opam を初期化する。

 $ PATH=$HOME/tmp/opam/bin:$PATH
 $ opam init

gpatch が無いとエラーで止まった。 patch へのシンボリックリンクで gpatch を作ってイケるかなと思ったけど今度は別のエラーで止まる。うーん。 opam で OCaml をインストールするのは断念。

OCaml のドキュメントを読んだら今まで通り configure して make も普通にできるじゃない。

 $ curl -OL https://github.com/ocaml/ocaml/archive/4.10.0.tar.gz
 $ tar zxvf 4.10.0.tar.gz
 $ cd ocaml-4.10.0
 $ ./configure --prefix $HOME/tmp
 $ gmake
 $ gmake install

次に Unison 2.51.3 をビルドする。出来上がったバイナリは今使っている Unison 2.48.3 と併用できるように別のディレクトリへ。

 $ cd ~/tmp
 $ curl -OL https://github.com/bcpierce00/unison/archive/v2.51.3.tar.gz
 $ tar zxvf v2.51.3.tar.gz
 $ cd unison-2.51.3
 $ PATH=$PATH:$HOME/tmp/bin
 $ gmake
 $ ./unison -version
 $ mkdir -p $HOME/local/unison-2.51.3/bin
 $ cp -a src/unison $HOME/local/unison-2.51.3/bin

サイト

[ 1月5日全て ]

2021年3月3日 (水)

今日のさえずり: ひな祭りなのでから持たされた餅を食べます

[ 3月3日全て ]

2022年1月15日 (土)

今日のさえずり: 電子レンジで温めたカントリーマアムうまーい

image:/nDiki/2022/01/15/2022-01-15-101548-nDiki-900x1200.jpg

  • 08:59 惚れ惚れする曲線。すっきりとした空。 #photography RICOH GR IIIx #GR #GRIIIx #GR3x https://t.co/RkFemjGvv6
  • 13:34 午前中にパイ活動してきた。カスタードクリームとメープルシロップソースのハーモニー。 なお、隣の人は話題のハッシュポテト食べてた。 https://t.co/ftt0Y5DUAy
  • 14:56 カクノにブルーブラックインキを入れた。 透明オレンジ、めちゃかわいい! https://t.co/kkEWQMb6BU
  • 15:17 普段 B (太字)から研ぎ出した F (細字)で走り書きしているのでカクノの F が結構細く感じた。 でも店頭に透明オレンジの M (中字)は無かったので、カラー優先でこれでヨシ。
  • 15:20 ロルバーン ポケット付メモMに書くならカクノの F (細字)合ってるかもね。 M (中字)で走り書きするならロルバーン ポケット付メモLぐらいのノートがいい。
  • 15:58 シンボリックリンクだと思って削除したの、1つだけ通常のファイルだった。消えた。
  • 15:59 ふう、 Time Machine バックアップから戻した。
  • 16:21 電子レンジで温めたカントリーマアムうまーい。
  • 19:24 シャワートイレの電源ランプが猛烈に点滅している。取扱説明書によると点検時期が来ていることを表しているらしい。
  • 23:50 2022年1月15日(土) やったこと - 洗面室引き戸の戸車を掃除 - カナディアンメープルカスタードパイ - カクノ 透明オレンジにインクを入れる - カントリーマアムを電子レンジで温め

[ 1月15日全て ]

2022年2月9日 (水)

MkDocs でワーキングノートを GitHub Pages にデプロイし公開する

Markdown で書いているノートを「公開で作業する」というコンセプトで社内で公開するのに、 GitHub Enterprise Server (以下 GHE) の GitHub Pages を使ってみることにした。

静的サイトジェネレータ MkDocs には GitHub Pages にデプロイする機能が入っている。GHE 上のリポジトリに対しても問題なく動いた。

手順1: MkDocs をインストール

 $ pip3 install mkdocs mkdocs-material

手順2: GHE でリポジトリを作成

GHE 上で notes リポジトリを作成する。プライベートでも OK。

手順3: MkDocs プロジェクトを作成する

 $ git clone git@example.com:Naney/notes.git
 $ cd notes
 $ git config user.name 'WATANABE Yoshimasa'
 $ git config user.email naney@example.com

MkDocs 設定ファイルと Markdown ファイルは既存の Obsidian vault の中にそれぞれ置いておき、シンボリックリンクしておくことにする。

 $ ln -s /path/to/vault/Settings/mkdocs.yml

mkdocs.yml 内で以下を指定しておく。

 docs_dir: /path/to/vault/notes

手順4: MkDocs ビルトインサーバでどのようなサイトになるか確認する

 $ mkdocs serve

を実行し、 Web ブラウザで http://127.0.0.1:8000/ に接続しどのように表示するか確認する。

手順5: GitHub Pages にデプロイする

 $ mkdocs gh-deploy

を実行すると gh-pages ブランチ上に静的サイトが生成され、リモートリポジトリに push してくれる。 GHE のリポジトリ側も自動で gh-pages ブランチを GitHub Pages で公開するように設定してくれる。びっくり。 https://example.com/pages/Naney/notes/ が公開 URL になる。

あとは Markdown ファイルを追加・更新・削除したら必要に応じて mkdocs serve で確認しつつ、 mkdocs gh-deploy していけば良い。

やってみると思ったよりお手軽だった。

GitHub Pages は公開

プライベートリポジトリでも GitHub Enterprise Server の GitHub Pages サイトは公開となるので、組織内で限定公開するには境界型セキュリティに頼ることになる。ゼロトラストと考えるなら、漏洩してはならない情報を書かないよう注意して使うべきだ。

[ 組織内公開ワーキングノートサイト ] [ 公開で作業する ]

[ 2月9日全て ]

2022年3月8日 (火)

Obsidian vaults を完全に分離する

Obsidian vault 内の一部フォルダをシンボリックリンクを使って別の vault で参照する運用をしていたのだけれど、それをやめて vaults を分離することにした。参照されている側でノートタイトルを変更した時に、参照している側の vault を気にかける必要があるのが心理的に良くないなと。 過去試してみたネスト vault も含め、vaults 間で直接ノートを共有するのはやはり evil だ。

なお、単一の Obsidian vault を好む人もいるけれど自分は複数の vaults を使い分けた方が好み。

[ 3月8日全て ]

2022年5月9日 (月)

Google ドライブのフォルダへのショートカットが gshortcut ではなくなっていた

少し前から Google ドライブ

ショートカットでマイドライブをシンプルに 数週間以内に、複数のフォルダに保存されているアイテムはショートカットに置き換わります。ファイルとフォルダへのアクセス権は変更されません。

と表示されるようになった。

バックアップと同期」で同期している Mac 側でショートカットがどうなるか2年前に調べた時は、フォルダのショートカットが拡張子 gshortcut のファイルになっていてうーんとなったんだった。

「パソコン版 Google ドライブ」になった現在はどうだろうと思って確認してみたら、Google ドライブ上でのフォルダのショートカットは Mac 上では localhost のポートに smbfs マウントしたボリュームの中にあるディレクトリへのシンボリックリンクという凝った作りになってた。

以前の仕様と違って、ショートカット先のフォルダ内のファイルをローカルアプリケーションから直接読み書きできる。

smbfs の先にあるので Time Machine バックアップ対象にならないことに留意が必要だけれど、それ以外は問題なさそうだな。

今日のさえずり: 「きっぷ」と「切符」の使い分け方を知った

[ 5月9日全て ]

2022年6月11日 (土)

パソコン版 Google ドライブでマイドライブと同期するフォルダの場所を Google Drive にする

最初に「バックアップと同期」で同期した時に作られた「Google ドライブ」フォルダのままでマイドライブを同期してきた。日本語を含んでいると面倒だなと思いつつ、手間を考えてずっとそのままにしていた。

今日「Google ドライブ」フォルダ階層の中に Logseq graph を作ろうとしたところ不具合が発生した(Logseq を初めて試した時にハマった挙動を忘れていた)のを機に、とうとう名前を変更することにした。

パソコン版 Google ドライブでいったんアカウントの接続を解除し、再度設定する時にマイドライブと同期するフォルダの場所で「Google Drive」を指定して同期しなおし。

同期が終わったあと念のため以前の同期フォルダである「Google ドライブ」フォルダ FreeFileSync で比較。 Google ドキュメント (.gdoc) などに差分があるけれどもこれらは問題なし。 Google ドライブの1つのフォルダに同名ファイルが複数あった場合にローカルではファイル名に (1)、(2) と付加されるのだが、付与順序が変わってファイル名が一部入れ替わったものがあったがこちらも問題なし。

あとは「Google ドライブ」を含むパスを設定しているところや、関係するシンボリックリンクなどを修正しておしまい。

[ 6月11日全て ]

2022年8月24日 (水)

サブセットとしての「見せ Obsidian vault」

Markdown 形式で書いて MkDocs を通した提案資料をたまにミーティングで画面共有している。書きやすいけどミーティング中に書いて更新するのがちょっと不便。直接 Obsidian のライブプレビュー画面を共有した方がいいな。

Obsidian vault 内の共有ノートが入っているフォルダに対するシンボリックリンクを置く形で、サブセットとしての「見せ Obsidian vault」を新しく作った。これで安心して Obsidian のウィンドウを Google Meet で画面共有できる。

実際に画面共有してミーティングしたところ、何段階かズームインして文字を大きくすればいい感じだった。

今日のさえずり: 「抵触」とするところを「定食」と書いていたのでこっそり修正した

[ 8月24日全て ]

2022年11月26日 (土)

Logseq graph を分割して Obsidian vault の中に入れる

Obsidian のサブとして Logseq使い始めた。過去うまくいかなかったのでメインの Obsidian vault の中に Logseq graph を置くのはやめて

という形でスタートしたのだけれど、やっぱりこれは面倒で1つにまとめたくなった。

かといって Obsidian vault フォルダ = Logseq graph フォルダにすると、フォルダ階層がごちゃごちゃになってしまう。

Logseq は graph フォルダがシンボリックリンクでも OK なので、空のフォルダを作り

  • [Logseq] Outlines/ → [Obsidian] Outlines/
  • [Logseq] journals/ → [Obsidian] Logseq/journals/
  • [Logseq] logseq/ → [Obsidian] Logseq/logseq/
  • [Logseq] pages/ → [Obsidian] Logseq/pages/

のようにシンボリックリンクを作って骨組みだけの Logseq graph フォルダ化した。

Obsidian Publish で公開するページは Outlines/ 階層に置きたいのでこのような形にした。あとは Obsidian Sync したくないデバイスローカルなフォルダも Logseq/ ではないフォルダへのシンボリックリンクにする。

1つにまとめると名前の衝突問題が再発生するんだけれどこれでやってみる。

[ 11月26日全て ]

2022年12月16日 (金)

今日のさえずり: ずっと以前だけれど Facebook で投稿できない URL に遭遇したことある

[ 12月16日全て ]

About

Process Time: 0.035815s / load averages: 0.35, 0.25, 0.22