il nome del pacchetto con completamento automatico apt-get è rotto


71

Ad un certo momento

apt-get install

il completamento automatico è stato rotto

Mi è stato molto utile vedere il nome dei pacchetti con la Tabstampa

Come riparare questo completamento automatico?


Modifica la tua domanda per aggiungere ulteriori informazioni. Cosa fa ora quando premi tab? C'è un errore? Per favore includilo
Oli

Quale pacchetto stavi cercando di trovare? È disponibile tramite la ricerca apt-cache mypkg Sto usando Kubuntu su Oneiric, lo vedo funzionare bene.
koolhead17

Per esempio si preme scheda dopo apt-get install rubino, e mi display del terminale tutti i pacchetti con rubino: rubino mysql, ryby-dev, ecc
Вячеслав Логинов

Sì, e cosa vedi invece quando premi tab?
Oli

Vedo l'elenco delle cartelle, come cd + [TAB]
Вячеслав Логинов

Risposte:


105

Come indicato nei commenti all'altra risposta, assicurarsi innanzitutto che bash-completionsia installato:

sudo apt-get install bash-completion

e apparentemente per @diapir, ha aiutato a reinstallarlo:

sudo apt-get install --reinstall bash-completion

Tuttavia, per me, il problema non era che il completamento della bash non era installato o rotto, il problema era che avevo cancellato accidentalmente il mio .bashrcfile. Puoi ottenerne uno nuovo copiandolo da /etc/skel:

cp /etc/skel/.bashrc ~/

2
Grazie, la punta di Bashrc ha risolto il problema anche per me. L'uso di sudosul chmodcomando non è necessario, giusto?
BHSPitMonkey il

2
il file che si trova /etc/è 0644/-rw-r--r--con user: group = root:root, e quando viene copiato nella tua cartella utente, andrà automaticamente all'utente: user
kevinf

cp /etc/skel/.bashrc ~ / mi ha aiutato a risolvere questo problema.
Jacob Abraham,

Reinstallare e copiare /etc/skel/.bashrc mi ha aiutato, grazie!
Sergey,

36

Digita il seguente comando:

sudo -H gedit /etc/bash.bashrc

Cerca queste righe:

# enable bash completion in interactive shells
# if ! shopt -oq posix; then
#  if [ -f /usr/share/bash-completion/bash_completion ]; then
#    . /usr/share/bash-completion/bash_completion
#  elif [ -f /etc/bash_completion ]; then
#    . /etc/bash_completion
#  fi
# fi

Sblocca alcune righe, per renderlo simile a questo:

# enable bash completion in interactive shells
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

Salvare, chiudere il terminale, quindi riaprirlo.

Ho questo problema dopo l'installazione di 13.04, ed è così che lo risolvo.


questa è stata l'unica cosa che ha funzionato per me. grazie.
this.foo

Ha funzionato per me su OS elementare LoKi
Rodrigo Lopez Guerra

4

Scarica l'ultima versione stabile da http://bash-completion.alioth.debian.org/

./configure
make
sudo make install

inserire

if [ -f /etc/bash_completion ]; then
  . /etc/bash_completion
fi

a ~ / .bashrc


bash-completionè nei pacchetti - c'è qualche motivo per cui l'hai fatto manualmente? Il pacchetto dovrebbe fare esattamente questo :)
Cesio

:) come sempre, seduto, leggendo manuali, configura, e poi si scopre che questo software è presente nel repository
Вячеслав Логинов

3
sudo apt-get install --reinstall bash-completionfatto per me.
diapir,

2
@diapir, ho lo stesso problema, ma solo la reinstallazione non funziona. Devo applicare le righe nel bashrcfile.
Anwar,

0

Si noti che l'output di questo comando:

apt-config dump | grep "Dir::Cache"

Dovrebbe essere qualcosa del genere:

Dir::Cache "var/cache/apt";
Dir::Cache::archives "archives/";
Dir::Cache::srcpkgcache "srcpkgcache.bin";
Dir::Cache::pkgcache "pkgcache.bin";

Se il valore di Dir::Cache::pkgcacheè vuoto, apt non sarà in grado di completare automaticamente i nomi dei pacchetti. Dai un'occhiata ai tuoi /etc/apt/apt.conf.d/file e cerca questa chiave per assicurarti che non sia impostata su stringa vuota.

grep -r pkgcache /etc/apt/apt.conf.d/

Dai anche un'occhiata a questa risposta .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.