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?

Вячеслав Логинов
źródło
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 ~/
Ian Hincks
źródło
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ę.

Nur
źródło
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

Вячеслав Логинов
źródło
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ź .

iman
źródło