我正在尝试通过安装ack
,apt
但似乎在回购中不再可用。都:
sudo apt install ack
sudo apt install ack-grep
给出以下错误:
E: Package 'ack-grep' has no installation candidate
在17.10存储库中不再可用吗?
artful
未列出,对吗?packages.ubuntu.com/search?suite=artful&keywords=ack
我正在尝试通过安装ack
,apt
但似乎在回购中不再可用。都:
sudo apt install ack
sudo apt install ack-grep
给出以下错误:
E: Package 'ack-grep' has no installation candidate
在17.10存储库中不再可用吗?
artful
未列出,对吗?packages.ubuntu.com/search?suite=artful&keywords=ack
Answers:
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)中轻松实现。
sudo cpanm App::Ack
。
遗憾的ack
是不在17.10存储库中。一种解决方法是按照其网站上的说明手动安装它。
这是我所做的:
$ sudo su
# curl https://beyondgrep.com/ack-2.18-single-file > /usr/local/bin/ack && chmod 0755 /usr/local/bin/ack
sudo su
: ack="/usr/local/bin/ack" && curl -s https://beyondgrep.com/ack-2.18-single-file | sudo tee "$ack" > /dev/null && sudo chmod 0755 "$ack"
未通过Ubuntu自动安装软件包测试的软件包不包含在发行版中,至少不是那些不是来自Universe归档文件的软件包(该软件包是定期导入的,并从Debian Unstable自动获得)。
由于在Ubuntu 17.10 Artful Release周期中进行了更改,因此某些问题打破了ack在ubuntu中的autopkgtest,从而使ack不再包含在Ubuntu版本中。你甚至不能找到它在目前的发展快照bionic
,但如果添加一条线,你可以安装bionic-proposed
到你的sources.list
。
目前还不清楚,到底是什么变化,分别是什么原因(可能是Ubuntu的autopkgtest基础设施中的错误)以及触发的原因。(也许切换到Perl 5.26在Ubuntu的autopkgtest基础结构中出现了问题。)
但是很明显,这个问题是特定于ubuntu的,因为在Debian中ack的autopkgtest顺利通过了,没有任何问题。而在Ubuntu 18.04的开发快照仿生没有表现出这些测试失败本地运行autopkgtest无论是。(它似乎是在Ubuntu上构建的。同样的测试套件也在构建时运行,并且如果未通过,则该软件包将无法构建,这被认为是更为严重的问题。)
另一个提示该问题隐藏在Ubuntu的autopkgtest基础结构中的某个地方的事实是,大多数测试失败突然将其输入视为STDIN而不是预期的文件。
在相应的启动板错误报告或相应的上游错误报告中,非常感谢有关这些奇怪的ubuntu-autopkgtest特定测试失败的根本原因的暗示。
正如@muru在上面的注释中指出的那样,该软件包已在17.10中被破坏,因此已被删除,所以是的,暂时ack
在17.10存储库中没有。
猜猜我应该留意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发布了指向启动板错误报告的链接,这是我得到这个想法的地方。)
sudo apt update
。