Ack kann in Ubuntu 17.10-Repositorys nicht gefunden werden

14

Ich versuche, acküber zu installieren, aptaber es scheint, dass es in den Repos nicht mehr verfügbar ist. Beide:

sudo apt install ack
sudo apt install ack-grep

Geben Sie den folgenden Fehler ein:

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

Ist es in den 17.10-Repositories nicht mehr verfügbar?

Axel Beckert
quelle
Versuchen Sie es zuerst sudo apt update.
arupgsh
1
@muru Danke, aber dein Link zeigt, dass er nicht verfügbar ist, da er artfulnicht aufgelistet ist, richtig? packages.ubuntu.com/search?suite=artful&keywords=ack
3
Hmm, ja, launchpad.net/ubuntu/+source/ack/2.14-5/+publishinghistory zeigt an, dass es aufgrund eines
Defekts
3
Hallo, Schöpfer von ack hier. Ich bin mir der Situation bewusst, aber ich weiß nicht, was ich persönlich tun kann. Hier ist ein Ticket im Ack-Bug-Tracker mit weiteren Informationen: github.com/beyondgrep/ack2/issues/652
Andy Lester

Antworten:

12

Ack hat einen Testfehler in Ubuntu 17.10 Artful und es wurde von Ubuntu ausgeschlossen, bis es bestanden hat. Perl wird auf Artful aktualisiert und die alte ack-Version wird von der neuen Perl-Version nicht unterstützt. Die neue Version besteht nicht alle Tests. Der Testfehler wird durch Probleme mit dem Testframework verursacht, das unter Ubuntu ausgeführt wird (auch wenn es unter Debian einwandfrei funktioniert). Eine neue Version, die bestanden wird, wird in Kürze veröffentlicht .

In der Zwischenzeit besteht eine Problemumgehung darin, es über CPAN zu installieren, wie auf der ack-Homepage vorgeschlagen . Wenn Sie CPAN noch nicht installiert haben, müssen Sie es zuerst installieren:

sudo apt install cpanminus

Dann können Sie es benutzen, um ack zu installieren:

sudo cpanm install App::Ack

Es wird gebaut und getestet, also dauert es ungefähr 2 Minuten, aber nachdem es fertig ist, wird es in deinem Pfad sein /usr/local/bin/ack.

Diese Installationsoption gefällt mir, weil sie Standard-Repositorys für apt und cpan verwendet. Es werden Perl-Bibliotheken verwendet, die durch automatisierte Tools aktualisiert werden. Es kann einfach in automatisierten Tools wie Ansible implementiert werden.

Stephen Ostermiller
quelle
2
Vermutlich , wenn Sie cpanminus installieren wollen Sie tatsächlich installieren Sie sie mit: sudo cpanm App::Ack.
Joel Berger
3
Tatsächlich ist es beim gegenwärtigen Stand kein Problem mit Perl oder Ack (Tests bestehen mit den gleichen Versionen im fast identischen Debian-Build-System). Derzeit wird davon ausgegangen, dass es sich um einen Fehler im Ubuntu-Build-System handelt.
Dienstag,
6

Traurig ack ist nicht in 17.10 Repositories. Eine Problemumgehung besteht darin, es manuell gemäß den Anweisungen auf der Website zu installieren .

Folgendes habe ich getan:

$ sudo su
# curl https://beyondgrep.com/ack-2.18-single-file > /usr/local/bin/ack && chmod 0755 /usr/local/bin/ack
Pēteris Caune
quelle
2
Obwohl die Installation von Software von zufälligen Websites eine gewisse Herausforderung darstellt, ist beyondgrep.com die offizielle ack-Website.
Stephen Ostermiller
1
Die Einzeldateiversion von ack verwendet eigene Kopien der erforderlichen Bibliotheken, die nicht automatisch aktualisiert werden, wenn darin eine Sicherheitslücke gefunden wird. Dabei werden die Bibliotheksversionen ab dem Zeitpunkt der Erstellung von ack verwendet, die möglicherweise nicht die aktuellsten Versionen sind, selbst wenn Sie diese installieren. Wenn Sie diese Lösung verwenden, sollten Sie sich darüber im Klaren sein, dass bei der Installation einzelner Dateien zusätzliche Sicherheitsbedenken bestehen.
Stephen Ostermiller
Ein sudo suack="/usr/local/bin/ack" && curl -s https://beyondgrep.com/ack-2.18-single-file | sudo tee "$ack" > /dev/null && sudo chmod 0755 "$ack"
Einzeiler
Bitte nicht Verwenden Sie lieber das ack .deb-Paket aus einem anderen Ubuntu-Release (oder sogar Debian). So erhalten Sie zumindest Sicherheitsupdates für alle verwendeten Bibliotheken.
Axel Beckert
Dies war die einzige Methode, die bei mir funktioniert hat.
Theodore R. Smith
4

Pakete, die den automatischen Pakettest von Ubuntu im installierten Zustand nicht bestehen, sind nicht in einer Version enthalten, zumindest nicht aus dem Universumsarchiv (das regelmäßig importiert und aus Debian Unstable automatisiert wird).

Aufgrund einer Änderung während des Ubuntu 17.10 Artful Release-Zyklus hat etwas den Autopkgtest von ack in Ubuntu gebrochen und daher die Aufnahme von ack in Ubuntu-Releases gestoppt. Sie können es nicht einmal im aktuellen Entwicklungs-Snapshot finden bionic, aber Sie können es installieren, wenn Sie eine Zeile für hinzufügenbionic-proposed , um Ihre sources.list.

Es ist immer noch unklar, was genau diese Änderung war bzw. was der Grund (möglicherweise ein Fehler in Ubuntus Autopkgtest-Infrastruktur) und was der Auslöser ist. (Möglicherweise zeigte der Wechsel zu Perl 5.26 ein Problem in der Autopkgtest-Infrastruktur von Ubuntu.)

Es ist jedoch klar, dass dieses Problem ubuntu-spezifisch ist, da der Autopkgtest von ack in Debian problemlos funktioniert . Und läuft autopkgtest lokal auf einem Entwicklungs - Schnappschuss von Ubuntu 18.04 Bionic nicht diese Testfehler nicht aufweist entweder. (Und es scheint auf Ubuntu aufzubauen. Und die gleiche Testsuite wird auch zur Erstellungszeit ausgeführt, und wenn sie nicht bestanden würde, würde das Paket nicht erstellt, was als viel schwerwiegenderes Problem angesehen wird.)

Ein weiterer Hinweis darauf, dass das Problem irgendwo in der Autopkgtest-Infrastruktur von Ubuntu verborgen ist, ist die Tatsache, dass die meisten Testfehler ihre Eingabe plötzlich als STDIN anstelle der erwarteten Dateien betrachten .

Jeder Hinweis auf die zugrunde liegenden Gründe für diese seltsamen Ubuntu-Autopkgtest-spezifischen Testfehler wird entweder im entsprechenden Launchpad-Fehlerbericht oder im entsprechenden Upstream-Fehlerbericht sehr geschätzt .

Axel Beckert
quelle
2

Wie @muru in den Kommentaren oben angegeben hat, wurde das Paket entfernt, seit es in 17.10 kaputt ist, also ja, nein ackin den 17.10-Repositories.

Ich schätze, ich sollte https://packages.ubuntu.com/search?suite=artful&keywords=ack im Auge behalten, um zu erfahren, wann es wieder verfügbar sein wird.


quelle
1
Es wird wahrscheinlich nicht sein. Es ist äußerst selten, dass ein Paket, das noch nicht in den Repos enthalten ist, über Backports verfügbar gemacht wird. Sie könnten ein Auge auf haltes launchpad.net/ubuntu/bionic/+source/ack zu sehen , ob es den Schnitt für 18,04 macht (denn das ist eine LTS, vielleicht mehr Mühe geben werden , könnte es funktioniert in der Herstellung)
muru
Soweit ich das beurteilen kann, war der "Defekt", der dieses Problem verursachte, ein Rechtschreibfehler, der die Debian-Verpackung auslöste.
Andy Lester
1
@AndyLester: Nein, dieser Rechtschreibfehler hatte nichts damit zu tun. Es wurde sogar durch einen Lintian-Override vom Debian-Perl-Team als falsch positiv markiert.
Axel Beckert
"broken" (Cc @muru) bedeutet in diesem Fall, dass das automatische Testen der installierten Pakete (kurz: autopkgtest) fehlgeschlagen ist. Die relevante Seite, die Sie im Auge behalten sollten, ist autopkgtest.ubuntu.com/packages/ack und ihre Unterseiten. Und dies ist eindeutig ein Ubuntu-spezifisches Problem, da ack den Autopkgtest von Debian besteht .
Axel Beckert
@AxelBeckert Ich weiß. Wir haben dies auf der Ticketseite besprochen. Ich habe diesen Kommentar vor sechs Wochen geschrieben.
Andy Lester
1

Ich konnte das Ubuntu 18.04-Paket auf meiner Ubuntu 17.10-Box installieren:

$ 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.

Wenn der dpkgBefehl für Sie fehlschlägt, liegt das wahrscheinlich daran, dass Ihnen eine Abhängigkeit fehlt, die ich bereits habe. Versuchen Sie es mit apt installfehlenden Abhängigkeiten und führen Sie dann die ausdpkg Zeile erneut aus.

Ich mag diesen Ansatz besser als die Verwendung von CPAN, da APT / dpkg immer noch sieht, dass dieses Paket installiert ist und es später aktualisieren kann, sobald Ubuntu seine Build-Situation geklärt hat.

(Vielen Dank, Axel Beckert, für den Link zum Launchpad-Fehlerbericht, von dem ich diese Idee habe.)

Mark E. Haase
quelle