我想使用他们的助手将我们的 Bitbucket 服务器迁移到云中,但它要求 git 为 2.25 或更高版本,我不知道如何更新它。是的,我知道在我们的环境中保留 16.10 是件很丢脸的事(我是 Linux 菜鸟)。
尽管 16.10 已经严重过时/终止使用,是否仍然可以更新 git?
答案1
是的,不支持,但我还是很慷慨。让我们从源代码构建 git。我在 16.10 的全新安装上测试了这一点。对我来说很管用!:D
更新源
编辑你的/etc/apt/sources.list
(如果你还没有这样做)以替换archive.ubuntu.com
。同时用“#”old-releases.ubuntu.com
注释掉这些行security.ubuntu.com
sudo nano /etc/apt/sources.list
使用 ALT+R 进行搜索/替换。
因此它看起来应该是这样的:
deb http://old-releases.ubuntu.com/ubuntu/ yakkety main restricted
deb http://old-releases.ubuntu.com/ubuntu/ yakkety-updates main restricted
deb http://old-releases.ubuntu.com/ubuntu/ yakkety universe
deb http://old-releases.ubuntu.com/ubuntu/ yakkety-updates universe
deb http://old-releases.ubuntu.com/ubuntu/ yakkety multiverse
deb http://old-releases.ubuntu.com/ubuntu/ yakkety-updates multiverse
deb http://old-releases.ubuntu.com/ubuntu/ yakkety-backports main restricted universe multiverse
#deb http://security.ubuntu.com/ubuntu yakkety-security main restricted
#deb http://security.ubuntu.com/ubuntu yakkety-security universe
#deb http://security.ubuntu.com/ubuntu yakkety-security multiverse
更新程序包
这只会安装过去几年的最新(lulz)更新。
sudo apt-get upgrade
如果您有大量更新,此时可能需要重新启动,因为您可能有一个“较新的”内核。
您可能早就执行了上述步骤,在系统停止支持之前,并且不再有更新。没关系。
获取 git 源代码
让我们获取您能获取的最早的 git 源 tarball。这--no-check-certificate
是必需的,因为您的系统上的 SSL 证书都已过期。
cd ~
wget --no-check-certificate https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.25.5.tar.gz
解压源代码
tar zxvf git-2.25.5.tar.gz
cd git-2.25.5
获得构建的先决条件
我们需要一个编译器来编译 git,并用 make 来构建它以及一些依赖项。
sudo apt install gcc make zlib1g-dev gettext
配置
./configure
这将成功,最后三行将是:
configure: creating ./config.status
config.status: creating config.mak.autogen
config.status: executing config.mak.autogen commands
否则就会失败,我们就无法继续下去。
制作
奇迹就在这里发生。我们将编译git
二进制文件和所有其他部分。
make
根据您系统的速度,这可能需要几分钟。它会不断输出以“CC”为前缀的进度。
不应该有任何错误,因为 git 编译起来非常简单。最后几行会显示“GEN bin-wrappers/”之类的内容,后面跟着一些命令。
测试 git
./git version
应显示:
git version 2.25.5
安装 git
sudo make install
这会将二进制文件复制到,/usr/local/bin
因此如果 bitbucket 需要知道在哪里找到新的 git 二进制文件,那就是它所在的地方。
该which git
命令应该返回/usr/local/bin/git
并且git version
应该返回正确的版本。
祝你好运!