go用apt下载,但没有找到go命令

  • 本文关键字:go 命令 apt 下载 linux go
  • 更新时间 :
  • 英文 :


我的os是Kali。首先我输入go,shell告诉我go command not found

└─$ go       
Command 'go' not found, but can be installed with:
sudo apt install gccgo-go 
sudo apt install golang-go

所以我查了sudo apt install golang-go,它告诉我golang-go已经是最新版本,但go仍然没有找到。我谷歌了一下,知道有时它会有一个文件夹/usr/local/go,但它没有。

┌──(highway㉿highway)-[/usr/local]
└─$ ll       
drwxr-xr-x 2 root root 4096  5月 16 13:27 bin
drwxr-xr-x 2 root root 4096  2月  8 01:26 etc
drwxr-xr-x 2 root root 4096  2月  8 01:26 games
drwxr-xr-x 2 root root 4096  2月  8 01:26 include
drwxr-xr-x 5 root root 4096  4月 23 17:28 lib
lrwxrwxrwx 1 root root    9  4月 23 17:28 man -> share/man
drwxr-xr-x 3 root root 4096  4月 24 08:09 samba
drwxr-xr-x 2 root root 4096  2月  8 01:26 sbin
drwxr-xr-x 7 root root 4096  4月 24 08:09 share
drwxr-xr-x 2 root root 4096  2月  8 01:26 src

so ilocate goand find/usr/lib/goandcd /usr/lib/go/bin

┌──(highway㉿highway)-[/usr/lib/go]
└─$ ls             
api  bin  doc  misc  pkg  src  test  VERSION
┌──(highway㉿highway)-[/usr/lib/go/bin]
└─$ ll
-rwxr-xr-x 1 root root 10225816  5月 15 03:22 go
-rwxr-xr-x 1 root root  2281848  5月 15 03:22 gofmt
┌──(highway㉿highway)-[/usr/lib/go/bin]
└─$ ./go version  
go version go1.18.2 linux/amd64
┌──(highway㉿highway)-[/usr/lib/go/bin]
└─$ ./go env     
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/highway/.cache/go-build"
GOENV="/home/highway/.config/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/home/highway/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/highway/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/lib/go-1.18"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/go-1.18/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.18.2"
GCCGO="gccgo"
GOAMD64="v1"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/dev/null"
GOWORK=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build3356979286=/tmp/go-build -gno-record-gcc-switches"

它工作,但为什么go仍然没有找到?

┌──(highway㉿highway)-[/usr/lib/go/bin]
└─$ go   
Command 'go' not found, but can be installed with:
sudo apt install gccgo-go 
sudo apt install golang-go

/usr/lib/go/bin/usr/local/go之间有什么不同?如果没有不同,我可以用go来代替cd /usr/lib/go/bin && ./go

您需要将go的bin目录附加到PATH环境变量中。在~/.bashrc的末尾添加这一行:

export PATH=$PATH:/usr/lib/go/bin

@emilianolch的另一种解决方案是在/usr/local/bin中创建符号链接。并且您需要链接/usr/lib/go/bin中的所有二进制文件,因此:

sudo ln -s /usr/lib/go/bin/* /usr/lib/bin/

不需要重新启动终端,应该可以立即工作。

PRO:Go二进制文件看起来像其他发行版一样。可以更好地工作与其他工具,如VS Code SSH远程。

CON:如果将来通过apk安装更多的Go工具,则必须再次使用ln。(只有新的,不需要重新安装/升级现有的)

最新更新