การเปิดใช้งานการเติมอัตโนมัติสำหรับ apt-get install in docker (Ubuntu 14.04)


12

ฉันกำลังเรียกใช้อูบุนตูคอนเทนเนอร์ในนักเทียบท่า ฉันลองทุกสิ่งที่ฉันพบทางออนไลน์รวมถึง:

การเติมข้อความอัตโนมัติไม่ทำงานสำหรับ "sudo apt-get install"

แต่การกด "แท็บ" ยังคงไม่มีผล

คำตอบ:


11

ฉันรู้ว่ามันเก่า แต่ก็วิ่งเข้าไปหาด้วย set -xมันชัดเจนว่าเป็นความล้มเหลวด้วยความช่วยเหลือของโหมดการแก้ปัญหาในทุบตี:

เมื่อคุณได้รับลงในภาชนะนักเทียบท่าของคุณและของคุณapt install bash-completionและแก้ไขผู้ใช้ของคุณ.bashrcไปยังแหล่งไดเรกทอรีที่เหมาะสมและออกจากระบบ / เข้าสู่ระบบ (พื้นทำตามขั้นตอนในส่วนQ / คุณอ้างอิง

คำสั่งที่ล้มเหลวคือ:

# apt-cache --no-generate pkgnames firefox
E: Could not open file  - open (2: No such file or directory)

'- ไม่มี - สร้าง' ในนั้นควรให้เบาะแสสิ่งที่เกิดขึ้นกับคุณ (บางสิ่งบางอย่างแคชหายไป) หากคุณทำงานโดยไม่มีคุณจะได้รับรายชื่อแพ็กเกจกลับมา

นี่ทำให้ฉันค้นหาลิงก์อ้างอิงบางส่วนของฉันว่าระบบนี้ทำงานอย่างไรและในที่สุดก็ตรวจสอบการกำหนดค่า apt:

root@edb76551d1dd:/var/cache/apt# apt-config dump |grep Dir::C
Dir::Cache "var/cache/apt/";
Dir::Cache::archives "archives/";
Dir::Cache::srcpkgcache "";
Dir::Cache::pkgcache "";

โปรดสังเกตว่า 'pkgcache' ว่างเปล่า ลองใช้การติดตั้งปกติ (เช่นคอนเทนเนอร์ lxd) และคุณจะสังเกตเห็นว่ามีการตั้งค่าไว้ สิ่งนี้ทำให้ฉันไปยังสถานที่ที่เก็บข้อมูลการกำหนดค่า, /etc/apt/apt.conf.d/. บนคอนเทนเนอร์นักเทียบท่า:

# grep cache *
[...]
docker-clean:Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";

คุณจะสังเกตเห็นว่าภาพนักเทียบท่ากำลังยกเลิกการตั้งค่านี้อย่างแข็งขันเพื่อป้องกันไม่ให้มีการเก็บไฟล์แคชไว้ในเครื่อง (เพื่อลดขนาดภาพ) ฉันใส่ความคิดเห็นทุกอย่างในไฟล์ดังนั้นตอนนี้ไฟล์ดูเหมือน:

# file: /etc/apt/apt.conf.d/docker-clean 
#DPkg::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };
#APT::Update::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };
#Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";

และตอนนี้สิ่งต่าง ๆ ทำงานได้ (หลังจากทำงานapt updateครั้งเดียว:

# apt update
[...]        
# apt install firefox-d<tab>   
firefox-dbg  firefox-dev

อ้างอิง

สิ่งเหล่านี้ช่วยให้ฉันทราบว่าระบบนี้ทำงานอย่างไร ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.