无法在Ubuntu 17.10存储库中找到ack
我试图通过apt
安装ack
,但它似乎已经不再可用于回购。 都:
sudo apt install ack sudo apt install ack-grep
给出以下错误:
E: Package 'ack-grep' has no installation candidate
是否在17.10存储库中不再可用?
Ack 在Ubuntu 17.10 Artful中测试失败,直到它通过才被排除在Ubuntu之外 。 Perl在Artful上升级,新的Perl不支持旧的ack版本。 新版本没有通过所有测试。 测试失败是由在Ubuntu下运行的测试框架问题引起的(即使它在Debian中正常工作。) 一个新版本将很快发布 。
与此同时,解决方法是按照ack主页上的建议通过CPAN安装它。 如果您尚未安装CPAN,则需要先安装它:
sudo apt install cpanminus
然后你可以用它来安装ack:
sudo cpanm install App::Ack
它将构建并测试它,因此大约需要2分钟,但完成后它将位于/usr/local/bin/ack
路径中。
我喜欢这个安装选项,因为它使用标准的apt和cpan存储库。 它使用Perl库,这些库将通过自动化工具进行升级。 它可以在Ansible等自动化工具中轻松实现。
可悲的是, ack
不在17.10的存储库中。 解决方法是按照其网站上的说明手动安装它。
这是我做的:
$ sudo su # curl https://beyondgrep.com/ack-2.18-single-file > /usr/local/bin/ack && chmod 0755 /usr/local/bin/ack
Ubuntu自动安装包测试失败的软件包不包含在发行版中,至少那些不是来自Universe存档的软件包(由Debian Unstable定期导入和自动化)。
由于在Ubuntu 17.10 Artful Release周期中发生了变化,在Ubuntu中破坏了ack的autopkgtest ,因此阻止了ack被包含在Ubuntu版本中。 您甚至无法在当前的开发快照bionic
找到它,但是如果您为sources.list
添加了bionic-proposed
的行,则可以安装它。
目前还不清楚,究竟是什么变化,原因(可能是Ubuntu的autopkgtest基础设施中的错误)和触发器是什么。 (也许转换到Perl 5.26在Ubuntu的autopkgtest基础设施中出现了问题。)
很明显,这个问题是特定于ubuntu的,因为在Debian中ack的autopkgtest没有任何问题。 并且在Ubuntu 18.04 Bionic的开发快照上本地运行autopkgtest也不会出现这些测试失败 。 (它似乎建立在Ubuntu上。同样的测试套件也在构建时运行,如果它没有通过,那么这个软件包将无法构建,这被认为是一个更严重的问题。)
另一个暗示该问题隐藏在Ubuntu的autopkgtest基础设施中的事实是, 大多数测试失败都将其输入突然视为STDIN而不是预期的文件 。
任何关于这些奇怪的ubuntu-autopkgtest特定测试失败的根本原因的暗示在相应的启动板错误报告或相应的上游错误报告中都非常受欢迎。
正如@muru在上面的评论中指出的那样,包已被删除,因为它已经在17.10中被删除了,所以是的,现在在17.10存储库中没有ack
。
猜猜我应该关注https://packages.ubuntu.com/search?suite=artful&keywords=ack以了解何时可以再次使用它。
我能够在我的Ubuntu 17.10盒子上安装Ubuntu 18.04软件包:
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=17.10 DISTRIB_CODENAME=artful DISTRIB_DESCRIPTION="Ubuntu 17.10" $ sudo apt install libfile-next-perl ...snip... $ wget https://launchpad.net/ubuntu/+archive/primary/+files/ack_2.18-2_all.deb ...snip... $ sudo dpkg -i ack_2.18-2_all.deb ...snip... $ ack --version ack 2.18 Running under Perl 5.26.0 at /usr/bin/perl Copyright 2005-2017 Andy Lester. This program is free software. You may modify or distribute it under the terms of the Artistic License v2.0.
如果dpkg
命令失败了,可能是因为你错过了我已经拥有的一些依赖项。 尝试apt install
任何缺少的依赖项,然后再次运行dpkg
行。
我比使用CPAN更喜欢这种方法,因为APT / dpkg仍然可以看到这个软件包已经安装,并且一旦Ubuntu解决了它们的构建情况,它将能够在以后升级它。
(感谢Axel Beckert发布了Launchpad错误报告的链接,这是我得到这个想法的地方。)