SubFinder 설치 중 undefined: os.UserHomeDir
, undefined: strings.ReplaceAll
에러가 발생해서 해결 방법 정리해둡니다. 아마.. 현재 일부 피씨에서 설치 시 위와 같은 에러가 발생할텐데요, 원인은 golang 의 버전 문제입니다.
subfinder가 최근에 go 1.13 기준으로 문법이 변경됬는데, 하위 버전에선 메소드가 달라서 발생한 에러입니다. 저장소의 golang 버전이 1.13 이상일 경우 해당없겠지만, 하위버전인 경우 문제가 아래와 같은 에러가 발생합니다.
hahwul@salamander:~/lab/salamander/salamander$ go get -v github.com/projectdiscovery/subfinder/cmd/subfinder
github.com/projectdiscovery/subfinder/pkg/runner
# github.com/projectdiscovery/subfinder/pkg/runner
../../../go/src/github.com/projectdiscovery/subfinder/pkg/runner/config.go:39:20: undefined: os.UserHomeDir
../../../go/src/github.com/projectdiscovery/subfinder/pkg/runner/enumerate.go:52:18: undefined: strings.ReplaceAll
Update golang 1.10 to 1.13 with update-golang
원인이 버전인만큼, golang 버전 업그레이드로 해결이 가능하고, 저장소에서 지원하지 않는 경우는 아래 update-golang을 이용해서 간단하게 업데이트할 수 있습니다.
git clone https://github.com/udhos/update-golang
cd update-golang
sudo ./update-golang.sh
제가 사용하는 코드 일부는 1.13 이상이여서, 해당 서버에서 결국 go 바이너리까지 교체해주었습니다.
mv /usr/bin/go /usr/bin/go-1.10
mv /usr/local/go/bin/go /usr/bin/go