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


14

我已经通过apt-get在Debian 7上安装了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
为什么不从源代码进行编译(INSTALL文档对此有一些帮助,如果您是新手)?
nerdwaller

如果启动板源损坏,我将直接下载网站的存档。
Ramhound

2
您真的需要吗?在大多数情况下,安装较新版本并不值得。您需要新版本中的特定功能吗?您拥有哪个版本,并且想要安装哪个版本?无论如何,您不能将PPA与Debian一起使用,它们是Ubuntu的东西。
terdon 2013年

Answers:


12

2016年7月27日更新: Gee 1.9.1 现在可以使用 wheezy-backports 。说明仍然适用于安装更新版本或适用于Jessie。


如果没有较新版本的backport软件包,则有两个选择:

  1. 要求软件包维护者准备一个反向端口。它不能保证能正常工作,但是一些维护者对进行反向移植很满意,所以我会尝试。

    维护人员的电子邮件可以在此处找到。

  2. 从源头上自己构建它。这可以通过两种方式完成:

    • 从源压缩文件“按原样”构建。如果您选择这条路线,请确保配置Git的构建系统以在或类似的东西下安装所有东西,否则以后您将拥有一个不错的PITA来删除已安装的东西。~/git/opt/git

      问题是,通过在整个文件系统上传播软件来安装软件的常规Unix方法是明智的,但是只有当您拥有某种“知道”哪个文件属于哪个软件包的注册表,反之亦然,以及诸如Debian的打包系统完全做到这一点。如果您对从来源构建的软件包进行“常规”安装,则在大多数情况下,您以后将无法卸载此软件(除非使用checkinstall代替make install,但这实际上是最后的手段)。相反,如果您将源程序包配置为将所有内容都安装在一个目录下,则运行该软件会遇到一些小麻烦(您的“二进制”目录不会在您的目录中$PATH),而稍后交换来卸载它无疑是很容易的—一个rm -rf /path/to/that/dir

    • 做回移植。这涉及更多,但在简单情况下,它可能只是起作用,因此IMO值得尝试。

      基本上,您是这样的(指向.dsc文件的链接是从package的页面中不稳定的):

      # 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。)

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


@Dereckson,感谢您的编辑建议-非常感谢!但是您能详细说明为什么dget不需要吗?这样做的全部目的是为您带来构成源程序包的所有文件,以便您实际上可以解压缩,调整和构建文件。仅获取单个.dsc文件就可以做到这一点,但是源和debianization压缩包将丢失。
kostix

哦,我的错。命令的顺序欺骗了我,因为之后仅显式使用git_2.1.4-2.1.dsc文件作为参数。我以为dpkg-source可以获取源代码,但实际上确实需要package文件在物理上。
Dereckson

7

您仍然可以通过告诉apt从那里找到的最新资源进行构建,仍然可以使用适用于Ubuntu Precise的Git PPA。分布足够相似,因此应该可以正常工作。

我在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

7

如果您想在Debian 7(Wheezy)中升级特定的软件包,您可以选择使用backport,只需在/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文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.