El nombre del paquete de autocompletado de apt-get está roto

71

En algun momento

apt-get install

autocompletar estaba roto

Fue muy útil para mí ver el nombre de los paquetes con la Tabprensa

¿Cómo reparar este autocompletado?

Вячеслав Логинов
fuente
Edite su pregunta para agregar más información. ¿Qué hace ahora cuando presionas tab? ¿Hay algún error? Por favor inclúyelo.
Oli
¿Qué paquete estabas tratando de encontrar? ¿Está disponible a través de apt-cache search mypkg? Estoy usando Kubuntu en Oneiric, veo que funciona bien.
koolhead17
Por ejemplo presiono pestaña después sudo apt-get install rubí, y el terminal me muestra todos los paquetes con el rubí: rubí MySQL, ryby-dev, etc
Вячеслав Логинов
Sí, ¿y qué ves cuando presionas tab?
Oli
Veo la lista de carpetas, como cd + [TAB]
Вячеслав Логинов

Respuestas:

105

Como se indica en los comentarios a la otra respuesta, primero asegúrese de que bash-completionesté instalado:

sudo apt-get install bash-completion

y aparentemente para @diapir, ayudó a reinstalarlo:

sudo apt-get install --reinstall bash-completion

Sin embargo, para mí, el problema no era que la finalización de bash no estuviera instalada o rota, sino que había borrado accidentalmente mi .bashrcarchivo. Puede obtener uno nuevo copiándolo de /etc/skel:

cp /etc/skel/.bashrc ~/
Ian Hincks
fuente
2
Gracias, el consejo bashrc también resolvió el problema para mí. Sin embargo, el uso de sudoen el chmodcomando es innecesario, ¿verdad?
BHSPitMonkey
2
el archivo ubicado en /etc/es 0644/-rw-r--r--con user: group = root:root, y cuando se copia a su carpeta de usuario, irá automáticamente a user: user
kevinf
cp /etc/skel/.bashrc ~ / me ayudó a resolver este problema.
Jacob Abraham
Reinstalar y copiar /etc/skel/.bashrc me ayudó, ¡gracias!
Sergey
36

Escriba el siguiente comando:

sudo -H gedit /etc/bash.bashrc

Busque estas líneas:

# 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

Descomenta algunas líneas para que se vea así:

# 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

Guarde, cierre la terminal, luego vuelva a abrirla.

Tengo este problema después de instalar 13.04, y así es como lo resuelvo.

Nur
fuente
Esto fue lo único que funcionó para mí. gracias.
this.foo
Trabajó para mí en Elementary OS LoKi
Rodrigo Lopez Guerra
4

Descargue la última versión estable de http://bash-completion.alioth.debian.org/

./configure
make
sudo make install

insertar

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

a ~ / .bashrc

Вячеслав Логинов
fuente
bash-completionestá en paquetes, ¿hay alguna razón por la que lo hiciste manualmente? El paquete debería hacer exactamente esto :)
Cesium
:) como siempre, sentado, leyendo manuales, configurando, y luego resulta que este soft existe en el repositorio
Вячеслав Логинов
3
sudo apt-get install --reinstall bash-completionLo hice por mí.
diapir
2
@diapir, tengo el mismo problema, pero solo reinstalar no funciona. Tengo que aplicar las líneas en el bashrcarchivo.
Anwar
0

Tenga en cuenta que la salida de este comando:

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

Debería ser algo como esto:

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

Si el valor de Dir::Cache::pkgcacheestá vacío, apt no podrá completar automáticamente los nombres de los paquetes. Eche un vistazo a sus /etc/apt/apt.conf.d/archivos y busque esta clave para asegurarse de que no esté configurada como cadena vacía.

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

También eche un vistazo a esta respuesta .

iman
fuente