如何在 Debian 7 上升级到最新的 git?

如何在 Debian 7 上升级到最新的 git?

我已经在 Debian 7 上通过 apt-get 安装了 git,它给了我:

# git --version
git version 1.7.10.4

我想升级到 git 的最新版本。我尝试过:

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git

但这会出现以下错误:

Fetched 6,944 B in 0s (10.1 kB/s)
W: Failed to fetch http://ppa.launchpad.net/git-core/ppa/ubuntu/dists/wheezy/main/source/Sources  404  Not Found

W: Failed to fetch http://ppa.launchpad.net/git-core/ppa/ubuntu/dists/wheezy/main/binary-amd64/Packages  404  Not Found

我也尝试遵循这个指南:

http://backports.debian.org/Instructions/

但我仍然无法获取最新的 git,有什么建议吗?

答案1

更新于2016-07-27:wheezy-backports 是现已推出适用于 Git 1.9.1。安装更新版本或 Jessie 时,说明仍然适用。


当没有较新版本的反向移植包可用时,您有两种选择:

  1. 要求软件包维护人员准备反向移植。虽然不能保证一定有效,但有些维护人员对制作反向移植持积极态度,所以我会尝试一下。

    可以找到维护者的电子邮件那里

  2. 从源代码自行构建。这可以通过两种方式完成:

    • 从源码包“按原样”构建。如果你选择这条路线,确定配置 Git 的构建系统来安装一切或类似的东西,否则稍后您将会有一个伟大的 PITA 删除您安装的东西~/git/opt/git

      问题是,传统的 Unix 安装软件的方式是将软件分散到整个文件系统中,这种方式是合理的,但前提是你有某种注册表,它“知道”哪个文件属于哪个软件包,反之亦然,而 Debian 等软件包系统正是这样做的。如果你“正常”安装从源代码构建的软件包,在大多数情况下,你将无法在以后卸载此软件(除非使用checkinstall而不是make install,但这真的是最后的手段)。相反,如果您配置源包以将所有内容安装在单个目录下,则在运行软件时会遇到一些小困难(其“二进制”目录不会在您的 上$PATH),作为交换,稍后卸载它将是一件轻而易举的事——一个rm -rf /path/to/that/dir

    • 自己进行反向移植。这比较复杂,但在简单情况下可能会有效,所以在我看来值得一试。

      基本上你可以像这样(文件链接.dsc取自不稳定软件包页面):

      # apt-get install devscripts
      $ mkdir ~/devel && cd $_
      $ dget http://ftp.de.debian.org/debian/pool/main/g/git/git_2.1.4-2.1.dsc
      $ dpkg-source -x git_2.1.4-2.1.dsc
      $ cd git
      

      通过运行以下命令检查是否满足所有构建依赖项:

      $ dpkg-checkbuilddeps
      

      并安装该工具所说的目前缺少的所有内容。有时,软件包可能引用了某些太新的版本,而无法在您要反向移植到的发行版中使用;在这种情况下,可以尝试作弊并修复文件中此类软件包的版本debian/control

      现在修复即将构建的软件包的版本。实现此目的的最佳方法是让工具做正确的事情:

      $ dch --bpo
      

      它会向文件添加一个条目debian/changelog,并打开您选择的文本编辑器来查看它。只需关闭编辑器 — 要构建的包的版本取自此文件的顶部条目。

      现在让我们实际尝试构建:

      $ dpkg-buildpackage -uc -us -b
      

      如果你很幸运的话,此时你将拥有一堆崭新的 Git.deb..,你可以使用它们进行安装dpkg -i <packagename> ...

      (运行debuild clean以删除构建的垃圾或完全删除git目录。您可能还想删除运行后安装的所有内容dpkg-checkbuilddep。)

      不幸的是,如果建筑由于某种原因失败,则需要一定的知识来尝试修复,但这超出了本次讨论的范围。

答案2

您仍可以使用 Git PPA 来安装 Ubuntu Precise,只需告诉 apt 从它在那里找到的最新源代码进行构建即可。这两个发行版非常相似,因此应该可以正常工作。

我在 Raspbian(基于 wheezy)上成功使用它来获取 armhf 的软件包,但它应该适用于任何架构。

首先为 PPA 添加 GPG 密钥:

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E1DF1F24

将源包的 URL 添加到 apt:

cat > /etc/apt/sources.list.d/git.list << EOF
deb-src http://ppa.launchpad.net/git-core/ppa/ubuntu precise main
EOF

更新apt:

apt-get update

安装构建依赖项:

apt-get build-dep git

从源代码下载并构建 git。你可能想在一个临时目录中执行此操作,因为构建过程会产生一些麻烦:

apt-get -b source git

安装刚刚构建的包并清理(不再需要 git-core):

dpkg -i git_*.deb git-man_*.deb
dpkg -P git-core

答案3

如果你想升级 Debian 7 (Wheezy) 中的特定软件包,你可以选择使用反向移植,只需将其添加到你的/etc/apt/sources.list以下几行:

deb http://cloudfront.debian.net/debian wheezy-backports main
deb-src http://cloudfront.debian.net/debian wheezy-backports main

然后,安装/升级git,运行命令:

$ aptitude update
$ aptitude -t wheezy-backports install git

您还可以在 /etc/apt/sources.list.d/ 中的单独文件中配置反向移植。我特别喜欢使用/etc/apt/sources.list.d/backports.list文件。

相关内容