Não foi possível encontrar o ack nos repositórios do Ubuntu 17.10


14

Estou tentando instalar ackvia aptmas parece que não está mais disponível nos repositórios. Ambos:

sudo apt install ack
sudo apt install ack-grep

dê o seguinte erro:

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

Ele não está mais disponível nos repositórios 17.10?


Primeiro tente sudo apt update.
Arupgsh #

1
@ muru Obrigado, mas seu link mostra que ele não está disponível, pois artfulnão está listado, correto? packages.ubuntu.com/search?suite=artful&keywords=ack

3
Humm, sim, launchpad.net/ubuntu/+source/ack/2.14-5/+publishinghistory indica que foi removido devido a ser quebradas
Muni

3
Olá, criador do ack aqui. Estou ciente da situação, mas não sei o que fazer se eu puder fazer pessoalmente. Aqui está um bilhete no rastreador ack bug com mais informação: github.com/beyondgrep/ack2/issues/652
Andy Lester

Respostas:


12

O Ack tem uma falha de teste no Ubuntu 17.10 Artful e foi excluído do Ubuntu até que ele seja aprovado. O Perl é atualizado no Artful e a versão antiga do ack não é suportada pelo novo Perl. A nova versão não passa em todos os seus testes. A falha do teste é causada por problemas com a estrutura de teste executada no Ubuntu (mesmo quando funciona bem no Debian.) Uma nova versão aprovada será lançada em breve .

Enquanto isso, uma solução alternativa é instalá-lo através do CPAN, conforme sugerido na página inicial do ack . Se você ainda não possui o CPAN instalado, é necessário instalá-lo primeiro:

sudo apt install cpanminus

Então você pode usá-lo para instalar o ack:

sudo cpanm install App::Ack

Ele criará e testará, por isso demorará cerca de 2 minutos, mas depois que estiver pronto, ele estará no seu caminho em /usr/local/bin/ack .

Eu gosto dessa opção de instalação porque ela usa repositórios padrão apt e cpan. Ele usa bibliotecas Perl que serão atualizadas por ferramentas automatizadas. Pode ser facilmente implementado em ferramentas automatizadas, como o Ansible.


2
Presumivelmente, se você estiver instalando cpanminus você realmente deseja, em seguida, instalar a usá-lo: sudo cpanm App::Ack.
Joel Berger

3
Na verdade, como está atualmente, não há problema com o Perl ou o Ack (os testes passam com as mesmas versões no quase idêntico sistema de compilação Debian). Atualmente, é considerado um bug no sistema de compilação Ubuntu.
Mniess 12/12/19

6

Infelizmente ack não está nos repositórios 17.10. Uma solução alternativa é instalá-lo manualmente , de acordo com as instruções em seu site .

Aqui está o que eu fiz:

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

2
Embora pareça meio possível instalar software de sites aleatórios, beyondgrep.com é o site oficial da ack.
Stephen Ostermiller

1
A versão de arquivo único do ack usa suas próprias cópias das bibliotecas necessárias que não serão atualizadas automaticamente se uma falha de segurança for encontrada nelas. Ele está usando as versões da biblioteca desde a criação do ack, que podem não ser as versões mais atualizadas, mesmo no momento da instalação. Se você usar esta solução, esteja ciente de que existem preocupações adicionais de segurança com instalações de arquivo único.
Stephen Ostermiller

Um liner em vez de usar 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 4/17/17

Por favor não. Em vez disso, use o pacote ack .deb de outra versão do Ubuntu (ou mesmo o Debian). Portanto, você recebe pelo menos atualizações de segurança para todas as bibliotecas usadas.
Axel Beckert

Este foi o único método que funcionou para mim.
Theodore R. Smith

4

Pacotes que falham no teste automático de pacotes instalados do Ubuntu não estão incluídos em uma versão, pelo menos aqueles que não são do universo (que são importados regularmente e automatizados do Debian Unstable).

Devido a uma alteração durante o ciclo do Ubuntu 17.10 Artful Release, algo quebrou o autopkgtest do ack no Ubuntu e, portanto, impediu que o ack fosse incluído nas versões do Ubuntu. Você nem consegue encontrá-lo no instantâneo de desenvolvimento atual bionic, mas pode instalá-lo se adicionar uma linha bionic-proposedao seusources.list .

Ainda não está claro qual foi exatamente essa mudança, respectivamente, qual o motivo (talvez um bug na infraestrutura de teste automático do Ubuntu) e qual é o gatilho. (Talvez a mudança para o Perl 5.26 tenha apresentado um problema na infraestrutura de teste automático do Ubuntu.)

O que está claro, porém, é que esse problema é específico do ubuntu, já que o autopkgtest da ack no Debian passa sem problemas. E executar autopkgtest localmente em um instantâneo de desenvolvimento do Ubuntu 18.04 Bionic também não mostra essas falhas de teste . (E parece desenvolver no Ubuntu. E o mesmo conjunto de testes também é executado no momento da construção e, se não for aprovado, o pacote não será construído, o que é considerado um problema muito mais grave.)

Outra dica de que o problema está oculto em algum lugar da infraestrutura do autopkgtest do Ubuntu é o fato de que a maioria das falhas de teste considera sua entrada repentinamente como STDIN em vez dos arquivos esperados .

Qualquer dica sobre as razões subjacentes a essas estranhas falhas de teste específicas do ubuntu-autopkgtest é muito apreciada no relatório de erros da barra de ativação ou no relatório de erros upstream .


2

Como o @muru indicado nos comentários acima, o pacote foi removido porque foi quebrado na 17.10, então sim, não ack nos repositórios 17.10 por enquanto.

Acho que devo ficar de olho em https://packages.ubuntu.com/search?suite=artful&keywords=ack para saber quando estará disponível novamente.


1
Provavelmente não será. É extremamente raro que um pacote que ainda não esteja nos repositórios seja disponibilizado via backports. Você pode ficar de olho no launchpad.net/ubuntu/bionic/+source/ack para ver se ele faz o corte para o 18.04 (já que isso é um lts, ​​talvez seja necessário mais esforço para fazê-lo funcionar)
muru

Até onde eu sei, o "problema" que causou esse problema foi um erro de ortografia que causou uma falha no pacote Debian.
Andy Lester

1
@ AndyLester: Não, esse erro de ortografia não teve nada a ver com isso. Foi até marcado como falso positivo por meio de uma substituição de Lintian pela equipe do Debian Perl.
Axel Beckert

"quebrado" (Cc @muru) significa, neste caso, que falhou no teste automático de pacote como instalado (abreviado: autopkgtest). A página relevante para ficar de olho é autopkgtest.ubuntu.com/packages/ack e suas subpáginas. E isso é claramente um problema específico do Ubuntu, já que o ack passa no autopkgtest do Debian .
Axel Beckert

@AxelBeckert eu sei. Discutimos isso na página do ticket. Eu escrevi esse comentário de ortografia seis semanas atrás.
Andy Lester

1

Eu consegui instalar o pacote Ubuntu 18.04 na minha caixa 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.

Se o dpkgcomando falhar para você, provavelmente é porque você está perdendo alguma dependência que eu já tenho. Tente apt installas dependências ausentes e execute o comandodpkg linha novamente.

Eu gosto mais dessa abordagem do que usar o CPAN, porque o APT / dpkg ainda pode ver que este pacote está instalado e poderá atualizá-lo depois que o Ubuntu resolver sua situação de compilação.

(Agradeço a Axel Beckert por postar o link no relatório de erros do Launchpad, que foi onde eu tirei essa ideia.)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.