apt-get имя пакета автозаполнения не работает

71

В какой-то момент

apt-get install

автозаполнение было сломано

Мне было очень полезно увидеть название пакетов с помощью Tabпрессы

Как восстановить это автозаполнение?

Вячеслав Логинов
источник
Пожалуйста, отредактируйте свой вопрос, чтобы добавить больше информации. Что он делает сейчас, когда вы нажимаете вкладку? Есть ли ошибка? Пожалуйста, включите это.
Оли
Какой пакет вы пытались найти? Это доступно через apt-cache search mypkg Я использую Kubuntu на Oneiric, я вижу, что он работает хорошо.
koolhead17
Например, я нажимаю tab после 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

Однако для меня проблема была не в том, что bash-creation не был установлен или сломан, а в том, что я случайно удалил свой .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/

Также взгляните на этот ответ .

иман
источник