将 Go 的二进制发行版复制到“/usr/local/”是一个好习惯吗?

将 Go 的二进制发行版复制到“/usr/local/”是一个好习惯吗?

从 Go 的安装网页,

下载存档并将其解压到 /usr/local 中,在 /usr/local/go 中创建 Go 树。例如:

tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz

选择适合您的安装的存档文件。例如,如果您要在 Linux 上安装适用于 64 位 x86 的 Go 版本 1.2.1,则所需的存档名为 go1.2.1.linux-amd64.tar.gz。

(通常这些命​​令必须以 root 身份或通过 sudo 运行。)

将 /usr/local/go/bin 添加到 PATH 环境变量中。您可以通过将此行添加到 /etc/profile (对于系统范围的安装)或 $HOME/.profile 来完成此操作:

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

我的目录层次结构/usr/local

$ ls /usr/local/
bin  etc  games  include  lib  man  sbin  share  src  texlive

提取的 Go 二进制分布是否适合/usr/local?将 Go 的二进制发行版复制到 中是一个好习惯吗/usr/local/

如果没有,您对将其放置在哪里有什么建议?/opt我的主目录是一个更好的地方吗?

谢谢。

答案1

我的建议是不是按照 Go 语言网站上的安装说明进行操作。

相反,安装适合您的发行版的软件包。

例如,Debian 打包了 golang 1.6.1,以及数百个 Go 库。

Ubuntu 也有 1.6.1。 http://packages.ubuntu.com/xenial/devel/golang

apt-get install golang将安装编译器、文档和 golang 源代码。

apt-cache show -n golang会给你一个包名中带有“golang”的所有其他包的列表 - 乍一看,远没有 Debian 那么多。


如果你确实必须自己编译和安装它,你至少应该使用checkinstall

CheckInstall 跟踪安装脚本(“make install”、“make install_modules”、“setup”等)创建或修改的所有文件,构建标准二进制包并将其安装在您的系统中,使您能够卸载它使用您的发行版的标准包管理实用程序。

主页:http://checkinstall.izto.org

将它用于您编译的任何 Go 库。

答案2

根据FHS/usr/local/正是为了这个目的:

/usr/local 层次结构供系统管理员在本地安装软件时使用。

替代方案是 /opt:

/opt保留用于安装附加应用程序软件包。
要安装的包/opt必须在单独的目录树中找到其静态/opt/<package>文件/opt/<provider>

即使在 中/usr/local,单独的树对于保持不同的包彼此分离、简化更新、删除以及保持同一程序的多个版本也很有用。两者之间的选择/usr/local很大程度上取决于您作为系统管理员。

答案3

遵循安装说明通常是良好的做法。

我认为将 Go 的东西保留在 . 下听起来是个好主意/usr/local/go。这样,您可以在更新之前轻松删除整个安装,只需删除该目录层次结构即可。

只要您向shell 变量添加适当的路径,就没有什么可以阻止您将其放入/optas/opt/go或 in/sw或或 任何您想要的位置。$HOME/localPATH

软件在下面创建自己的层次结构并非闻所未闻/usr/local。在某些 BSD 系统上,安装 GNUcoreutils将创建/usr/local/gnu诸如glsgcpgrm(带有前缀的普通实用程序g)作为从/usr/local/bin到 的符号链接/usr/local/gnu/bin

相关内容