首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以从snap包在主机上执行命令?

是否可以从snap包在主机上执行命令?
EN

Ask Ubuntu用户
提问于 2023-03-21 07:50:14
回答 1查看 63关注 0票数 0

我正在从命令行程序构建snap,以便从自然语言中猜出linux命令。例如,cal For show calendar。当提出命令时,我需要通过Enter来确认它们。因此,在Enter之后,我希望在我的主机系统上执行cal

由于以下代码,当程序在主机上本地执行时,我会工作:

代码语言:javascript
复制
let mut child = Command::new(command_name)
  .args(command_args)
  .stdin(Stdio::inherit())
  .stdout(Stdio::inherit())
  .stderr(Stdio::inherit())
  .spawn()
  .expect("Failed to execute command");

但是当我将这个应用程序打包到snap中时,我看到了错误:

代码语言:javascript
复制
➜ gpt-cli show calendar
> Execute.:

cal

 Yes
thread 'main' panicked at 'Failed to execute command: Os { code: 2, kind: NotFound, message: "No such file or directory" }', src/main.rs:126:26
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

恐怕calsnap container上不可用,而且我的程序无法访问主机上下文。

所以问题是:我可以访问snap应用程序在主机上执行程序吗?

我正在检查接口,但没有发现与访问主机程序有关的任何东西。

snapcraft.yaml

更新

我找到了解决办法:

首先我需要process-control

代码语言:javascript
复制
apps:
  gpt-cli:
    command: gpt-cli
    plugs:
      - process-control
      - network
      - network-bind

代码语言:javascript
复制
confinement: classic
EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2023-03-21 08:29:03

经典限制(https://snapcraft.io/docs/classic-confinement)允许这样做,但考虑到经典定义的应用程序拥有完整的系统访问权限,将其放入商店并不容易。

经典限制是一个允许的快速限制级别,相当于传统打包应用程序所具有的完整系统访问权限。它经常被用作一种阻止措施,使开发人员能够发布比当前一组接口和权限所允许的更多访问权限的应用程序。

票数 2
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1460224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档