Rust构建的Snap包安装后执行命令提示command not found
问题根因
故障来自snapcraft.yaml的错误配置,你的Cargo.toml配置没有问题。
你在app条目下配置了daemon: simple,该配置的作用是将对应程序标记为系统级常驻守护进程:Snap安装这类应用时,只会将其注册为systemd后台服务,在安装完成后自动拉起、配置开机自启,不会将程序暴露到普通用户的Shell可执行路径中,因此直接在终端执行keval-snap会触发command not found错误。
修复方法
根据你的应用实际属性二选一调整即可:
- 如果
keval-snap是普通命令行工具、不需要常驻后台运行:直接删除app配置段下的daemon: simple行,修正后的apps段配置如下:
apps: keval-snap: command: bin/keval-snap
- 如果
keval-snap本身确实需要作为后台服务运行,同时需要保留手动执行命令的入口:将后台服务和用户可调用命令拆分为两个独立的app条目,示例配置如下:
apps: keval-snap-service: command: bin/keval-snap daemon: simple keval-snap: command: bin/keval-snap
后续验证
调整配置后重新执行snap构建、安装流程,安装完成后直接在终端执行keval-snap --help即可正常输出帮助信息。
内容的提问来源于stack exchange,提问作者Keval Bhogayata
相关产品推荐
相关产品推荐

