![如何在 Debian 7 上升级到最新的 git?](https://linux22.com/image/1377735/%E5%A6%82%E4%BD%95%E5%9C%A8%20Debian%207%20%E4%B8%8A%E5%8D%87%E7%BA%A7%E5%88%B0%E6%9C%80%E6%96%B0%E7%9A%84%20git%EF%BC%9F.png)
我已经在 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 时,说明仍然适用。
当没有较新版本的反向移植包可用时,您有两种选择:
要求软件包维护人员准备反向移植。虽然不能保证一定有效,但有些维护人员对制作反向移植持积极态度,所以我会尝试一下。
可以找到维护者的电子邮件那里。
从源代码自行构建。这可以通过两种方式完成:
从源码包“按原样”构建。如果你选择这条路线,确定配置 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文件。