Конструкция груза зависает с "Блокировка ожидания блокировки файла в индексе реестра" после создания паритета из источника

Я выполнил инструкции readme для создания Parity из исходного кода, а затем выполнил следующую команду:

cargo build --release

а потом:

~/.cargo/bin/cargo build --release

.. как указано; оба из которых заставляют меня получать следующее сообщение во время зависания:

 Blocking waiting for file lock on the registry index

Я нахожусь на Mac.

Ответ 1

У меня была такая же проблема, и я обошел ее с помощью rm -rf ~/.cargo/registry/index/*.

Ответ 2

Похоже, что проблема с cargo clean.

Ответ 3

Это происходит, когда вы запускаете 2 компиляции одного и того же проекта одновременно. Компилятор использует файл блокировки, чтобы избежать проблем с гонкой данных. Есть несколько возможностей:

  • Если вы запустили 2 компиляции самостоятельно, решение очевидно: вам нужно отменить один из них.

  • Если вы используете IDE, которая автоматически компилирует ваш проект: вы можете дождаться завершения задания или закрыть IDE. Если это не работает, это, вероятно, из-за зависания RLS. Вы можете просто pkill rls чтобы решить эту проблему.

  • В качестве последнего средства вы можете принудительно снять блокировку: rm -rf ~/.cargo/registry/index/* как сказано в другом ответе.

Ответ 4

Прежде чем удалять индекс реестра Cargo, как предлагается в принятом ответе, убедитесь, что в настоящее время другой процесс не компилирует паритет или какой-либо другой пакет Rust.

Ответ 5

Я попытался создать узел 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 с точками останова

Ответ 6

Важно убедиться, что у вас нет других грузов или грузов. sudo pkill rls cargo - хороший способ убедиться, что это не так.

Ответ 7

Обычно вы получаете эту ошибку, когда запускаете команду cargo build одновременно. Если вы используете IDE, проверяете ли плагин, запускает ли команду груза в фоновом режиме, это было так для меня с VS Code.

Ответ 8

Удаление rm $CARGO_HOME/.package-cache сработало для меня.

Я случайно нажал ctrl+z вместо ctrl+c во время выполнения cargo run, и следующее выполнение cargo run показало мне Blocking waiting for file lock on the registry index. Я удалил указанный файл, и затем он снова заработал.

Ответ 9

Моя проблема заключалась в том, что IDE работала с грузом и заблокировала каталог. Попробуйте закрыть вашу IDE