Tên gói tự động hoàn thành apt-get bị hỏng


71

Tại một số thời điểm

apt-get install

tự động hoàn thành đã bị hỏng

Nó rất hữu ích cho tôi để xem tên gói với Tabbáo chí

Làm thế nào để sửa chữa tự động hoàn thành này?


Vui lòng chỉnh sửa câu hỏi của bạn để thêm thông tin. Nó làm gì bây giờ khi bạn nhấn tab? Có lỗi không? Vui lòng bao gồm nó.
Oli

Gói nào bạn đang cố gắng tìm? Có sẵn thông qua tìm kiếm apt-cache mypkg Tôi đang sử dụng Kubfox trên Oneiric tôi thấy nó hoạt động tốt.
koolhead17

Ví dụ tôi nhấn tab sau sudo apt-get install ruby, và thiết bị đầu cuối hiển thị cho tôi tất cả các gói với ruby: ruby-mysql, ryby-dev vv
Вячеслав Логинов

Có, và những gì bạn thấy thay vì khi bạn nhấn tab?
Oli

Tôi thấy danh sách các thư mục, như cd + [TAB]
Quan điểm của chúng tôi

Câu trả lời:


105

Như đã nêu trong các ý kiến ​​cho câu trả lời khác, trước tiên hãy đảm bảo rằng nó đã bash-completionđược cài đặt:

sudo apt-get install bash-completion

và rõ ràng cho @diapir, nó đã giúp cài đặt lại nó:

sudo apt-get install --reinstall bash-completion

Tuy nhiên, đối với tôi, vấn đề không phải là việc hoàn thành bash không được cài đặt hay bị hỏng, vấn đề là tôi đã vô tình xóa .bashrctệp của mình . Bạn có thể lấy một cái mới bằng cách sao chép nó từ /etc/skel:

cp /etc/skel/.bashrc ~/

2
Cảm ơn, mẹo bashrc cũng giải quyết vấn đề cho tôi. Việc sử dụng sudotrên chmodlệnh là không cần thiết, phải không?
BHSPitMonkey

2
các tập tin nằm trong /etc/0644/-rw-r--r--với người sử dụng: group = root:root, và khi sao chép vào thư mục người dùng của bạn, sẽ tự động chuyển cho người sử dụng: hướng dẫn
kevinf

cp /etc/skel/.bashrc ~ / đã giúp tôi giải quyết vấn đề này.
Jacob Áp-ra-ham

Cài đặt lại và sao chép /etc/skel/.bashrc đã giúp tôi, cảm ơn bạn!
Sergey

36

Gõ lệnh sau:

sudo -H gedit /etc/bash.bashrc

Hãy tìm những dòng này:

# 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

Bỏ ghi chú một số dòng, để làm cho nó trông như thế này:

# 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

Lưu, đóng thiết bị đầu cuối, sau đó mở lại.

Tôi gặp vấn đề này sau khi cài đặt 13.04 và đó là cách tôi giải quyết nó.


đây là điều duy nhất làm việc cho tôi cảm ơn bạn.
this.foo

Làm việc cho tôi trên HĐH sơ cấp LoKi
Rodrigo Lopez Guerra

4

Tải về bản phát hành ổn định mới nhất từ http://bash-completion.alioth.debian.org/

./configure
make
sudo make install

chèn

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

đến ~ / .bashrc


bash-completionlà trong các gói - có bất kỳ lý do bạn làm nó bằng tay? Gói nên thực hiện khá chính xác điều này :)
Caesium

:) như mọi khi, ngồi, đọc sách hướng dẫn, cấu hình, và sau đó nó chỉ ra rằng phần mềm này là tồn tại trong kho
Вячеслав Логинов

3
sudo apt-get install --reinstall bash-completionđã làm điều đó cho tôi.
diapir

2
@diapir, tôi có cùng một vấn đề, nhưng chỉ cài đặt lại không hoạt động. Tôi phải áp dụng các dòng trong bashrctập tin.
Anwar

0

Lưu ý rằng đầu ra của lệnh này:

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

Nên là một cái gì đó như thế này:

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

Nếu giá trị Dir::Cache::pkgcachelà trống, apt sẽ không thể tự động hoàn thành tên gói. Hãy xem các /etc/apt/apt.conf.d/tệp của bạn và tìm kiếm khóa này để chắc chắn rằng nó không được đặt thành chuỗi trống.

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

Cũng hãy xem câu trả lời này .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.