About “sudo go run main.go”

后端 未结 2 1735
暗喜
暗喜 2020-12-22 05:50

I use Go in my Ubuntu 16.04, and I set GOPATH, GOROOT and run simple code successfully.

Now I want to capture network packet by \"gopacket\

相关标签:
2条回答
  • 2020-12-22 06:12

    Your environment variables are not set for your root user. Don't try to run sudo go run ..., instead build the binary without sudo, e.g. go build or go install, and then execute the binary with sudo.

    Let's say you're in the folder of main.go, assumed it's called mycapt:

    go build
    sudo ./mycapt
    

    Or:

    go install
    sudo $GOPATH/bin/mycapt
    
    0 讨论(0)
  • 2020-12-22 06:34

    sudo -E go run main.go may work for you.

    Here is what you can get about -E option from man sudo

    -E, --preserve-env
       Indicates to the security policy that the user wishes to preserve
       their existing environment variables. The security policy may return
       an error if the user does not have permission to preserve the environment.
    
    0 讨论(0)
提交回复
热议问题