Tidak dapat menemukan ack di repositori Ubuntu 17.10

14

Saya mencoba menginstal ackmelalui apttetapi tampaknya tidak lagi tersedia di repo. Kedua:

sudo apt install ack
sudo apt install ack-grep

berikan kesalahan berikut:

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

Apakah itu tidak lagi tersedia di repositori 17.10?

Axel Beckert
sumber
Pertama, coba sudo apt update.
arupgsh
1
@muru Terima kasih tetapi tautan Anda menunjukkan itu tidak tersedia karena artfultidak terdaftar, benar? packages.ubuntu.com/search?suite=artful&keywords=ack
3
Hmm, ya, launchpad.net/ubuntu/+source/ack/2.14-5/+publishinghistory menunjukkan itu dihapus karena rusak
muru
3
Hai, pencipta ack di sini. Saya sadar akan situasinya, tetapi saya tidak tahu bagaimana jika ada yang bisa saya lakukan secara pribadi tentang hal itu. Inilah tiket di pelacak bug ack dengan info lebih lanjut: github.com/beyondgrep/ack2/issues/652
Andy Lester

Jawaban:

12

Ack memiliki kegagalan pengujian di Ubuntu 17.10 Artful dan telah dikeluarkan dari Ubuntu sampai lulus. Perl ditingkatkan pada Artful dan versi ack lama tidak didukung oleh Perl baru. Versi baru tidak lulus semua tesnya. Kegagalan pengujian disebabkan oleh masalah dengan kerangka pengujian yang berjalan di Ubuntu (bahkan ketika berfungsi dengan baik di Debian.) Versi baru yang lewat akan segera dirilis .

Sementara itu, solusinya adalah menginstalnya melalui CPAN seperti yang disarankan di beranda ack . Jika Anda belum menginstal CPAN, Anda harus menginstalnya terlebih dahulu:

sudo apt install cpanminus

Maka Anda dapat menggunakannya untuk menginstal ack:

sudo cpanm install App::Ack

Ini akan membangun dan mengujinya, sehingga dibutuhkan sekitar 2 menit, tetapi setelah selesai akan berada di jalur Anda di /usr/local/bin/ack.

Saya suka opsi instalasi ini karena menggunakan repositori apt dan cpan standar. Ini menggunakan perpustakaan Perl yang akan ditingkatkan oleh alat otomatis. Itu dapat dengan mudah diimplementasikan dalam alat otomatis seperti Ansible.

Stephen Ostermiller
sumber
2
Agaknya jika Anda menginstal cpanminus Anda benar-benar ingin kemudian instal menggunakannya: sudo cpanm App::Ack.
Joel Berger
3
Sebenarnya, seperti saat ini berdiri itu bukan masalah dengan Perl atau Ack (tes lulus dengan versi yang sama dalam sistem build Debian yang hampir identik). Saat ini diasumsikan sebagai bug dalam sistem pembangunan Ubuntu.
mniess
6

Sayangnya acktidak dalam repositori 17,10. Solusinya adalah menginstalnya secara manual sesuai instruksi di situs webnya .

Inilah yang saya lakukan:

$ sudo su
# curl https://beyondgrep.com/ack-2.18-single-file > /usr/local/bin/ack && chmod 0755 /usr/local/bin/ack
Pēteris Caune
sumber
2
Meskipun sepertinya dapat diminta untuk menginstal perangkat lunak dari situs web acak, beyondgrep.com adalah situs web ack resmi.
Stephen Ostermiller
1
Versi file tunggal ack menggunakan salinan pustaka yang diperlukan sendiri yang tidak akan diperbarui secara otomatis jika ada celah keamanan di dalamnya. Itu menggunakan versi pustaka pada saat ACK dibangun, yang mungkin bukan versi yang paling baru bahkan pada saat Anda menginstal. Jika Anda menggunakan solusi ini, Anda harus menyadari bahwa ada masalah keamanan tambahan dengan pemasangan satu file.
Stephen Ostermiller
Satu liner alih-alih menggunakan 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"
Stephen Ostermiller
Tolong jangan. Alih-alih menggunakan paket ack .deb dari rilis Ubuntu lainnya (atau bahkan Debian). Jadi, Anda setidaknya mendapatkan pembaruan keamanan untuk semua perpustakaan yang digunakan.
Axel Beckert
Ini adalah satu-satunya metode yang bekerja untuk saya.
Theodore R. Smith
4

Paket yang gagal pengujian paket otomatis yang diinstal Ubuntu tidak termasuk dalam rilis, setidaknya yang tidak dari arsip semesta (yang diimpor secara teratur dan otomatis dari Debian Unstable).

Karena perubahan selama siklus Ubuntu 17.10 Artful Release, sesuatu merusak autopkgtest ack di Ubuntu dan karenanya menghentikan ack agar tidak dimasukkan dalam rilis Ubuntu. Anda bahkan tidak dapat menemukannya dalam snapshot perkembangan saat ini bionic, tetapi Anda dapat menginstalnya jika Anda menambahkan baris untuk bionic-proposeduntuk Anda sources.list.

Masih belum jelas, apa sebenarnya perubahan itu, masing-masing apa alasannya (mungkin bug dalam infrastruktur autopkgtest Ubuntu) dan apa pemicunya. (Mungkin beralih ke Perl 5.26 menunjukkan masalah pada infrastruktur autopkgtest Ubuntu.)

Yang jelas adalah bahwa masalah ini khusus untuk Ubuntu karena autopkgtest ack di Debian lolos tanpa masalah. Dan menjalankan autopkgtest secara lokal pada snapshot pengembangan Ubuntu 18.04 Bionic juga tidak menunjukkan kegagalan pengujian ini . (Dan tampaknya dibangun di Ubuntu. Dan test suite yang sama dijalankan pada waktu build juga, dan jika tidak lulus, paket tidak akan membangun yang dianggap sebagai masalah yang jauh lebih parah.)

Petunjuk lain bahwa masalah ini tersembunyi di suatu tempat di infrastuktur autopkgtest Ubuntu adalah kenyataan bahwa sebagian besar kegagalan pengujian menganggap input mereka tiba-tiba sebagai STDIN dan bukan file yang diharapkan .

Setiap petunjuk tentang alasan yang mendasari kegagalan pengujian khusus ubuntu-autopkgtest yang aneh ini sangat dihargai baik dalam laporan bug launchpad yang sesuai atau dalam laporan bug upstream yang sesuai .

Axel Beckert
sumber
2

Seperti @muru ditunjukkan dalam komentar di atas paket telah dihapus karena rusak di 17.10, jadi ya, tidak ackdi repositori 17.10 untuk saat ini.

Kira saya harus mengawasi https://packages.ubuntu.com/search?suite=artful&keywords=ack untuk mengetahui kapan itu akan tersedia lagi.


sumber
1
Mungkin tidak akan. Sangat jarang untuk sebuah paket yang belum ada dalam repo disediakan melalui backports. Anda dapat mengawasi launchpad.net/ubuntu/bionic/+source/ack untuk melihat apakah itu membuat cut untuk 18,04 (karena itu adalah lts, ​​mungkin lebih banyak upaya yang dilakukan untuk membuatnya bekerja)
muru
Sejauh yang saya tahu, "rusak" yang menyebabkan masalah ini adalah kesalahan pengejaan yang membuat paket Debian tersandung.
Andy Lester
1
@ AndyLester: Tidak, kesalahan ejaan itu tidak ada hubungannya dengan itu. Itu bahkan ditandai sebagai false positive melalui Lintian Override oleh Tim Debian Perl.
Axel Beckert
"broken" (Cc @muru) berarti dalam hal ini gagal dalam pengujian paket yang diinstal secara otomatis (singkat: autopkgtest). Halaman yang relevan untuk diperhatikan adalah autopkgtest.ubuntu.com/packages/ack dan itu adalah sub halaman. Dan ini jelas merupakan masalah khusus Ubuntu ketika ack melewati autopkgtest Debian .
Axel Beckert
@AxelBeckert saya tahu. Kami sudah membahas ini di halaman tiket. Saya menulis komentar ejaan itu enam minggu lalu.
Andy Lester
1

Saya dapat menginstal paket Ubuntu 18.04 pada kotak Ubuntu 17.10 saya:

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

Jika dpkgperintah gagal untuk Anda, itu mungkin karena Anda kehilangan beberapa ketergantungan yang sudah saya miliki. Cobalah apt installsetiap dependensi yang hilang dan kemudian jalankan kembali dpkgbaris tersebut.

Saya menyukai pendekatan ini lebih baik daripada menggunakan CPAN, karena APT / dpkg masih dapat melihat paket ini diinstal dan akan dapat memutakhirkannya nanti begitu Ubuntu membuat situasi build mereka beres.

(Terima kasih Axel Beckert untuk memposting tautan ke laporan bug Launchpad, yang merupakan tempat saya mendapatkan ide ini.)

Mark E. Haase
sumber