u12*_*123 14 linux debian git apt-get
我已经通过 apt-get 在 debian 7 上安装了 git,它给了我:
# git --version
git version 1.7.10.4
Run Code Online (Sandbox Code Playgroud)
我想升级到最新版本的 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
Run Code Online (Sandbox Code Playgroud)
但这会产生以下错误:
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
Run Code Online (Sandbox Code Playgroud)
我也尝试遵循本指南:
http://backports.debian.org/Instructions/
但我仍然无法获得最新的 git,有什么建议吗?
kos*_*tix 13
2016 年 7 月 27 日更新:现在可用于 Git 1.9.1的 wheezy-backports 。说明仍然适用于安装更新版本或 Jessie。
当较新版本的 backport 包不可用时,您有两种选择:
请包维护人员准备一个反向移植。它不能保证工作,但一些维护者对进行反向移植持积极态度,所以我只是尝试。
维护者的电子邮件可以在那里找到。
从源头自己构建它。这可以通过两种方式完成:
从源 tarball “按原样”构建。如果你选择这条路线,请务必到Git的构建系统配置安装一切下~/git或/opt/git或类似这样不然以后你就会有很大的PITA移除你安装的是什么。
问题在于,通过将软件分布到整个文件系统来安装软件的传统 Unix 方式是明智的,但前提是您有某种注册表“知道”哪个文件属于哪个包,反之亦然,并且打包系统如 Debian 的做到这一点。如果您对从源代码构建的软件包进行“正常”安装,在大多数情况下,您以后将无法卸载该软件(不能使用checkinstall代替make install,但这确实是最后的手段)。相反,如果您将源包配置为在单个目录下安装所有内容,则运行该软件会遇到一些小困难(它的“二进制”目录不会在您的$PATH.一个rm -rf /path/to/that/dir。
自己做反向移植。这涉及更多,但在简单的情况下它可能会起作用,因此 IMO 值得一试。
基本上你是这样的(.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
Run Code Online (Sandbox Code Playgroud)
通过运行检查是否满足所有构建依赖项:
$ dpkg-checkbuilddeps
Run Code Online (Sandbox Code Playgroud)
并安装工具说的所有内容目前都丢失了。有时,软件包可能指的是某个版本太新鲜而无法在您要向后移植到的发行版中使用;在这种情况下,可以尝试欺骗并修复debian/control文件中此类包的版本。
现在修复即将构建的包的版本。实现这一目标的最佳方法是让工具做正确的事情:
$ dch --bpo
Run Code Online (Sandbox Code Playgroud)
它将在debian/changelog文件中添加一个条目并打开您选择的文本编辑器来监视它。只需关闭编辑器——要构建的包的版本取自该文件的顶部条目。
现在让我们实际尝试构建:
$ dpkg-buildpackage -uc -us -b
Run Code Online (Sandbox Code Playgroud)
如果幸运的话,此时您将拥有一堆闪亮的新 Git.deb包..,您可以使用dpkg -i <packagename> ....
(运行debuild clean以摆脱构建的 crud 或完全删除git目录。您可能还想删除运行后安装的任何内容dpkg-checkbuilddep。)
不幸的是,如果构建由于某种原因失败,则需要一定的知识来尝试修复,但这超出了本讨论的范围。
您仍然可以通过告诉 apt 从它在那里找到的最新源进行构建来为 Ubuntu Precise 使用 Git PPA。分布非常相似,这应该可以正常工作。
我在 Raspbian(基于 wheezy)上成功使用它来获取 armhf 的包,但它应该适用于任何架构。
首先为 PPA 添加 GPG 密钥:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E1DF1F24
Run Code Online (Sandbox Code Playgroud)
将源包的 URL 添加到 apt:
cat > /etc/apt/sources.list.d/git.list << EOF
deb-src http://ppa.launchpad.net/git-core/ppa/ubuntu precise main
EOF
Run Code Online (Sandbox Code Playgroud)
更新贴切:
apt-get update
Run Code Online (Sandbox Code Playgroud)
安装构建依赖项:
apt-get build-dep git
Run Code Online (Sandbox Code Playgroud)
从源代码下载并构建 git。您可能希望在一个临时目录中执行此操作,因为构建过程会产生一些问题:
apt-get -b source git
Run Code Online (Sandbox Code Playgroud)
安装刚刚构建的包并清理(不再需要git-core):
dpkg -i git_*.deb git-man_*.deb
dpkg -P git-core
Run Code Online (Sandbox Code Playgroud)
小智 7
如果您想升级 Debian 7 (Wheezy) 中的特定软件包,您可以选择使用 backports,只需将以下几行添加到您的/etc/apt/sources.list中:
deb http://cloudfront.debian.net/debian wheezy-backports main
deb-src http://cloudfront.debian.net/debian wheezy-backports main
Run Code Online (Sandbox Code Playgroud)
然后,要安装/升级git,请运行以下命令:
$ aptitude update
$ aptitude -t wheezy-backports install git
Run Code Online (Sandbox Code Playgroud)
您还可以在 /etc/apt/sources.list.d/ 中的单独文件中配置向后移植。我特别喜欢使用/etc/apt/sources.list.d/backports.list文件。
| 归档时间: |
|
| 查看次数: |
14952 次 |
| 最近记录: |