apt-get自动完成程序包名称已损坏


71

在某个时刻

apt-get install

自动完成功能已损坏

Tab新闻看包裹名称对我来说非常有用

如何修复此自动完成功能?


请编辑您的问题以添加更多信息。现在,当您按Tab键时,该怎么办?有错误吗?请把它包括在内。
奥利

您想找到什么包裹?它可以通过apt-cache search mypkg获得吗?我在Oneiric上使用Kubuntu,我看到它运行良好。
koolhead17 2011年

例如,我在sudo apt-get install ruby​​之后按下tab键,然后终端向我显示所有使用ruby的软件包:ruby-mysql,ryby-dev等。
ВячеславЛогинов2011年

是的,当您按Tab键时会看到什么?
奥利(Oli)

我看到文件夹列表,如CD + [TAB]
ВячеславЛогинов

Answers:


105

如对其他答案的注释中所述,首先确保bash-completion已安装:

sudo apt-get install bash-completion

显然对于@diapir,它有助于重新安装它:

sudo apt-get install --reinstall bash-completion

但是,对我而言,问题不在于未安装或破坏bash-completion,而是在于我意外删除了.bashrc文件。您可以通过复制以下内容获得一个新的/etc/skel

cp /etc/skel/.bashrc ~/

2
谢谢,bashrc技巧也为我解决了这个问题。采用sudochmod命令是不必要的,虽然,对不对?
BHSPitMonkey

2
位于文件/etc/0644/-rw-r--r--与用户:组= root:root,当复制到你的用户文件夹,将自动转到用户:用户
kevinf

cp /etc/skel/.bashrc〜/帮助我解决了这个问题。
Jacob Abraham

重新安装并复制/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

在Elementary OS LoKi上为我工作
Rodrigo Lopez Guerra

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包装中-您是否有任何手动原因?该程序包应该执行以下操作:)
Cesium

:)一如既往,坐,阅读手册,配置,然后事实证明,这种软库中存放的存在
ВячеславЛогинов

3
sudo apt-get install --reinstall bash-completion为我做了。
diapir '04

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";

如果value Dir::Cache::pkgcache为空,则apt将无法自动完成软件包名称。查看您的/etc/apt/apt.conf.d/文件并搜索此键,以确保未将其设置为空字符串。

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

也看看这个答案

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.