nazwa pakietu autouzupełniania apt-get jest uszkodzona


71

W pewnym momencie

apt-get install

autouzupełnianie zostało zepsute

Bardzo mi się przydało zobaczyć nazwę paczki za pomocą Tabprasy

Jak naprawić to autouzupełnianie?


Edytuj swoje pytanie, aby dodać więcej informacji. Co robi teraz po naciśnięciu klawisza Tab? Czy wystąpił błąd? Dołącz to.
Oli

Jaki pakiet chciałeś znaleźć? Czy jest dostępny poprzez apt-cache search mypkg Używam Kubuntu na Oneiric i widzę, że działa dobrze.
koolhead17

Na przykład naciskam tab po sudo apt-get install ruby, a terminal wyświetla mi wszystkie pakiety z ruby: ruby-mysql, ryby-dev itp.
Вячеслав Логинов

Tak, a co widzisz po naciśnięciu klawisza Tab?
Oli

Widzę listę folderów, na przykład cd + [TAB]
Вячеслав Логинов,

Odpowiedzi:


105

Jak stwierdzono w komentarzach do drugiej odpowiedzi, najpierw upewnij się, że bash-completionjest zainstalowany:

sudo apt-get install bash-completion

i najwyraźniej dla @diapir pomógł go ponownie zainstalować:

sudo apt-get install --reinstall bash-completion

Jednak dla mnie problemem nie było to, że uzupełnianie basha nie zostało zainstalowane lub zostało zepsute, problem polegał na tym, że przypadkowo usunąłem .bashrcplik. Możesz uzyskać nowy, kopiując go z /etc/skel:

cp /etc/skel/.bashrc ~/

2
Dzięki, wskazówka bashrc również rozwiązała problem dla mnie. Zastosowanie sudona chmodpolecenia jest niepotrzebne, choć, tak?
BHSPitMonkey

2
Plik znajduje się w /etc/to 0644/-rw-r--r--z użytkownikiem: group = root:root, a gdy skopiowane do katalogu użytkownika, automatycznie przejdzie do użytkownika: użytkownika
kevinf

cp /etc/skel/.bashrc ~ / pomógł mi rozwiązać ten problem.
Jacob Abraham

Ponownie zainstaluj i skopiowałem /etc/skel/.bashrc pomógł mi, dziękuję!
Sergey

36

Wpisz następujące polecenie:

sudo -H gedit /etc/bash.bashrc

Poszukaj tych linii:

# 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

Usuń komentarz z niektórych wierszy, aby wyglądało to tak:

# 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

Zapisz, zamknij terminal, a następnie otwórz go ponownie.

Mam ten problem po zainstalowaniu 13.04 i tak go rozwiązuję.


to była jedyna rzecz, która działała dla mnie. Dziękuję Ci.
this.foo

Pracowałem dla mnie w Elementary OS LoKi
Rodrigo Lopez Guerra w

4

Pobierz najnowszą stabilną wersję z http://bash-completion.alioth.debian.org/

./configure
make
sudo make install

wstawić

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

do ~ / .bashrc


bash-completionjest w paczkach - czy jest jakiś powód, dla którego zrobiłeś to ręcznie? Pakiet powinien zrobić prawie dokładnie to :)
Cesium

:) jak zawsze, siedząc, czytając instrukcje, konfigurując, a potem okazuje się, że ten soft istnieje w repozytorium
Вячеслав Логинов

3
sudo apt-get install --reinstall bash-completionzrobił to dla mnie.
diapir

2
@diapir, mam ten sam problem, ale tylko ponowna instalacja nie działa. Muszę zastosować linie w bashrcpliku.
Anwar

0

Zauważ, że dane wyjściowe tego polecenia:

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

Powinno być coś takiego:

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

Jeśli wartość parametru Dir::Cache::pkgcachejest pusta, apt nie będzie w stanie automatycznie uzupełnić nazw pakietów. Spójrz na swoje /etc/apt/apt.conf.d/pliki i wyszukaj ten klucz, aby upewnić się, że nie jest ustawiony pusty ciąg.

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

Zobacz także tę odpowiedź .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.