Rust 货物建造挂起,带有“标记”;阻止等待注册表索引上的文件锁定;在从源代码构建奇偶校验之后

Rust 货物建造挂起,带有“标记”;阻止等待注册表索引上的文件锁定;在从源代码构建奇偶校验之后,rust,rust-cargo,Rust,Rust Cargo,我遵循从源代码构建的说明,然后执行以下命令: 货物构建-发布 然后: ~/.cargo/bin/cargo build——发布 。。按照指示;这两种情况都会导致我在提示挂起时收到以下消息: 阻止等待注册表索引上的文件锁定 我在Mac电脑上。我也遇到了同样的问题,并通过rm-rf~/.cargo/registry/index/*解决了这个问题 编辑:我建议先查看。在删除已接受答案中建议的货物登记索引之前,确保当前没有其他进程正在编译奇偶校验或任何其他生锈包。运行cargo clean似乎可以

我遵循从源代码构建的说明,然后执行以下命令:

货物构建-发布
然后:

~/.cargo/bin/cargo build——发布
。。按照指示;这两种情况都会导致我在提示挂起时收到以下消息:

阻止等待注册表索引上的文件锁定

我在Mac电脑上。

我也遇到了同样的问题,并通过
rm-rf~/.cargo/registry/index/*
解决了这个问题


编辑:我建议先查看。

在删除已接受答案中建议的货物登记索引之前,确保当前没有其他进程正在编译奇偶校验或任何其他生锈包。

运行
cargo clean
似乎可以解决此问题。

我试图按照说明创建一个Polkadt节点

我可以通过运行以下命令(复制/粘贴到Bash终端)来构建它:

然后,我尝试使用以下命令(等效命令)运行Polkadot节点:

但它显示了以下内容:

Blocking waiting for file lock on the git checkouts
Blocking waiting for file lock on build directory
我发现这是由CLion(Jetbrains IDE)引起的


我通过关闭CLion解决了这个问题。我改用了Visual Studio代码编辑器,它还允许使用断点调试锈迹代码

当您同时运行同一项目的两个编译时会发生这种情况。编译器使用锁文件来避免数据争用问题。有一些可能性:

  • 如果您自己运行这两个编译,解决方案显而易见:您需要取消其中一个

  • 如果使用自动编译项目的IDE:可以等待作业完成或关闭IDE。如果它不起作用,这可能是因为RLS的存在。您只需
    pkill rls
    即可解决此问题

  • 最后,您可以强制移除锁:
    rm-rf~/.cargo/registry/index/*
    ,如中所述


确保没有其他rls或货物运行非常重要。
sudo pkill rls cargo
是一种很好的方法,可以确保它们不是。当同时运行cargo build命令两次时,通常会出现此错误。如果您使用IDE检查插件是否在后台运行cargo命令,那么VS代码就是这种情况。

删除rm$cargo\u HOME/。软件包缓存对我有效


在执行
cargo run
时,我无意中按了
ctrl+z
而不是
ctrl+c
,下一次执行
cargo run
时,我显示了
正在阻止注册表索引上的文件锁定。我删除了上面提到的文件,然后它又工作了。

我的问题是IDE正在运行cargo并锁定了目录。如果遇到“阻止等待包缓存上的文件锁定”,请尝试关闭IDE

运行下面的命令,然后再次运行cargo。
rm$CARGO_HOME/.package cache

VScode中的相同问题:如果您安装了RLS

  • 文件|首选项|设置
  • 搜索“rls”
  • 在“rust”扩展名中,取消选中“打开文件或项目时自动启动RLS”

  • 重新打开您的项目,它应该得到解决。

    您应该暂时停止
    rls
    进程。

    如果您确定没有其他正在执行的cargo进程,但此问题仍然频繁发生,则可能是您的网络问题。

    我的VSCode intellisense正在进行构建。确保你的智能感知没有建立。它在底部显示一个旋转的小齿轮图标。通常在您更新Cargo时发生。toml

    会有迟到的风险,而Cargo、rls或rust analyzer则负责锁定以避免数据争用。 潜在的问题可能是inotify filewatcher的数量

    通常情况下,它们会产生一个新的观察者并等待轮到它们,但如果它们耗尽了观察者的空间,这可能是一个问题。 同意上述所有解决方案,但建议检查
    max\u user\u手表的数量

    # view current settings
    cat /proc/sys/fs/inotify/max_user_watches
    
    # increasing it, /etc/sysctl.conf
    fs.inotify.max_user_watches=524288
    
    # The new value can then be loaded in by running s
    $sudo sysctl -p.
    

    简单的回答是:如果您打开了Jetbrains IDE,请尝试关闭它。在Linux+IDEA上发生在我身上。似乎没有那么骇人,但出于某种原因,只有公认的答案解决了我的问题。它是否也这样做?@FelixJassler No.它删除了您运行此命令所针对的项目的整个目标文件夹,这与已接受的答案不同。在等待了30秒后为我工作,没有做任何事情。我还必须删除
    ~/.cargo/.package cache
    。我在编译时关闭了IDE。这个解决方案是我的问题。YUP,我在Neovim里面有<代码> ^ z /代码>,当我这样做的时候,它一定是在一些<代码>货物检查< /代码>(或类似)PASS的中间。这是正确的,在我的例子中,VS代码中的货物扩展,自动编译我的项目和@ HAMAMBAHANI一样。我认为这个答案揭示了根本原因应该排名更高。这对我来说在VS代码上很有效,谢谢。我很抱歉,但是这个在哪里。货物/注册表/索引/位置?我似乎在项目目录中找不到它,那里唯一的文件夹是src、target和。gitignore@AbdullahAshraf它不在您的项目中,而是在您的家中,就像
    /home/user/.cargo/registry/index
    有一个现有的答案涵盖了这一点。你能详述这个答案吗?
    Blocking waiting for file lock on the git checkouts
    Blocking waiting for file lock on build directory
    
    # view current settings
    cat /proc/sys/fs/inotify/max_user_watches
    
    # increasing it, /etc/sysctl.conf
    fs.inotify.max_user_watches=524288
    
    # The new value can then be loaded in by running s
    $sudo sysctl -p.