首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >命令‘`cargo’导致“没有这样的文件或目录”

命令‘`cargo’导致“没有这样的文件或目录”
EN

Stack Overflow用户
提问于 2022-08-31 19:40:01
回答 1查看 105关注 0票数 0

我需要运行带有sudo特权的独立进程的测试(因为它们需要运行特权指令,例如什马特)。

我使用.cargo/config使用sudo运行测试,这是导致错误的原因,删除它允许测试工作,直到尝试shmat失败为止。

在一个最小的可重复的例子中,错误是:

代码语言:javascript
复制
thread 'tests::base' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }', src/lib.rs:4:103
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

该项目的布局如下:

代码语言:javascript
复制
.
├── .cargo/
│   └── config.toml
├── Cargo.lock
├── Cargo.toml
└── src/
    ├── lib.rs
    └── bin/
        └── new_process.rs

config.toml

代码语言:javascript
复制
[target.x86_64-unknown-linux-gnu]
runner = 'sudo -E'

cargo.toml

代码语言:javascript
复制
[package]
name = "mre"
version = "0.1.0"
[dependencies]
libc = "0.2.127"

lib.rs

代码语言:javascript
复制
#[cfg(test)]
mod tests {
    #[test]
    fn base() {
        let output = std::process::Command::new("cargo").args(["run","--bin","new_process"]).output().unwrap();
        dbg!(output);
    }
}

new_process.rs

代码语言:javascript
复制
fn main() {
    let shmid = libc::shmget(libc::IPC_PRIVATE, 1024*4, libc::IPC_CREAT);
    let shared_mem_ptr = libc::shmat(shmid, std::ptr::null(), 0);
    println!("hello world");
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-01 14:37:14

如果您通过沙沙安装了货物,它可能会安装在您的主目录中,而不是像在/usr/bin/中那样在全局上安装。

在我的机器上:

代码语言:javascript
复制
$ which cargo
/home/linus/.cargo/bin/cargo

因此,在sudo下,找不到货物:

代码语言:javascript
复制
$ sudo cargo
sudo: cargo: command not found

这是从unwrap获得的与Command::new().output()结果完全相同的错误。因此,这不是一个生锈的问题,而是一个linux问题。

  1. 您可以指定货物可执行文件的绝对路径:
代码语言:javascript
复制
// in lib.rs base()

// Modify for the location of cargo on your machine
Command::new("/home/linus/.cargo/bin/cargo")
  1. 或者您可以创建一个从/usr/bin/cargo/home/linus/.cargo/bin/cargo的符号链接。
代码语言:javascript
复制
sudo ln -s /home/linus/.cargo/bin/cargo /usr/bin/cargo

然后,货物也被发现使用sudo。

  1. 或者,您可以使用独立安装程序在全球范围内安装货物。请参阅https://stackoverflow.com/a/65255288/14350146
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73561082

复制
相关文章

相似问题

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