Невозможно найти подтверждение в репозиториях Ubuntu 17.10

14

Я пытаюсь установить ackчерез, aptно кажется, что он больше не доступен в репозиториях. И то и другое:

sudo apt install ack
sudo apt install ack-grep

выдайте следующую ошибку:

E: Package 'ack-grep' has no installation candidate

Он больше не доступен в репозиториях 17.10?

Аксель Беккерт
источник
Сначала попробуй sudo apt update.
17
1
@muru Спасибо , но ваша ссылка показывает , что он не доступен , так как artfulнет в списке, правильно? packages.ubuntu.com/search?suite=artful&keywords=ack
3
Хм, да, launchpad.net/ubuntu/+source/ack/2.14-5/+publishinghistory указывает, что он был удален из-за поломки
muru
3
Привет, создатель Ack здесь. Я осведомлен о ситуации, но я не знаю, что, если что-нибудь, я лично могу сделать с этим Вот билет в трекер ошибок Ack с дополнительной информацией: github.com/beyondgrep/ack2/issues/652
Энди Лестер

Ответы:

12

У Ack есть тестовый сбой в Ubuntu 17.10 Artful, и он был исключен из Ubuntu до его прохождения. Perl обновлен до Artful, и старая версия ack не поддерживается новым Perl. Новая версия не проходит все свои испытания. Сбой теста вызван проблемами со средой тестирования, работающей под Ubuntu (даже если она хорошо работает в Debian). Скоро будет выпущена новая версия, которая проходит успешно .

Тем временем, обходной путь должен установить это через CPAN, как предложено на домашней странице ack . Если у вас еще не установлен CPAN, вам нужно сначала установить его:

sudo apt install cpanminus

Затем вы можете использовать его для установки ack:

sudo cpanm install App::Ack

Он соберет и протестирует его, так что это займет около 2 минут, но после того, как это будет сделано, он будет на вашем пути в /usr/local/bin/ack.

Мне нравится этот вариант установки, потому что он использует стандартные репозитории apt и cpan. Он использует библиотеки Perl, которые будут обновлены автоматизированными инструментами. Это может быть легко реализовано в автоматизированных инструментах, таких как Ansible.

Стивен Остермиллер
источник
2
Предположительно , если вы устанавливаете cpanminus вы на самом деле хотите , чтобы затем установить его с помощью: sudo cpanm App::Ack.
Джоэл Бергер
3
На самом деле, в нынешнем виде это не проблема для Perl или Ack (тесты проходят с одинаковыми версиями в почти идентичной системе сборки Debian). В настоящее время предполагается, что это ошибка в системе сборки Ubuntu.
mniess
6

К сожалению ack, нет в 17.10 хранилищах. Обходной путь должен установить это вручную согласно инструкциям на его веб-сайте .

Вот что я сделал:

$ sudo su
# curl https://beyondgrep.com/ack-2.18-single-file > /usr/local/bin/ack && chmod 0755 /usr/local/bin/ack
Петерис Кауне
источник
2
Несмотря на то, что установка программного обеспечения со случайных веб-сайтов выглядит довольно привлекательно, за пределами сайта Официальный веб-сайт.
Стивен Остермиллер
1
В одной версии файла ack используются собственные копии необходимых библиотек, которые не будут автоматически обновляться, если в них обнаружен недостаток безопасности. Он использует версии библиотеки по состоянию на момент создания 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"
Стивен Остермиллер
Пожалуйста, не надо. Скорее используйте пакет ack .deb из другого выпуска Ubuntu (или даже Debian). Таким образом, вы по крайней мере получаете обновления безопасности для всех используемых библиотек.
Аксель
Это был единственный метод, который работал для меня.
Теодор Р. Смит
4

Пакеты, которые не проходят автоматическое тестирование пакетов в Ubuntu, не включены в выпуск, по крайней мере, из архива юниверса (который регулярно импортируется и автоматизируется из Debian Unstable).

Из-за изменений во время цикла Ubuntu 17.10 Artful Release что-то сломало autopkgtest ack в Ubuntu и, следовательно, перестало включать ack в релизы Ubuntu. Вы даже не можете найти его в текущем снимке разработки bionic, но вы можете установить его, если добавите строку для bionic-proposedсвоего sources.list.

До сих пор неясно, что именно это было за изменение, соответственно, в чем причина (возможно, ошибка в инфраструктуре autopkgtest в Ubuntu) и каков триггер. (Возможно, переход на Perl 5.26 показал проблему в инфраструктуре autopkgtest в Ubuntu.)

Что ясно, так это то, что эта проблема специфична для Ubuntu, так как autopkgtest ack в Debian проходит без проблем. А локальный запуск autopkgtest для моментального снимка Ubuntu 18.04 для разработчиков также не приводит к сбоям в тестировании . (И похоже, что он построен на Ubuntu. И тот же набор тестов также запускается во время сборки, и если он не пройдет, пакет не будет собран, что считается гораздо более серьезной проблемой.)

Еще один намек на то, что проблема спрятана где-то в инфраструктуре Ubuntu autopkgtest, заключается в том, что большинство неудачных тестов внезапно воспринимают свой ввод как STDIN вместо ожидаемых файлов .

Любой намек на основные причины этих странных убунт-autopkgtest-специфические ошибки тестирования очень ценится либо в соответствии отчете об ошибке Launchpad или в соответствии вверх по течению сообщения об ошибке .

Аксель Беккерт
источник
2

Как указано @muru в комментариях выше, пакет был удален, поскольку он не работает в 17.10, так что да, пока нет ackв репозиториях 17.10.

Думаю, я должен следить за https://packages.ubuntu.com/search?suite=artful&keywords=ack, чтобы узнать, когда он снова будет доступен.


источник
1
Это, вероятно, не будет. Крайне редко, когда пакет, которого еще нет в репо, доступен через бэкпорт. Вы можете следить за launchpad.net/ubuntu/bionic/+source/ack, чтобы узнать, удастся ли это сделать на 18.04 (поскольку это lts, ​​возможно, нужно приложить больше усилий, чтобы это сработало)
muru
Насколько я могу судить, "поломка", которая вызвала эту проблему, была орфографической ошибкой, которая запустила пакет Debian.
Энди Лестер
1
@AndyLester: Нет, эта орфографическая ошибка не имеет к этому никакого отношения. Он даже был помечен как ложноположительный через переопределение Lintian командой Debian Perl.
Аксель
«неработающий» (Cc @muru) в этом случае означает, что он не прошел автоматическое тестирование пакета при установке (кратко: autopkgtest). Соответствующая страница, за которой нужно следить, - autopkgtest.ubuntu.com/packages/ack и ее подстраницы. И это явно проблема , связанная с Ubuntu, так как ack проходит autopkgtest Debian .
Аксель
@AxelBeckert Я знаю. Мы обсуждали это на странице билетов. Я написал этот орфографический комментарий шесть недель назад.
Энди Лестер
1

Мне удалось установить пакет Ubuntu 18.04 на мою коробку Ubuntu 17.10:

$ 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 разберется со своей ситуацией сборки.

(Спасибо Акселю Бекерту за то, что он опубликовал ссылку на отчет об ошибке Launchpad, где я и получил эту идею.)

Марк Э. Хаазе
источник