2017-01-24 3 views
1

Я ничего не знаю о языке Go, я просто хотел бы использовать это приложение на Ubuntu 14:Golang - пропустить SSL/x509 проверку и сборку?

Прежде чем делать что-либо, я должен был set the GOPATH environment variable in my ~/.bashrc. Затем README сообщает, что эта программа установлена ​​с:

go get -u github.com/mvdan/fdroidcl/cmd/fdroidcl 

Это проходит нормально, и исполняемый файл найден. На самом деле, эти файлы, найденные в доме, где GOPATH является ~/go:

$ find ~ -name 'fdroidcl*' 2>/dev/null 
/home/myusername/.cache/fdroidcl 
/home/myusername/.config/fdroidcl 
/home/myusername/go/pkg/gccgo_linux_386/github.com/mvdan/fdroidcl 
/home/myusername/go/src/github.com/mvdan/fdroidcl 
/home/myusername/go/src/github.com/mvdan/fdroidcl/cmd/fdroidcl 
/home/myusername/go/bin/fdroidcl 

Nice, но теперь, когда я начинаю начальную команду:

$ fdroidcl updateDownloading https://f-droid.org/repo/index.jar... 
update: could not update index: Get https://f-droid.org/repo/index.jar: x509: certificate signed by unknown authority (possibly because of "x509: cannot verify signature: algorithm unimplemented" while trying to verify candidate authority certificate "COMODO RSA Certification Authority") 

Это, скорее всего, сбой из-за собственной -подписанный сертификат. Быстрое исправление было бы использовать http:// вместо https:// (в случае f-droid.org это возможно в настоящее время), поэтому я попытался изменить ~/go/src/github.com/mvdan/fdroidcl/cmd/fdroidcl/main.go:

var config = userConfig{ 
     Repos: []repo{ 
       { 
         ID:  "f-droid", 
         //URL:  "https://f-droid.org/repo", 
         URL:  "http://f-droid.org/repo", 
         Enabled: true, 
       }, 
       { 
         ID:  "f-droid-archive", 
         //URL:  "https://f-droid.org/archive", 
         URL:  "http://f-droid.org/archive", 
         Enabled: false, 
       }, 
     }, 
} 

... но команда на самом деле бинарная:

$ file $(which fdroidcl) 
~/go/bin/fdroidcl: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=cd1dc87b54f9023983511ef46fda15a4d88dcb2d, not stripped 

... что означает, что мне нужно как-то перестроить это приложение из источника, чтобы получить эти изменения - как бы я это сделал?

Кроме того, могут быть другие приложения с самоподписанными сертификатами https, которые могли бы сломаться, поэтому я бы скорее пропустил проверку SSL/X509. Кажется, что, как golang: How to do a https request with bad certificate? указывает, что нужно сделать в коде:

tr := http.DefaultTransport.(*http.Transport) 
tr.TLSClientConfig.InsecureSkipVerify = true 

... что опять-таки требует взлома/перекомпиляции исходного кода - но это не есть какая-то переменная окружения, чтобы помочь этому , как GIT_SSL_NO_VERIFY for git?

+2

Это не вопрос о Go и не очень подходит для SO. Конечно, вы должны перекомпилировать после изменения источника. – Volker

+0

Спасибо @ Волькер, и мне очень жаль тратить ваше время. Что вы предложите, лучше подходит для этого вопроса? Я немедленно пометю его, чтобы он переместился на другой форум. Кстати, я должен перекомпилировать, что я знаю, но с помощью какой команды я спрашиваю? – sdbbs

ответ

2

После обновления источника, как вы сделали (в $GOPATH/src), вы можете попробовать повторно компиляции с помощью следующей команды:

go install github.com/mvdan/fdroidcl/cmd/fdroidcl 
+0

Спасибо, @JoshLubawy - я бы подумал, что команда сборки 'go build' или что-то еще, не ожидала' go install'. Могли бы вы, возможно, расшириться там, где установлена ​​'install', - это' ~/go/bin/'; или есть какой-то файл настроек, который может быть в директории git project? – sdbbs

+1

'go install' делает' go build' и помещает полученный двоичный файл в $ GOPATH/bin (то же место, что 'go get' ставит его) – voutasaurus

Смежные вопросы