Golang更新时如何删除go文件夹

Golang更新时如何删除go文件夹 大家好,

我想将我的 Go 升级到最新版本。但在安装新版本之前,我必须删除现有的版本。我的操作系统是 Ubuntu 18.04。所以我运行了 rm -rf /usr/local/go,但得到的回应是:rm: cannot remove 'go': Permission denied

我已经使用 sudo chmod -R 777 go 更改了目录权限,但结果相同。

你有什么建议? 谢谢

9 回复

使用正确打包的软件或在用户主目录中进行安装。

更多关于Golang更新时如何删除go文件夹的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


感谢您的帮助。

/usr/local/go/ 文件夹如何被一个已安装的包所拥有?

NobbZ: 据我所知,这甚至是golang.org上安装指南的建议位置。我不是这种做法的忠实粉丝。

你有什么建议?

就我所记得的,我是通过下载压缩包并将其解压到 /usr/local/ 文件夹来安装 Go 的。

移除使用 sudo

但前提是你必须非常确定该文件夹并非由你安装的某个软件包“拥有”。

// 代码示例:检查文件夹所有权
func checkOwnership(path string) bool {
    // 实现检查逻辑
    return true
}

如果你执行了 apt-get install foo 命令,因此安装了一个包含该文件夹的软件包。

这不是指文件系统意义上的“拥有”,而是在你的包管理器上下文中的“拥有”。

func main() {
    fmt.Println("hello world")
}

那么删除它应该是安全的,不会混淆你的包管理器数据库。

据我所知,这甚至是 golang.org 上安装指南建议的位置。我不是这种做法的忠实粉丝。

在Ubuntu系统中,/usr/local/go目录通常需要root权限才能修改。你遇到的权限问题可能是因为目录的所有权或某些文件被锁定。以下是正确的删除方法:

1. 使用sudo删除目录:

sudo rm -rf /usr/local/go

2. 如果仍然遇到权限问题,先检查目录所有权:

ls -la /usr/local/ | grep go

3. 如果需要,更改所有权后再删除:

sudo chown -R $USER:$USER /usr/local/go
sudo rm -rf /usr/local/go

4. 验证删除是否成功:

ls /usr/local/go
# 如果显示 "No such file or directory",说明已成功删除

5. 安装新版本Go:

# 下载最新版本(示例为1.21.0)
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz

# 解压到/usr/local
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz

# 设置环境变量(添加到~/.bashrc或~/.profile)
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc

# 验证安装
go version

注意:使用chmod 777会带来安全风险,建议避免在生产环境中使用。

回到顶部