apt-get автозаповнення ім'я пакета порушено


71

У якийсь момент

apt-get install

автозаповнення було порушено

Мені було дуже корисно бачити назву пакетів з Tabнатисканням

Як відремонтувати це автозаповнення?


Відредагуйте своє запитання, щоб додати більше інформації. Що він робить зараз, коли натискаєш вкладку? Чи є помилка? Будь ласка, включіть його.
Олі

Який пакет ви намагалися знайти? Чи доступний він через apt-кеш-пошук mypkg. Я використовую Kubuntu на Oneiric, я бачу, що він працює добре.
koolhead17

Наприклад, я натискаю вкладку після sudo apt-get install ruby, а термінал показує мені всі пакунки з ruby: ruby-mysql, ryby-dev тощо.
Вячеслав Логинов

Так, і що ви бачите замість цього, коли натискаєте вкладку?
Олі

Я бачу список папок, як cd + [TAB]
Вячеслав Логинов

Відповіді:


105

Як зазначено в коментарях до іншої відповіді, спочатку переконайтеся, що bash-completionвстановлено:

sudo apt-get install bash-completion

і, мабуть, для @diapir це допомогло перевстановити:

sudo apt-get install --reinstall bash-completion

Однак для мене проблема полягала не в тому, що базове завершення не було встановлено або порушено, проблема полягала в тому, що я випадково видалив свій .bashrcфайл. Ви можете отримати новий, скопіювавши його з /etc/skel:

cp /etc/skel/.bashrc ~/

2
Дякую, порада bashrc вирішила проблему і для мене. Використання sudoпо chmodкоманді не потрібно, вірно?
BHSPitMonkey

2
файл знаходиться в /etc/це 0644/-rw-r--r--з користувачем: група = root:root, і при копіюванні в папку користувача, автоматично перейде до користувача: користувач
kevinf

cp /etc/skel/.bashrc ~ / допоміг мені вирішити цю проблему.
Яків Авраам

Перевстановити та скопіювати /etc/skel/.bashrc допомогло мені, дякую!
Сергій

36

Введіть таку команду:

sudo -H gedit /etc/bash.bashrc

Шукайте наступні рядки:

# 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

Відмініть декілька рядків, щоб це виглядало так:

# 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

Збережіть, закрийте термінал, а потім знову відкрийте його.

У мене виникло це питання після встановлення 13.04, і саме тому я його вирішую.


це було єдине, що працювало на мене. спасибі.
this.foo

Працював для мене в Елементарній ОС LoKi
Родріго Лопес Герра

4

Завантажте останню стабільну версію від http://bash-completion.alioth.debian.org/

./configure
make
sudo make install

вставити

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

до ~ / .bashrc


bash-completionє в пакетах - чи є якась причина, що ви це робили вручну? Пакет повинен зробити саме це :)
Цезій

:) як завжди, сидячи, читаючи посібники, конфігуруйте, а потім виявляється, що цей софт існує у сховищі
Вячеслав Логинов

3
sudo apt-get install --reinstall bash-completionзробив це для мене.
діапір

2
@diapir, у мене така ж проблема, але тільки перевстановлення не працює. Я повинен застосувати рядки у bashrcфайлі.
Анвар

0

Зауважте, що вихід цієї команди:

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

Повинно бути щось подібне:

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

Якщо значення Dir::Cache::pkgcacheпорожнього, apt не зможе автоматично заповнити імена пакунків. Погляньте на свої /etc/apt/apt.conf.d/файли та знайдіть цей ключ, щоб переконатися, що в ньому не встановлено порожній рядок.

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

Також погляньте на цю відповідь .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.