rime / squirrel

【鼠鬚管】Rime for macOS
https://rime.im
GNU General Public License v3.0
4.63k stars 410 forks source link

启用双拼后,部署过程中 crash,不显示汉字 #192

Closed mpco closed 6 years ago

mpco commented 6 years ago

我按照 INSTALL.md 中的步骤安装:

  1. brew install cmake boost
  2. git clone ...
  3. make deps
  4. make
  5. sudo make install

此时,部署正常,输入正常。

为了使用双拼方案,运行:

cd brise
bash rime-install

然后,新建 default.custom.yaml 文件:

# Rime custom settings
# encoding: utf-8

patch:
  schema_list:
    - schema: double_pinyin_flypy
    - schema: luna_pinyin
    - schema: emoji
  switcher/caption: "/方案菜单/"
  switcher/hotkeys: 
    - "Control+Shift+grave"

重新部署,切换至双拼后,输入时只显示输入的字母,不显示全拼和汉字。

Squirrel_2018-03-07-223732.txt

请问怎么解决? 是什么原因呢?

Prcuvu commented 6 years ago

rime-install 默认只安装预设方案集,包括核心文件、八股文、注音、仓颉五代、朙月拼音、五笔画、地球拼音。如果需要添加额外方案集中的双拼,在后面添加 :all 参数即可解决,即

bash rime-install :all
mpco commented 6 years ago

@Prcuvu 我在运行 bash rime-install 时,看到输出显示安装了所有方案集,确认 /Library/Rime 中存在 double_pinyin_flypy.schema.yaml 等双拼文件。

Prcuvu commented 6 years ago

更正,rime-install 默认目标是 :all。不好意思。 你确定是安装到 /Library/Rime 而不是 ~/Library/Rime 吗?

mpco commented 6 years ago

更正,是 ~/Library/Rime

Prcuvu commented 6 years ago

请提供 $TMPDIR/rime.squirrel.INFO 中的内容。

mpco commented 6 years ago

rime.squirrel.INFO  https://cl.ly/1q343R1F0X1K rime.squirrel.ERROR https://cl.ly/2F0M3V100e1u rime.squirrel.WARNING https://cl.ly/1U0g1w3x0u2P

谢谢。

Prcuvu commented 6 years ago
E0307 22:38:09.474009 2465620800 config_component.cc:171] error loading config from: user
E0307 22:38:09.476168 2465620800 mapped_file.cc:112] attempt to open non-existent file '/Users/m/Library/Rime/double_pinyin_flypy.prism.bin'.
E0307 22:38:09.476204 2465620800 prism.cc:83] error opening prism file '/Users/m/Library/Rime/double_pinyin_flypy.prism.bin'.
E0307 22:38:09.476229 2465620800 dictionary.cc:270] Error loading prism for dictionary 'luna_pinyin'.

这几个错误反复出现。建议删除 ~/Library/Rime 中所有内容,重新运行 rime-install,再试着重新部署。

lotem commented 6 years ago

We need to update submodule librime. Those errors should be fixed in latest code.

You can update it locally and rebuild librime

git submodule foreach git pull origin master
make librime && make && make install
mpco commented 6 years ago

非常感谢两位开发者!!

git submodule foreach git pull origin master
make librime && make && make install

重新编译安装后,问题解决,运行正常。


删除 Rime 文件夹,重新部署后,文件夹结构与之前不同:

├── build
│   ├── default.yaml
│   ├── luna_pinyin.schema.yaml
│   ├── luna_pinyin_fluency.schema.yaml
│   ├── luna_pinyin_simp.schema.yaml
│   └── squirrel.yaml
├── installation.yaml
└── luna_pinyin.userdb

yaml 文件都被放入 build 文件夹中。

运行 rime-install 后:

.
├── build
│   ├── default.yaml
│   ├── luna_pinyin.schema.yaml
│   ├── luna_pinyin_fluency.schema.yaml
│   ├── luna_pinyin_simp.schema.yaml
│   └── squirrel.yaml
├── default.yaml
├── double_pinyin.schema.yaml
├── double_pinyin_abc.schema.yaml
├── double_pinyin_flypy.schema.yaml
├── double_pinyin_mspy.schema.yaml
├── double_pinyin_pyjj.schema.yaml
├── emoji.dict.yaml
├── emoji.schema.yaml
├── essay.txt
├── installation.yaml
├── ipa_xsampa.dict.yaml
├── ipa_xsampa.schema.yaml
├── luna_pinyin.dict.yaml
├── luna_pinyin.schema.yaml
├── luna_pinyin.userdb
│   ├── 000003.log
│   ├── CURRENT
│   ├── LOCK
│   ├── LOG
│   └── MANIFEST-000002
├── luna_pinyin_fluency.schema.yaml
├── luna_pinyin_simp.schema.yaml
├── luna_pinyin_tw.schema.yaml
├── luna_quanpin.schema.yaml
├── stroke.dict.yaml
├── stroke.schema.yaml
└── symbols.yaml

新方案集 yaml 文件出现在 rime 中 build 外。

重新部署后:

.
├── build
│   ├── default.yaml
│   ├── double_pinyin_flypy.prism.bin
│   ├── double_pinyin_flypy.schema.yaml
│   ├── emoji.prism.bin
│   ├── emoji.reverse.bin
│   ├── emoji.schema.yaml
│   ├── emoji.table.bin
│   ├── luna_pinyin.prism.bin
│   ├── luna_pinyin.reverse.bin
│   ├── luna_pinyin.schema.yaml
│   ├── luna_pinyin.table.bin
│   ├── luna_pinyin_fluency.schema.yaml
│   ├── luna_pinyin_simp.schema.yaml
│   ├── squirrel.yaml
│   ├── stroke.prism.bin
│   ├── stroke.reverse.bin
│   ├── stroke.schema.yaml
│   └── stroke.table.bin
├── default.custom.yaml
├── default.yaml
├── double_pinyin.schema.yaml
├── double_pinyin_abc.schema.yaml
├── double_pinyin_flypy.schema.yaml
├── double_pinyin_mspy.schema.yaml
├── double_pinyin_pyjj.schema.yaml
├── emoji.dict.yaml
├── emoji.schema.yaml
├── essay.txt
├── installation.yaml
├── ipa_xsampa.dict.yaml
├── ipa_xsampa.schema.yaml
├── luna_pinyin.dict.yaml
├── luna_pinyin.schema.yaml
├── luna_pinyin.userdb
│   ├── 000005.ldb
│   ├── 000006.log
│   ├── CURRENT
│   ├── LOCK
│   ├── LOG
│   ├── LOG.old
│   └── MANIFEST-000004
├── luna_pinyin_fluency.schema.yaml
├── luna_pinyin_simp.schema.yaml
├── luna_pinyin_tw.schema.yaml
├── luna_quanpin.schema.yaml
├── stroke.dict.yaml
├── stroke.schema.yaml
└── symbols.yaml

部署时,程序将启用的方案 yaml 文件复制到 build 中,并生成 bin 文件。

问题:

  1. build 文件夹之外的 yaml 文件是否不需要了,能否删除?
  2. 启用新的方案时,Squirrel 是否是从 build 文件夹之外复制的 yaml 文件?
  3. .custom.yaml 文件是应该放在 build 文件夹之外吗?
Prcuvu commented 6 years ago

build 文件夹之外的 yaml 文件是否不需要了,能否删除?

不能。

启用新的方案时,Squirrel 是否是从 build 文件夹之外复制的 yaml 文件?

是。

.custom.yaml 文件是应该放在 build 文件夹之外吗?

是。

lotem commented 6 years ago

你可以认为 build 文件夹用来保存编译结果。里面没有用户可读写的文件。运行时输入法以只读形式从 build 文件夹读取大部分数据,包括配置和固态词典。 YAML 源文件(包括补丁文件),只在部署时使用。如果只需要一套可以支持输入法稳定运行的配置,部署成功后不再做任何配置变更及重新部署,则可以删除已经编译的方案、词典等源文件(但不包括输入法在运行时生成的 installation.yamluser.yaml、用户词典)。 注意:再强调一下。不是复制 YAML 文件到 build 文件夹。是将源文件编译成机读格式。编译结果文件与源文件并不是一一对应的。虽然现在编译结果仍是 YAML 格式,以后则可能采用其他格式。请将其视为二进制文件。