การลบรายการ vms ใน vagrant cache


111

ฉันไม่ได้มองหาคำตอบนี้เพราะคำถามของฉันต่างออกไป

เมื่อฉันพิมพ์vagrant global-statusฉันจะได้รับรายการ vms แต่ไดเรกทอรีและ VM บางส่วนถูกลบไปพร้อมกับ Vagrantfiles

แต่เมื่อฉันพิมพ์vagrant destroy [machineid], ฉันได้รับข้อผิดพลาดต่อไปนี้ซึ่งฉันกำลังมองหาที่จะแก้ปัญหา กรุณาแนะนำ.

The working directory for Vagrant doesn't exist! This is the
specified working directory:

/Users/steven/projects/php/vagrant-laravel

คำตอบ:


247

คุณควรใช้คำสั่งต่อไปนี้เพื่อลบรายการที่ไม่ถูกต้องออกจากดัชนีส่วนกลาง:

vagrant global-status --prune

ดีที่เป็นคำตอบที่ได้รับการยอมรับและได้รับการโหวต แต่ "พรุน" รายการสถานะทั่วโลก หมายความว่า VM ไม่ปรากฏในรายการอีกต่อไป แม้ว่า VM จะไม่ถูกแตะต้อง หมายความว่ายังต้องยกเลิกการลงทะเบียนและลบด้วยตนเอง สิ่งที่ง่ายมากควรเป็นเพราะคนเร่ร่อนทำงานได้อย่างถูกต้องเมื่อได้รับ$ vagrant destroy -f <id>
silverdr

ผลลัพธ์ของvagrant global-status --pruneถูกต้องที่ไม่ต้องระวังไดเร็กทอรี Vagrant ที่ถูกลบเนื่องจากความรู้ของ Vagrant เกี่ยวกับ VM ที่จัดการในไดเร็กทอรีนั้นถูกลบออกเมื่อไฟล์ที่จัดการ VM นั้น ตอนนี้เป็นปัญหาของไฮเปอร์ไวเซอร์
bschlueter

ขอบคุณ !! ฉันค้นหาสิ่งนี้เป็นเวลานาน
Jean-Marc Amon

17

ฉันมีปัญหานี้เช่นกัน ฉันสามารถแก้ไขได้โดยการแก้ไขเนื้อหาของไฟล์~/.vagrant.d/data/machine-index/index. มันอยู่ในรูปแบบ JSON ดังนั้นฉันจึงเพิ่งลบข้อมูลที่เกี่ยวข้องกับอินสแตนซ์ที่ไม่มีอยู่แล้ว

ฉันลบเฉพาะข้อมูลที่เกี่ยวข้องกับอินสแตนซ์ที่ไม่มีอยู่แล้ว ฉันจะไม่แก้ไขข้อมูลใด ๆ ที่เกี่ยวข้องกับอินสแตนซ์ที่มีอยู่ในระบบไฟล์


ฉันพบว่าสิ่งนี้มีประโยชน์สำหรับการล้างกล่องสถานะส่วนกลางซึ่งโดยปกติจะปิดเมื่อฉันรีสตาร์ทโฮสต์ (mac ของฉัน) มันทำให้ฉันสงสัยว่า global-status ทำอะไรและมีผลต่อการขึ้นกล่องอีกครั้งหรือไม่
kaplan

14

--pruneไม่ได้ผลสำหรับฉัน ฉันออก~/.vagrant, และ~/.vagrant.d .vagrantและลบ VM ที่ค้างอยู่ด้วยตนเอง

ฉันอพยพกลับgemsและไปจากเดิมboxes ~/.vagrant.dบางทีอาจมีใครลองเอาเครื่องออก.vagrantแต่ฉันไม่ได้ทดสอบ


2
ฉันมีปัญหานี้เมื่อไดเร็กทอรีที่มีภาพคนจรจัดจ้องอยู่ถูกลบ --prune ล้มเหลว แต่ rm -rf ~ / .vagrant * ทำงาน การเรียกใช้ global-status ของคนเร่ร่อนหลังจากสร้างไดเร็กทอรีที่เหมาะสมขึ้นใหม่ (สิ่งนี้จะลบกล่องที่ดาวน์โหลดทั้งหมดออกไปพวกเขาจะถูกดาวน์โหลดใหม่ในคนจรจัดถัดไปตามความจำเป็น)
Tommy Strand


0

ฉันใช้

vagrant global-status --prune
vagrant box remove -f [name]

นอกจากนี้ฉันยังลบ

~/.vagrant, ~/.vagrant.d and .vagrant. 

และลบ VMs ที่ค้างอยู่ด้วยตนเองหากมีอยู่

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