Skip to main content
For the complete documentation index, see llms.txt

Troubleshoot installation problems

Install the toolchain의 어떤 단계가 실패했을 때 이 페이지를 사용하세요. 세 가지 문제를 다룹니다. 셸이 compact 명령을 찾지 못하는 경우, Docker가 실행되지 않은 경우, 포트 6300이 이미 사용 중인 경우입니다.

Compact command not found​

설치 프로그램을 실행한 뒤에도 셸이 compact 명령을 찾지 못합니다. zsh에서는 에러가 다음과 같이 나타납니다:

zsh: command not found: compact

bash에서는 bash: compact: command not found로 나옵니다. WSL을 포함한 Ubuntu에서는 대신 compact: command not found로 나올 수 있습니다.

Cause: 설치 프로그램은 기본적으로 compact 바이너리를 $HOME/.local/bin에 넣습니다. 또한 셸 프로필에 그 디렉터리를 PATH에 추가하는 줄을 넣습니다. 이미 열려 있던 터미널은 이 변경을 불러오지 않습니다.

Fix: 새 터미널을 열거나, 현재 터미널에 변경을 불러오세요:

source $HOME/.local/bin/env

새 터미널에서도 여전히 명령을 찾지 못한다면, 디렉터리를 직접 PATH에 추가하세요. ~/.zshrc나 ~/.bashrc 같은 셸 프로필에 다음 줄을 추가하고 새 터미널을 여세요:

export PATH="$HOME/.local/bin:$PATH"

설치 프로그램은 사용한 디렉터리를 installing to로 시작하는 줄에 출력합니다. $HOME/.local/bin과 다르다면 그 디렉터리를 사용하세요.

Check: Compact 커맨드라인 도구의 버전을 출력하세요:

compact --version

명령은 compact 0.5.3처럼 버전을 출력합니다.

Docker is not running​

proof server를 시작할 때 docker run이 다음과 같은 에러 중 하나로 멈춥니다. 메시지의 소켓 경로는 플랫폼에 따라 다릅니다:

docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
docker: failed to connect to the docker API at unix:///var/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /var/run/docker.sock: connect: no such file or directory

Cause: Docker Desktop이 실행되지 않았거나 아직 시작 중이라서 docker 명령이 Docker 엔진에 닿지 못합니다.

Fix: Docker Desktop을 시작하고 엔진이 뜰 때까지 기다리세요. 그런 다음 엔진이 응답하는지 확인하세요:

docker info

엔진이 준비되면 출력의 Server 섹션에 Server Version 같은 엔진 정보가 표시됩니다. 그 섹션에 대신 에러가 보이면 Docker에 시간을 더 주고 명령을 다시 실행하세요.

Check: Set up the proof server의 proof server 명령을 다시 실행하세요. proof server가 시작되고 포트 6300에서 수신한다는 로그를 남깁니다.

Port 6300 already in use​

proof server를 시작할 때, 머신에서 다른 무언가가 이미 포트 6300을 사용하고 있어 Docker가 멈춥니다. 다른 컨테이너가 포트를 쥐고 있으면 에러가 port is already allocated로 끝납니다:

docker: Error response from daemon: failed to set up container networking: driver failed programming external connectivity on endpoint confident_nobel (de6d18e2ae79b3089bb30e225669e63cf9cf336bec3bca83da0e0582e332a736): Bind for 0.0.0.0:6300 failed: port is already allocated

Docker 바깥의 프로그램이 포트를 쥐고 있으면 에러가 대신 address already in use로 끝날 수 있습니다:

docker: Error response from daemon: ports are not available: exposing port TCP 0.0.0.0:6300 -> 127.0.0.1:0: listen tcp 0.0.0.0:6300: bind: address already in use

Cause: 다른 컨테이너나 프로그램이 이미 포트 6300에서 수신하고 있습니다. 이전에 단독으로, 또는 로컬 네트워크의 일부로 시작한 proof server는 멈추기 전까지 포트를 쥐고 있습니다. 다른 proof server가 포트를 쥐고 있는 동안에는 proof server를 포함하는 로컬 네트워크를 시작해도 같은 에러로 실패합니다.

Fix: 무엇이 포트를 쥐고 있는지 찾아서 비우세요.

  1. 포트 6300을 퍼블리시하는 컨테이너를 나열하세요:

    docker ps --filter publish=6300
  2. 목록이 비어 있으면, 포트에서 수신하는 프로그램을 나열하세요:

    lsof -nP -iTCP:6300 -sTCP:LISTEN

    Linux에서는 ss -ltnp 'sport = :6300'이 같은 정보를 보여줍니다. 출력이 비어 있거나 프로그램을 가리키지 않으면 sudo를 붙여 명령을 다시 실행하세요. 그러지 않으면 다른 사용자가 시작한 프로그램은 나타나지 않습니다.

  3. docker stop <container-id>로 컨테이너를 멈추거나, 포트에서 수신하는 프로그램을 종료하세요. 그 컨테이너가 여전히 필요한 proof server라면 그대로 두고 두 번째 proof server를 시작하지 마세요.

  4. proof server 명령을 다시 실행하세요.

포트 6300을 비울 수 없으면, 머신의 다른 포트로 proof server를 퍼블리시하세요. -p 6301:6300에서 첫 번째 숫자는 머신의 포트입니다. 두 번째 숫자는 컨테이너 내부의 포트로, 6300으로 유지됩니다:

docker run -p 6301:6300 -e MIDNIGHT_PROOF_SERVER_VERBOSE=true midnightntwrk/proof-server:8.1.3

그러면 proof server가 http://localhost:6301에서 응답합니다. 여기에 연결하는 모든 DApp, 스크립트, 도구에서 proof server 주소를 그에 맞게 바꾸세요. Proving transactions locally에 DApp이 그 주소를 지정하는 위치가 나옵니다. Lace wallet을 쓴다면 대신 포트 6300을 비우세요. Lace는 http://localhost:6300에 있는 로컬 proof server에만 연결하기 때문입니다.

Check: proof server에 버전을 물어보세요. 포트를 바꿨다면 포트 6301을 사용하세요:

curl http://127.0.0.1:6300/version

명령은 실행 중인 proof server의 버전을 8.1.3처럼 출력합니다. 다른 응답이 돌아오면 또 다른 프로그램이 여전히 그 포트에서 응답하고 있는 것입니다. 2단계의 명령을 실행해 찾으세요.

Get help​

이 해결책으로도 문제가 풀리지 않으면 다음 페이지를 참고하세요: