Неможливо знайти ack у сховищах 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.
Arupgsh

1
@muru Спасибі , але ваша посилання показує , що він НЕ доступний , так як artfulнемає в списку, правильно? packages.ubuntu.com/search?suite=artful&keywords=ack

3
Хм, так, startpad.net/ubuntu/+source/ack/2.14-5/+publishinghistory вказує на те, що його було видалено через злам
muru

3
Привіт, творець тут. Я знаю ситуацію, але не знаю, що якщо я щось особисто можу зробити з цього приводу. Ось квиток у відслідковувачем помилок з додатковою інформацією: github.com/beyondgrep/ack2/isissue/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.
месс

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
Незважаючи на те, що це виглядає настільки важко встановити програмне забезпечення з випадкових веб-сайтів, понадgrep.com - це офіційний веб-сайт ack.
Стівен Остерміллер

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 щось порушило автоматичну перевірку Ack у Ubuntu, і, отже, припинило включення Ack у версії Ubuntu. Ви навіть не можете знайти його в поточному знімку розробки bionic, але ви можете встановити його, якщо додати рядок для bionic-proposedсвого sources.list.

Досі незрозуміло, в чому саме полягала ця зміна, відповідно, в чому причина (можливо, помилка в інфраструктурі автоматичного тестування Ubuntu) та в чому полягає тригер. (Можливо, перехід на Perl 5.26 виникла проблема в автоматичній тест-службі Ubuntu.)

Ясна річ, що ця проблема специфічна для ubuntu, оскільки автоматичний тест Ack в Debian проходить без жодних проблем. І запуск автотехнічного тестування локально на знімку розвитку Ubuntu 18.04 Bionic не демонструє цих тестових збоїв . (І, схоже, він базується на Ubuntu. І той самий тестовий набір також запускається під час збирання, і якби він не пройшов, пакет не створив би, що вважається набагато серйознішою проблемою.)

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

Будь-який натяк на основні причини цих дивних тестів, пов’язаних з убунту-автопкштестом, дуже цінується як у звіті про помилки запуску, так і у відповідному звіті про помилки .


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 (так як це ЛТП, можливо , більше зусиль , можуть бути введені в зробити його роботу)
Muru

Наскільки я можу сказати, "зламаною", яка викликала цю проблему, була помилка написання, яка спричинила упаковку Debian.
Енді Лестер

1
@AndyLester: Ні, ця орфографічна помилка не мала нічого спільного з цим. Команда 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, саме тут я отримав цю ідею.)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.