Ubuntu 16.04下Snap框架执行snap init命令失败求助
解决Ubuntu 16.04下Snap框架
snap init命令报错的问题 我来帮你搞定这个问题!你遇到的error: unknown command "init"其实是命令冲突导致的——Ubuntu 16.04系统自带了一个叫snap的工具(Snapcraft包管理器),它和你通过cabal安装的Snap Web框架的命令重名了,系统优先调用了系统自带的那个,所以找不到init子命令。
下面是几种可行的解决方法:
方法1:调整PATH优先级,让cabal的snap命令优先被调用
cabal安装的二进制文件默认放在~/.cabal/bin目录下,我们需要让这个目录的优先级高于系统命令目录(/usr/bin):
- 打开你的bash配置文件(比如
~/.bashrc):nano ~/.bashrc - 在文件末尾添加一行:
export PATH="$HOME/.cabal/bin:$PATH" - 让配置立即生效:
source ~/.bashrc - 验证是否生效:运行
which snap,如果输出是/home/你的用户名/.cabal/bin/snap,说明设置成功了,之后直接运行snap init就能正常初始化项目。
方法2:直接使用绝对路径调用cabal安装的snap命令
如果不想修改PATH,可以直接用完整路径执行命令:
~/.cabal/bin/snap init
这样就能绕过系统自带的snap命令,直接调用Web框架的工具。
方法3:给Snap框架命令设置别名
为了避免以后再混淆,你可以给cabal安装的snap命令起一个专属别名:
- 打开
~/.bashrc,添加一行:alias snap-web='~/.cabal/bin/snap' - 生效配置:
source ~/.bashrc - 之后用这个别名来初始化项目:
snap-web init
额外提示
Ubuntu 16.04的软件源版本比较老,建议先更新cabal的包索引,确保安装的是兼容的Snap版本:
cabal update cabal install snap snap-templates --reinstall
内容的提问来源于stack exchange,提问作者Anton
相关产品推荐
相关产品推荐

