GO: Отказано в доступе к файлу после установки гориллы

Я новичок в SO и относительно новый новичок в GO. Я без проблем собирал и запускал код GO на своем локальном сервере, пока мне не пришлось использовать некоторые пакеты из набора инструментов Gorilla.

Что я запускал в командной строке:

mkdir $HOME/mygo
export GOPATH=$HOME/mygo
cd mygo

go get github.com/gorilla/mux

Я сделал это на основе примера отсюда: http://golang.org/doc/articles/go_command.html. В разделе Начало работы с командой Go и здесь http://www.gorillatoolkit.org/.

После этого я импортировал свой код main.go в папку mygo. Папка моего каталога выглядит так:

Workspace
    pkg
    src
    main.go

Однако, когда я запустил go build main.go и попытался запустить ./main, я получил

-bash: ./main.go: Permission denied

Что случилось?? Пожалуйста помоги. Спасибо!


person user3918985    schedule 07.08.2014    source источник
comment
Исходный код Go не является исполняемым сам по себе. Вам нужно его скомпилировать. Начните здесь: golang.org/doc/code.html   -  person JimB    schedule 07.08.2014
comment
У меня никогда не было этой проблемы, пока я не зашел на github.com/gorilla/mux. Я не понимаю, что происходит.   -  person user3918985    schedule 07.08.2014
comment
Я гарантирую, что это не сработало раньше. Во-первых, вы не можете выполнить исходный код go, и оболочка не может его интерпретировать. Сообщение, которое у вас есть, является точным выводом bash, если вы попытаетесь выполнить неисполняемый файл с именем mycode.go.   -  person JimB    schedule 07.08.2014
comment
Я запускал go build main.go, а потом ./main.go. Это скомпилировалось и заработало. Пожалуйста, смотрите предпоследнюю строку в моем вопросе.   -  person user3918985    schedule 07.08.2014
comment
Если вы запустите go build main.go, он выведет двоичный файл с именем main и ничего больше, и вы сможете запустить его через ./main   -  person JimB    schedule 07.08.2014
comment
это то, что я сделал, но, как я уже сказал, только когда я устанавливаю гориллу, я внезапно не могу их запустить. Я хочу знать, почему.   -  person user3918985    schedule 07.08.2014
comment
Согласно вашему выводу, вы не выполняете main, вы пытаетесь выполнить main.go. Я не могу больше помочь, не зная источника main.go. Если вы боретесь с этим, я настоятельно рекомендую вам начать со ссылки, которую я предоставил первой, или с Tour Of Go< /а>   -  person JimB    schedule 07.08.2014
comment
О, спасибо большое. Я не знаю, почему я так запустил. В любом случае это упущение Спасибо еще раз   -  person user3918985    schedule 07.08.2014


Ответы (1)


Сначала я настоятельно рекомендую прочитать http://linuxcommand.org/learning_the_shell.php, а затем перейти к < href="http://tour.golang.org/" rel="nofollow">тур.

Во-вторых, как упоминал @JimB, вы не можете выполнить main.go напрямую (вы можете использовать binfmt_misc но я не буду объяснять это здесь).

Итак, шаги для запуска вашего исполняемого файла:

go build -o main
./main

Или напрямую:

go run main.go
person OneOfOne    schedule 07.08.2014