인프런 커뮤니티 질문&답변

김지용님의 프로필 이미지
김지용

작성한 질문수

블록체인 기반의 스마트컨트랙트 개발

Geth 구동 환경셋팅 (우분투설치 및 속도개선) 2

질문이 있습니다~

작성

·

519

0

영상 중간에 보면 solc를 cp 명령어를 통해서 /usr/bin 이쪽으로 카피하는것이 나오는데

이걸 할 때 permission denied이라고 나오면서 안되네요.

sudo를 통해서 cp를 실행해도 나중에 which solc를 할때 나오지 않아요..

문제가 무엇을까요??

답변 12

0

solve the problem of running solc

chmod -R 775 solc

=================

./solc --version

================

ldd solc

========

apt-get install libz3-dev

=========================

./solc --version

================

mv solc /usr/bin

================

which solc

==========

0

[정리]

김지용님과 같은 오류를 범한 사람으로서 강사님과 김지용님의 댓글를 토대로 문제를 해결을 하여 정리를 해드리고자 합니다.

  1. 권한 오류

    영상 튜토리얼대로 따라하다보면 solc(흰색) 파일이 권한문제가 있는데 복사를 미리 해버리면 권한 문제가 발생합니다. 만약에 cp를 먼저 하고 권한 문제를 바꾸셨다면 "ls -al /usr/bin/ | grep solc" solc 권한의 문제를 확인해주세요

  2. "solc: error while loading shared libraries: libz3.so.4: cannot open shared object file: No such file or directory"

권한의 문제가 해결되면 나타나는 오류입니다. 해결방법은 "추가적으로 에러에 대한 문제는 유추하기로 solidity compiler와 연관된 우분투 리눅스상 라이브러리에 대한 디펜던시" 이 문장이 있는 곳의 1, 2, 3, 4를 실행시켜주시면 됩니다.

(저의 경우 이렇게 해결하였습니다!)

0

[정리]

김지용님과 같은 오류를 범한 사람으로서 강사님과 김지용님의 댓글를 토대로 문제를 해결을 하여 정리를 해드리고자 합니다.

  1. 권한 오류

    영상 튜토리얼대로 따라하다보면 solc(흰색) 파일이 권한문제가 있는데 복사를 미리 해버리면 권한 문제가 발생합니다. 만약에 cp를 먼저 하고 권한 문제를 바꾸셨다면 "ls -al /usr/bin/ | grep solc" solc 권한의 문제를 확인해주세요

  2. "solc: error while loading shared libraries: libz3.so.4: cannot open shared object file: No such file or directory"

권한의 문제가 해결되면 나타나는 오류입니다. 해결방법은 "추가적으로 에러에 대한 문제는 유추하기로 solidity compiler와 연관된 우분투 리눅스상 라이브러리에 대한 디펜던시" 이 문장이 있는 곳의 1, 2, 3, 4를 실행시켜주시면 됩니다.

(저의 경우 이렇게 해결하였습니다!)

0

JeungJoo Lee님의 프로필 이미지
JeungJoo Lee
지식공유자

별말씀을요!!

그게 제 역할인걸요... 질문해주시면 시간이 허락하는 상황에선 빠르게 답변 드리도록 하겠습니다!

감사합니다

0

김지용님의 프로필 이미지
김지용
질문자

감사합니다!!^^ 이렇게 친절하게 알려주셔서 도움이 많이 됐습니다~

0

JeungJoo Lee님의 프로필 이미지
JeungJoo Lee
지식공유자

추가적으로 에러에 대한 문제는 유추하기로 solidity compiler와 연관된 우분투 리눅스상 라이브러리에 대한 디펜던시
문제인것 같습니다.
[지용님 에러 내용]
solc: error while loading shared libraries: libz3.so.4: cannot open shared object file: No such file or directory
해결을 위해 prerequisites 에서 사전에 디펜던시들을 설치해주는 과정이 있는데 이 페이지에서 설치하는 가이드대로 따라
해보시고 solc 0.4.19를 한번 확인해 봐주시면 좋을 것 같습니다 ^^
http://solidity.readthedocs.io/en/v0.4.24/installing-solidity.html#prerequisites-macos
1) git clone --recursive https://github.com/ethereum/solidity.git
2) cd solidity
3) git submodule update --init --recursive
4) ./scripts/install_deps.sh (Linux 환경) 또는 scriptsinstall_deps.bat (Windows 환경)

0

JeungJoo Lee님의 프로필 이미지
JeungJoo Lee
지식공유자

 지용님 안녕하세요

설치하느라 고생많이하시네요 ㅠ

우선 solc 를 깔아서 geth 1.5.9를 띄우는 이유는 geth 콘솔에서 solidity 로 작성된 컨트렉트를 배포하고 하는 실습을 해보려는

것이여서 크게 이 부분에 집중 안 하셔도 될 거 같구요^^.. 핵심은 geth 에서 현재버전에서 지원하지 않는 컨트렉트를 컴파일 후

배포 하는 방법을 보여 드리고 싶었어요.. 일단 그럼에도 불구하고 solc를 바이너리 형태로 설치할 수 있는 방법은

아래와 같습니다.

[solc 설치 방법]

sudo add-apt-repository ppa:ethereum/ethereum

sudo add-apt-repository ppa:ethereum/ethereum-dev

sudo apt-get update

sudo apt-get install solc

위의 방법처럼하시면 solc가 설치가 되는데 0.4.24 버전으로 컴파일러가 만들어져서 geth 1.5.9 와 호환이 안 되더라구요..

0.4.19 이전 버전을 저 위의 방법으로 버전 명시해서 설치를 하려고 했는데 문제가 있어 github 에다 solc 0.4.19 버전을 업로드

해놓고 복사해서 사용 하시라고 올려놓은 것입니다.

우선 이 solc 가 어떠한 역할을 하는지 이해했으니 제가 구글 드라이브에서 appendix 녹화 하면서 우분투환경 설치와 geth 환경

설치까지 했던 부분을 다운받아서 4강을 들어보심 어떨까 싶습니다^^ 더 중요한 부분은 원리를 이해하는 것이라

너무 고생하시는 것 같아 안타깝습니다. 같이 만나서라도 해결해 드리고 싶은데 원격강의의 제약사항이 존재하네요 :)

나머지 과정은 다 따라서 하셨으니 geth 설치법과 환경 셋팅은 이해가 되셨을테고 solc가 잘 작동하는 제 ova 파일을 다운받아

이용해 보심이 어떨까요?

ova 다운로드 위치 >> https://goo.gl/kMsSNd

0

김지용님의 프로필 이미지
김지용
질문자

solc -version을 쳤을때 저렇게 안나오네요. 그게 문제였나봐요.
해당 명령어를 쳤을 때 solc: error while loading shared libraries: libz3.so.4: cannot open shared object file: No such file or directory 이렇게 나오네요.
혹시몰라 npm install -g solc 명령어로 설치도 했었는데도 왜 저렇게 나오는지 모르겠네요.
구글링해보니 https://github.com/ethereum/go-ethereum/issues/2598 저와 같은 사람이 있네요.

0

JeungJoo Lee님의 프로필 이미지
JeungJoo Lee
지식공유자

우선 터미널에서 아래와 같은 명령어 치면 버전이 제대로 나오시는지 체크해주시고.

geth 1.5.9로 구동이 된건지 확인부탁드립니다.

만약 모두 확인했는데도 안되신다면... 이미지 export 하셔서 번거로우시겠지만 제가 다운로드 받을 수 있게

올려주신다면 확인해드리겠습니다....!

solc --version

solc, the solidity compiler commandline interface

Version: 0.4.19+commit.c4cbbb05.Linux.g++

0

김지용님의 프로필 이미지
김지용
질문자

우선 빠른 답변 감사합니다~ 근데 위에 방법들을 다 해봤지만 안되네요ㅠㅠ
우선 root계정으로 들어가서 usr/bin/에 solc가 있는거까지 확인이 됐고 색깔도 초록으로 변경된거 보니 권한도 잘 준거같아요.
근데 admin.setSolc('/usr/bin/solc')라고 치면
error : exit status 127
at web3.js:3104:20
at web3.js:6191:15
at web3.js:5004:36
at <anonymous영어>:1:1
이렇게 오류가 나네요ㅠㅠ

0

JeungJoo Lee님의 프로필 이미지
JeungJoo Lee
지식공유자

음 아니면 결국 permission denied는 root 권한이 없는 문제니까
안되신다면 아래와 같이 root 유저로 변환하신다음 해보시죠 아래와 같이!
1) sudo passwd root (설치하실때 root 패스워드를 지정하지 않으셨다면 )
2) 현재 계정 패스워드 입력과 root 패스워드 ( 기억하기 쉬운걸로! )
3) su
4) root 패스워드 변경한걸로 접속 하신담에 solc를 옮겨주시고 chmod 777 solc <--- 요거도 주세요
5) exit ( 일반계정으로 빠져 나오세요 )

0

JeungJoo Lee님의 프로필 이미지
JeungJoo Lee
지식공유자

지용님 안녕하세용
우선 solc가 있는 위치로 가셔서
chmod 775 solc먼저해보시고
sudo cp solc /usr/bin해보시겠어요?
만약 그래도 안되신다면.... 어짜피 Geth 안에서 솔리디티 컴파일러 지정해주는 거니까
현재 디렉토리 위치를 복사하셔서 Geth Console에 접근하셔서
> admin.setSolc({solc 해당경로})
한번 해보세요! 안되시면 다시 답글 부탁드립니다.

김지용님의 프로필 이미지
김지용

작성한 질문수

질문하기