ble.sh インストール先ディレクトリ配下への書き込みについて #212
-
こんにちは! 質問の背景: その他: |
Beta Was this translation helpful? Give feedback.
Replies: 4 comments 14 replies
-
お問い合わせいただきありがとうございます! 以下の条件を満たしている場合に XDG Base Directories を使います。
その場合には 一方で、
すみません、確認させていただきたいのですが、書き込みができなくなるというのは、書き込みが原理的に不可能ということか書き込んでしまうと問題が発生するということのどちらでしょうか。インストール時に
|
Beta Was this translation helpful? Give feedback.
-
折しも NixOS/nixpkgs#181963 にて ble-0.3.3 の Nix derivation が nixpkgs に提出されているようです。未だ derivation の設定を作成していらっしゃらなければ、そちらを調整していただければ作成の手間が省けるかもしれません。この PR は ble-0.3 についてのものですが NixOS/nixpkgs#181963 (comment) を読む限り、@aiotter さんに問い合わせれば最新開発版に対するものもあるかもしれません。 @aiotter さん、もしお手すきでしたらこちらもご覧いただけましたら幸いです。NixOS/nixpkgs#181963 の設定にて |
Beta Was this translation helpful? Give feedback.
-
詳しいご説明ありがとうございます!自分が確認したかったことは確認できました!:pray:
(自分も学習中なため間違っているかも知れませんが, 解答します.) はい, こちらは また書き換えられてしまった場合どうなるかはちょっとわかりません.. 何かが壊れる可能性はあると思いますが何も壊れないかもしれません. ざっくりと補足Nix では derivation に基づいてパッケージがビルド/生成され, その成果物が Nix によって Nix store (通常 / そしてこの Nix store とそこに置かれるファイルは readonly (immutable) で, Nix を通じて以外で編集/書き込みできません. (Permission denied になるはず) なんと, nixpkgs に既に PR があったのですね!気がついていませんでした. 自分も既に nightly ble.sh 用の derivation を書いて使っていましたので一応?貼っておきます(Nix + home-manager用のものですが). 少しの機能しか使ってないのでなにか見落としているかもしれませんが, いまのところ問題なく ble.sh を使えているように思います 👍
なるほど, たしかにどうなるのか気になりますね 👀 |
Beta Was this translation helpful? Give feedback.
-
fd枯渇問題
@tars0x9752 ありがとうございます。nix が関係ないとすると他に手がかりがなさそうです。すみません、手許で再現できないので、お手数をおかけしますが細かい質問について幾つか答えていただけると幸いです。 Q3: ホストのOSは何ですか。Linux でしたらディストリビューションも教えていただければ再現の助けになるかもしれません。 Q4: ble.sh のセッションで C-x C-v と入力した時に表示される情報を教えていただけますか。 Q5: 以下の実行結果はどのように表示されますか。 $ ulimit -Sn
$ ulimit -Hn 以下はシステムに Q6: 以下の実行結果も確認したいです。 $ ls -la /proc/$$/fd/ Q7: 以下を実行した時にfd枯渇のエラーメッセージはどのようになるでしょうか。 $ ble/function#advice before ble/util/assign ': &>/dev/null 3>&1 4>&2 || { echo "[${FUNCNAME[*]}]"; ls -la /proc/$BASHPID/fd/; }'
$ declare -fr ble/util/assign
$ ble-reload |
Beta Was this translation helpful? Give feedback.
お問い合わせいただきありがとうございます! 以下の条件を満たしている場合に XDG Base Directories を使います。
$_ble_base
の最後のディレクトリ名がout
以外) かつ、${XDG_RUNTIME_DIR:=/run/user/$UID}
${XDG_CACHE_HOME:=$HOME/.cache}
${XDG_STATE_HOME:=$HOME/.state}
も。その場合には
$_ble_base
以下に対する書き込みは発生しないはずです。もしディレクトリが存在しなかったとしても、自動的に上記の位置 (または一時ディレクトリに関しては/tmp
以下) に作成するはずなので、$HOME
または/tmp
に書き込みができないだとか owner/permission の設定が間違っているだとかということがなければ、滅多なことでは$_ble_base
以下に書き込むことにはならないはずです。一方で、
make
した物をインストールせずに直接source out/ble.sh
してお使いの場合には振る舞いが変わることにご注意ください。この時は、一時ディレクトリを除けば、逆に$_ble_base
の外は書き換えないようにしています。