Nenhum comando 'bla' encontrado, você quis dizer :?

7

Portanto, quando um comando não é encontrado, de que forma a lista "você quis dizer:" foi preenchida? Que programa encontra esses comandos alternativos? Qual é o significado de: "(principal), (universo) ..."? Posso alterar o programa que os encontra?


fonte
1
Você está perguntando quais programas oferecem essa funcionalidade ou qual é o seu caso? Neste último caso, você forneceu muito pouca informação. Qual shell você usa para começar?
techraf
Eu estou usando o bash, mas eu realmente quero dizer no caso mais geral. Quais programas fornecem isso e existe uma maneira bastante consistente de determinar o programa na maioria das conchas?
Também depende muito de qual tipo / distribuição do Unix / Linux você está usando quanto à forma como o recurso é implementado.
Randall

Respostas:

2

Se você olhar para o conteúdo, /etc/apt/sources.listele terá o formato

#Archive type  Repository URL                   Distribution Component
 deb           http://archive.ubuntu.com/ubuntu precise      main

Tipo de arquivo

A primeira palavra em cada linha, deb ou deb-src, indica o tipo de arquivo morto. Deb indica que o arquivo contém pacotes binários (deb) e assim por diante.

URL do repositório

A próxima entrada na linha é uma URL para o repositório a partir do qual você deseja baixar os pacotes.

Distribuição

A 'distribuição' pode ser o nome do código de liberação / alias (wheezy, jessie, stretch, sid) ou a classe de liberação (oldstable, stable, testing, unstable), respectivamente.

Qual é o significado de: "(principal), (universo) ..."?

Componente

main consiste em pacotes compatíveis com DFSG, os pacotes contrib contêm software compatível com DFSG, mas possuem dependências não principais, não livres contém software que não está em conformidade com o DFSG e assim por diante. Uma dica - verifique um dos URLs do repositório, ele deve ter uma pasta com o nome do componente.

Os gerentes de pacotes dizem aptter um banco de dados que contém uma lista de todos os pacotes nos repositórios e é inteligente o suficiente para lhe dar sugestões.

O seu gerenciador de pacotes pode estar no eof dpkg (por exemplo, Debian, Ubuntu etc), apt (por exemplo, Debian, Ubuntu etc.), agora obsoleto rpm (por exemplo, versões mais antigas do Redhat e mais novas não o iniciam por razões de compatibilidade), yum (por exemplo Fedora, CentOS), dnf - yum dentrificado (por exemplo, novos lançamentos do Fedora) e assim por diante. Para uma lista mais completa, verifique isso . Você pode até ver vários gerenciadores de pacotes em uma distribuição. Por exemplo, no Ubuntu, você pode ver o dpkg que alimenta o arquivo / etc / apt / sources / list.

Então, quando você digita

cleaq

Pode dizer

cleaq: no command found. Did you mean clean.

de que forma é preenchida a lista "você quis dizer:"?

Isso envolve uma correspondência de padrões com os pacotes no banco de dados do gerenciador de pacotes.

Esse banco de dados é atualizado quando você faz um apt-get update

Não tenho certeza sobre

Posso alterar o programa que os encontra?

Apesar. Eu acredito que este é um recurso que não pode ser alterado. Não tenho tanta certeza

Referência : Debian SourceList

sjsam
fonte
1
@ondirac: Sim sources.list está dentro do /etc/apt. Veja a edição .. Bem, em geral, você pode dizer que seu gerenciador de pacotes mantém esta lista para você e que você pode ser apto (no caso de Debian, Ubuntu etc), rpm (Redhat e seus clones), yum (por exemplo, Fedora , CentOS) e DNF (lançamentos New Fedora)
sjsam
Você pode melhorar esta resposta com referência a alguns documentos do Ubuntu .
JDBP #
4

Pois bash, seu comportamento é governado pela função shell command_not_found_handle(consulte man bash).

Para ver qual comportamento é definido por essa função, você pode emitir:

declare -p -f command_not_found_handle

Você pode alterar qual programa é usado redefinindo a command_not_found_handlefunção.

Nas distribuições baseadas no Debian (incluindo Ubuntu), o pacotecommand-not-found é geralmente instalado e disponível como /usr/lib/command-not-found No link:

Sugerir instalação de pacotes em sessões bash interativas

Este pacote instalará o manipulador para command_not_found que procura programas que não estão atualmente instalados, mas disponíveis nos repositórios.

Veja também:

Randall
fonte
0

Este não é um recurso padrão dos shells do Linux. Existem pelo menos duas possibilidades:

  • zsh está mantendo sua própria lista de sugestões
  • projeto thefuckoferece outro
techraf
fonte