Conversation
|
システムの MeCab が見つからない場合 LS の初期化を止める処理 が存在するので、一旦ドラフトに戻します。 また、私の環境で musl target のバイナリを動かした場合、システムの MeCab を見つけることに成功しその上辞書の発見に成功しても初期化が失敗するようなので、この問題を調査します。 |
|
ありがとうございます。 MeCab, CaboCha 等の依存ライブラリを全て静的リンクする方法も以前は考えていたのですが、辞書を同梱すべきか否かで迷った結果、それぞれシステムのものを使って動作する現在の設計に落ち着いたという経緯があります。 と言うのも、辞書を同梱してしまうとビルド成果物のバイナリが巨大になってしまいますし、かと言ってライブラリのみを同梱してもユーザーが (MeCab をインストールしていないのに) 辞書を持っている必要が生まれてしまうためでした。 辞書の扱いについてどのようにするべきか、考えがあれば教えてください (私が誤解している可能性もあります)。 MeCab の初期化失敗の発見と調査は助かります! |
|
返信ありがとうございます。
ビルド成果物のサイズの都合上、私もバイナリに辞書を同梱するべきではないと思っています。扱いとしては、適切な辞書(mecab-ipadic, mecab-ipadic-neologd, unidic 等)への案内を記述し、ユーザーにダウンロードさせるか、インストーラースクリプトなどを作成し選択させるという方式がよいと考えています。 |
|
辞書のインストールに関してはその方法を README に記載しておくことにします。 ありがとうございます! |
実行時依存がある場合、動作が困難な環境が存在します。とくに Linux ターゲットではさまざまな環境があり、実行時依存の解決が難しい場合があるので、この問題を解決するために、CI のビルド時に全てのライブラリを静的リンクしたバイナリを吐く工程を追加することを提案します。
フォークの CI #1 では、全てのビルドが成功し成果物が生成されています。
linux-*の mozuku-lsp が正しくビルドされているか確認するために、fileコマンドとreadelfコマンドを使用してバイナリを評価しました。上記の出力を得ることができ、
linux-*-muslが完全に静的リンクできていることがわかります。