Ответ 1
У меня была такая же проблема, и я обошел ее с помощью rm -rf ~/.cargo/registry/index/*
.
Я выполнил инструкции readme для создания Parity из исходного кода, а затем выполнил следующую команду:
cargo build --release
а потом:
~/.cargo/bin/cargo build --release
.. как указано; оба из которых заставляют меня получать следующее сообщение во время зависания:
Blocking waiting for file lock on the registry index
Я нахожусь на Mac.
У меня была такая же проблема, и я обошел ее с помощью rm -rf ~/.cargo/registry/index/*
.
Похоже, что проблема с cargo clean
.
Это происходит, когда вы запускаете 2 компиляции одного и того же проекта одновременно. Компилятор использует файл блокировки, чтобы избежать проблем с гонкой данных. Есть несколько возможностей:
Если вы запустили 2 компиляции самостоятельно, решение очевидно: вам нужно отменить один из них.
Если вы используете IDE, которая автоматически компилирует ваш проект: вы можете дождаться завершения задания или закрыть IDE. Если это не работает, это, вероятно, из-за зависания RLS. Вы можете просто pkill rls
чтобы решить эту проблему.
В качестве последнего средства вы можете принудительно снять блокировку: rm -rf ~/.cargo/registry/index/*
как сказано в другом ответе.
Прежде чем удалять индекс реестра Cargo, как предлагается в принятом ответе, убедитесь, что в настоящее время другой процесс не компилирует паритет или какой-либо другой пакет Rust.
Я попытался создать узел Polkadot, выполнив инструкции Readme.
Я смог создать его, выполнив следующие команды (скопируйте/вставьте в Bash Terminal):
git clone https://github.com/paritytech/polkadot;
cd polkadot; git checkout master;
rustup update nightly;
rustup target add wasm32-unknown-unknown --toolchain nightly;
rustup update stable;
rustup default stable;
cargo install --git https://github.com/alexcrichton/wasm-gc --force;
cargo install --git https://github.com/pepyakin/wasm-export-table.git --force;
brew install openssl; brew upgrade openssl;
rustc --version; cargo --version;
./build.sh;
cargo build;
cargo run -- --help;
./target/debug/polkadot --help;
Затем я попытался запустить Polkadot Node со следующими командами (которые эквивалентны):
./target/debug/polkadot -- --chain=dev --validator --key Alice -d /tmp/alice;
cargo run -- --chain=dev --validator --key Alice -d /tmp/alice;
Но вместо этого он показал следующее:
Blocking waiting for file lock on the git checkouts
Blocking waiting for file lock on build directory
Я обнаружил, что это вызвано CLion (Jetbrains IDE).
Я решил проблему, закрыв CLion. Вместо этого я использовал редактор кода Visual Studio, что также позволяет отлаживать код Rust с точками останова
Важно убедиться, что у вас нет других грузов или грузов.
sudo pkill rls cargo
- хороший способ убедиться, что это не так.
Обычно вы получаете эту ошибку, когда запускаете команду cargo build одновременно. Если вы используете IDE, проверяете ли плагин, запускает ли команду груза в фоновом режиме, это было так для меня с VS Code.
Удаление rm $CARGO_HOME/.package-cache
сработало для меня.
Я случайно нажал ctrl+z
вместо ctrl+c
во время выполнения cargo run
, и следующее выполнение cargo run
показало мне Blocking waiting for file lock on the registry index
. Я удалил указанный файл, и затем он снова заработал.
Моя проблема заключалась в том, что IDE работала с грузом и заблокировала каталог. Попробуйте закрыть вашу IDE