Không thể tìm thấy ack trong kho lưu trữ Ubuntu 17.10


14

Tôi đang cố gắng cài đặt ackqua aptnhưng có vẻ như nó không còn có sẵn trong repos nữa. Cả hai:

sudo apt install ack
sudo apt install ack-grep

đưa ra lỗi sau:

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

Có phải nó không còn có sẵn trong kho 17.10?


Đầu tiên, hãy thử sudo apt update.
arupgsh

1
@muru Cảm ơn nhưng liên kết của bạn cho thấy nó không khả dụng vì artfulkhông được liệt kê, đúng không? packages.ubuntu.com/search?suite=artful&keywords=ack

3
Hmm, vâng, launchpad.net/ubfox/+source/ack/2.14-5/+publishinghistory cho biết nó đã bị xóa do bị hỏng
muru

3
Xin chào, người tạo ra ack ở đây. Tôi nhận thức được tình hình, nhưng tôi không biết nếu bất cứ điều gì cá nhân tôi có thể làm về nó. Đây là một vé trong trình theo dõi lỗi ack với nhiều thông tin hơn: github.com/beyondgrep/ack2/issues/652
Andy Lester

Câu trả lời:


12

Ack có lỗi kiểm tra trong Ubuntu 17.10 Artful và nó đã bị loại khỏi Ubuntu cho đến khi nó vượt qua. Perl được nâng cấp trên Artful và phiên bản ack cũ không được Perl mới hỗ trợ. Phiên bản mới không vượt qua tất cả các thử nghiệm. Lỗi kiểm tra là do các vấn đề với khung kiểm tra được chạy trong Ubuntu (ngay cả khi nó hoạt động tốt trong Debian.) Một phiên bản mới vượt qua sẽ sớm được phát hành .

Trong khi đó, một cách giải quyết là cài đặt nó thông qua CPAN như được đề xuất trên trang chủ ack . Nếu bạn chưa cài đặt CPAN, bạn cần cài đặt nó trước:

sudo apt install cpanminus

Sau đó, bạn có thể sử dụng nó để cài đặt ack:

sudo cpanm install App::Ack

Nó sẽ xây dựng và kiểm tra nó, vì vậy mất khoảng 2 phút, nhưng sau khi hoàn thành, nó sẽ nằm trong đường dẫn của bạn tại /usr/local/bin/ack.

Tôi thích tùy chọn cài đặt này vì nó sử dụng kho apt và cpan tiêu chuẩn. Nó sử dụng các thư viện Perl sẽ được nâng cấp bởi các công cụ tự động. Nó có thể dễ dàng thực hiện trong các công cụ tự động như Ansible.


2
Có lẽ nếu bạn đang cài đặt cpanminus, bạn thực sự muốn cài đặt bằng cách sử dụng nó : sudo cpanm App::Ack.
Joel Berger

3
Trên thực tế, như hiện tại, nó không phải là vấn đề với Perl hoặc Ack (các bài kiểm tra vượt qua với các phiên bản tương tự trong hệ thống xây dựng Debian gần như giống hệt nhau). Hiện tại, nó được coi là một lỗi trong hệ thống xây dựng Ubuntu.
mniess

6

Đáng buồn acklà không có trong kho 17.10. Cách giải quyết là cài đặt thủ công theo hướng dẫn trên trang web của mình .

Đây là những gì tôi đã làm:

$ sudo su
# curl https://beyondgrep.com/ack-2.18-single-file > /usr/local/bin/ack && chmod 0755 /usr/local/bin/ack

2
Mặc dù có vẻ như rất khó để cài đặt phần mềm từ các trang web ngẫu nhiên, beyondgrep.com là trang web chính thức của ack.
Stephen Ostermiller

1
Phiên bản tệp đơn của ack sử dụng các bản sao của các thư viện cần thiết sẽ không được cập nhật tự động nếu tìm thấy lỗ hổng bảo mật trong đó. Nó đang sử dụng các phiên bản thư viện kể từ khi ack được xây dựng, có thể không phải là phiên bản cập nhật nhất ngay cả tại thời điểm bạn cài đặt. Nếu bạn sử dụng giải pháp này, bạn nên lưu ý rằng có những lo ngại về bảo mật bổ sung với cài đặt một tệp.
Stephen Ostermiller

Một lớp lót thay vì sử dụng 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

Xin đừng. Thay vì sử dụng gói ack .deb từ một bản phát hành Ubuntu khác (hoặc thậm chí Debian). Vì vậy, ít nhất bạn có được cập nhật bảo mật cho tất cả các thư viện được sử dụng.
Axel Beckert

Đây là phương pháp duy nhất hiệu quả với tôi.
Theodore R. Smith

4

Các gói không thử nghiệm gói cài đặt tự động của Ubuntu không được bao gồm trong một bản phát hành, ít nhất là các gói không phải từ kho lưu trữ vũ trụ (được nhập thường xuyên và tự động từ Debian Un Ổn định).

Do sự thay đổi trong chu kỳ Phát hành nghệ thuật Ubuntu 17.10, một cái gì đó đã phá vỡ tính tự động của ack trong Ubuntu và do đó đã ngăn ack không được đưa vào các bản phát hành Ubuntu. Bạn thậm chí không thể tìm thấy nó trong ảnh chụp phát triển hiện nay bionic, nhưng bạn có thể cài đặt nó nếu bạn thêm một dòng cho bionic-proposedđến bạn sources.list.

Hiện vẫn chưa rõ, chính xác sự thay đổi đó là gì, tương ứng là lý do gì (có thể là lỗi trong cơ sở hạ tầng tự động của Ubuntu) và kích hoạt là gì. (Có thể việc chuyển sang Perl 5.26 đã thể hiện sự cố trong cơ sở hạ tầng tự động hoàn chỉnh của Ubuntu.)

Mặc dù vậy, điều rõ ràng là vấn đề này là đặc thù của Ubuntu vì tính năng autopkgtest trong Debian không có vấn đề gì. Và chạy autopkgtest cục bộ trên ảnh chụp nhanh phát triển của Ubuntu 18.04 Bionic cũng không thể hiện những lỗi thử nghiệm này . (Và nó dường như được xây dựng trên Ubuntu. Và bộ thử nghiệm tương tự cũng được chạy vào thời gian xây dựng, và nếu nó không vượt qua, gói sẽ không được xây dựng được coi là một vấn đề nghiêm trọng hơn nhiều.)

Một gợi ý khác cho thấy vấn đề được ẩn giấu ở đâu đó trong cấu trúc cơ sở hạ tầng tự động của Ubuntu là thực tế là hầu hết các lỗi kiểm tra đều coi đầu vào của chúng đột ngột là STDIN thay vì các tệp dự kiến .

Bất kỳ gợi ý nào về các lý do cơ bản cho các lỗi thử nghiệm cụ thể ub Ubuntu-autopkgtest kỳ lạ này đều được đánh giá cao trong báo cáo lỗi launchpad hoặc trong báo cáo lỗi ngược dòng .


2

Như @muru đã chỉ ra trong các nhận xét ở trên, gói đã bị xóa kể từ khi nó bị hỏng trong 17.10, vì vậy, không, acktrong kho 17.10 hiện tại.

Đoán tôi nên để mắt tới https://packages.ubfox.com/search?suite=artful&keywords=ack để biết khi nào nó sẽ có sẵn một lần nữa.


1
Có lẽ nó sẽ không như vậy. Rất hiếm khi một gói chưa có trong repos được cung cấp qua backport. Bạn có thể theo dõi launchpad.net/ubfox/bionic/+source/ack để xem liệu nó có cắt giảm cho 18.04 hay không (vì đó là một lts, ​​có lẽ nhiều nỗ lực hơn có thể được thực hiện)
muru

Theo như tôi có thể nói, "lỗi" gây ra vấn đề này là một lỗi chính tả làm vấp phải bao bì Debian.
Andy Lester

1
@AndyLester: Không, lỗi chính tả đó không liên quan gì. Nó thậm chí còn được đánh dấu là dương tính giả thông qua Ghi đè Lintian bởi Nhóm Debian Perl.
Axel Beckert

"Bị hỏng" (Cc @muru) có nghĩa là trong trường hợp này, nó đã thất bại trong việc kiểm tra gói được cài đặt tự động (viết tắt: autopkgtest). Trang có liên quan để theo dõi là autopkgtest.ubfox.com/packages/ack và đó là trang phụ. Và đây rõ ràng là một vấn đề cụ thể của Ubuntu khi ack vượt qua autopkgtest của Debian .
Axel Beckert

@AxelBeckert Tôi biết. Chúng tôi đã thảo luận điều này trên trang vé. Tôi đã viết bình luận chính tả sáu tuần trước.
Andy Lester

1

Tôi đã có thể cài đặt gói Ubuntu 18.04 trên hộp Ubuntu 17.10 của mình:

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

Nếu dpkglệnh không thành công với bạn, có thể là do bạn đang thiếu một số phụ thuộc mà tôi đã có. Cố gắng để apt installbất kỳ phụ thuộc bị thiếu và sau đó chạy lại dpkgdòng.

Tôi thích cách tiếp cận này hơn là sử dụng CPAN, vì APT / dpkg vẫn có thể thấy gói này được cài đặt và sẽ có thể nâng cấp nó sau khi Ubuntu được sắp xếp tình huống xây dựng của họ.

(Cảm ơn Axel Beckert đã đăng liên kết đến báo cáo lỗi Launchpad, đây là nơi tôi có ý tưởng này.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.