แม้ว่าการแจกจ่าย Linux อาจเลือกที่จะติดตั้งซอฟต์แวร์ตามที่เห็นสมควร แต่บ่อยครั้งกว่าไม่ พวกเขาสามารถติดตั้งซอฟต์แวร์ดังกล่าวจากแหล่งเก็บข้อมูลที่เป็นทางการของตนได้ ที่เก็บเหล่านี้สามารถดูแลได้โดยตรงโดยการแจกจ่ายและ/หรืออ้างอิงจากที่อื่น เช่นที่เกิดขึ้นกับ Debian->Ubuntu->Linux Mint เป็นต้น ในกรณีเหล่านี้ ตัวจัดการแพ็คเกจคือ APT และบางครั้งเราสามารถเห็นข้อความได้ "ไม่สามารถล็อค /var/lib/dpkg/lock" ในเทอร์มินัลหรือแม้แต่ในเครื่องมือที่มีอินเทอร์เฟซแบบกราฟิก
บทความนี้จะพยายามให้ความกระจ่าง ว่ามันคืออะไรและแก้ไขข้อผิดพลาดได้อย่างไร ที่ทำให้เราเห็นข้อความว่า "/var/lib/dpkg/lock could not be lock" แต่ฉันบอกคุณได้ว่ามีวิธีง่ายๆ ที่สามารถแก้ไขปัญหานี้และปัญหาอื่นๆ อีกมากมาย ไม่ว่าจะเป็นใน Linux- การกระจายตามหรือระบบปฏิบัติการอื่น ๆ รวมถึงมือถือ
ข้อผิดพลาด "ไม่สามารถล็อค /var/lib/dpkg/lock" หมายถึงอะไร
โดยทั่วไป เมื่อเราเห็นข้อผิดพลาด "ไม่สามารถล็อก /var/lib/dpkg/lock" เทอร์มินัลหรือซอฟต์แวร์ที่แสดงข้อผิดพลาดนี้แสดงว่ามีกระบวนการ APT อื่นกำลังทำงานอยู่และใช้ฐานข้อมูลเดียวกันซึ่งเรากำลังพยายามเข้าถึง . กล่าวอีกนัยหนึ่ง กระบวนการ APT ใหม่พยายามล็อกไฟล์ /var/lib/dpkg/lock เขาไม่สามารถรับได้เพราะเขายุ่ง และแจ้งให้เราทราบ
ที่พบบ่อยที่สุดก็คือ กระบวนการ APT อื่นเช่น การอัปเดตกำลังทำงานอยู่แล้วและล็อกไฟล์ล็อกไว้ จึงไม่สามารถดำเนินการขั้นตอนแรกได้ ซึ่งก็คือล็อกไฟล์ดังกล่าวนั่นเอง
วิธีแก้ไขข้อผิดพลาด
สิ่งแรกที่เราต้องทำ โดยเฉพาะอย่างยิ่งหากเราไม่ชอบใช้เทอร์มินัลก็คือ ตรวจสอบว่ามีแอปพลิเคชันซอฟต์แวร์ทำงานอยู่หรือไม่. ตัวอย่างเช่น ในอูบุนตู เราสามารถดูว่าซอฟต์แวร์อูบุนตู (ทางแยกของซอฟต์แวร์ GNOME) กำลังทำอะไรอยู่หรือไม่ และซอฟต์แวร์อัปเดต แอปพลิเคชันที่รับผิดชอบในการอัปเดตซอฟต์แวร์ตามชื่อที่แนะนำ หากเราไม่เห็นแอปพลิเคชันเหล่านั้นเปิดอยู่ เราสามารถเริ่มการตรวจสอบระบบและค้นหาแอปพลิเคชันเหล่านั้นเพื่อดูว่าแอปพลิเคชันกำลังทำงานในพื้นหลังหรือไม่
ลา แอปพลิเคชันที่เราต้องหาจะขึ้นอยู่กับการกระจาย ที่เรากำลังใช้อยู่ เนื่องจากซอฟต์แวร์ Ubuntu ไม่ได้อยู่ใน Kubuntu หรือ Discover ในเวอร์ชันหลักของ Debian การแจกจ่ายแต่ละรายการจะจัดการซอฟต์แวร์ด้วยเครื่องมือที่เลือกเพิ่ม และสามารถบล็อกที่เก็บถาวรของซอฟต์แวร์ GNOME, Discover, ที่เก็บซอฟต์แวร์อื่น ๆ หรือเครื่องมืออัปเดต
ไม่ว่าจะอยู่เบื้องหน้าหรือเบื้องหลัง ทางเลือกหนึ่งคือ มีความอดทน และรอดูว่างานที่คุณทำอยู่จะเสร็จหรือไม่ บางครั้งเราเห็นข้อความแสดงข้อผิดพลาดและเราต้องการให้แก้ไขในทันที ซึ่งวิธีแก้ไขคือรอสักครู่
การรีบูตหรือออกจากระบบควรเพียงพอ
หลายปีก่อน เพื่อนถามฉันเสมอว่าจะแก้ไขข้อขัดข้องใน Windows ได้อย่างไร มีอยู่ครั้งหนึ่งที่ฉันแทบไม่ได้ถามเขาอีกเลย และฉันก็แนะนำเขา รีบูต เพราะมันเป็นทางออกที่ดีที่สุดสำหรับเขาเกือบทุกครั้ง ในกรณีของข้อผิดพลาด "ไม่สามารถล็อค /var/lib/dpkg/lock" ก็เป็นวิธีแก้ไขที่เป็นไปได้เช่นกัน เมื่อเริ่มต้นตั้งแต่ต้น คุณอาจเริ่มต้นด้วยไฟล์ที่ถูกล็อกโดยเครื่องมืออัปเดต แต่จะปลดล็อกในไม่ช้า เมื่อคุณตรวจสอบว่าไม่มีอะไรใหม่ให้ติดตั้งหรือมี แต่คุณได้แจ้งให้เราทราบเกี่ยวกับเรื่องนี้แล้ว
แน่นอนว่าไม่ใช่โซลูชันที่หรูหราที่สุด แต่เป็นโซลูชันที่แพงน้อยที่สุด และอาจดีที่สุดและเร็วที่สุดหากคุณไม่มีเหตุผลที่จะให้คุณเข้าสู่ระบบต่อไป
เมื่อข้อความ "ไม่สามารถล็อก /var/lib/dpkg/lock" ไม่หายไป
เมื่อเรารีสตาร์ทหรือรอสักครู่และยังคงเห็นข้อความ สิ่งที่เกิดขึ้นกับเราไม่ใช่เรื่องปกติ การปิดกั้นถูก "หยุด" หรือคุ้มค่ากับความซ้ำซ้อนที่ถูกปิดกั้น ดังนั้นจึงคุ้มค่าที่จะดึงเทอร์มินัลออก
- สิ่งแรกที่เราจะทำคือเปิดเทอร์มินัลและระบุกระบวนการ APT ที่กำลังทำงานอยู่ด้วยคำสั่งนี้:
sudo lsof /var/lib/dpkg/lock
- เมื่อระบุกระบวนการแล้ว เราจะฆ่ามันด้วยคำสั่งนี้ แทนที่ PID ด้วยหมายเลขของกระบวนการที่เราจะพบด้วยคำสั่งจากขั้นตอนที่ 1:
sudo kill PID
- สุดท้าย เราลองอีกครั้งเพื่อดำเนินการจัดการ APT ที่ข้อผิดพลาดกลับมา น่าจะทำให้เราไปต่อได้
หากวิธีนี้ไม่สามารถแก้ไขได้ เราสามารถดำเนินการบางอย่างที่รุนแรงกว่านี้ได้ ดังนั้นคุณจะต้องใช้ความระมัดระวังหรือใช้ขั้นตอนเพิ่มเติม สิ่งนี้กำลังทำ "วิธีที่ยาก": การลบไฟล์ /var/lib/dpkg/lock ขั้นตอนในการปฏิบัติตามอย่างปลอดภัยจะเป็นดังนี้:
- เราทำการสำรองข้อมูลไฟล์ /var/lib/dpkg/lock เนื่องจากสิ่งที่เราจะทำคือคัดลอก เราสามารถใช้ตัวจัดการไฟล์ได้ เนื่องจากไม่จำเป็นต้องใช้สิทธิ์ของผู้ใช้ระดับสูง จากเทอร์มินัลสามารถทำได้ด้วย cp /var/lib/dpkg/ล็อคเส้นทางใหม่เปลี่ยน "เส้นทางใหม่" เป็นเส้นทางที่เราต้องการทำสำเนาสำรอง
- เราลบไฟล์. สำหรับสิ่งนี้จำเป็นต้องดึงสิทธิ์ หากตัวจัดการไฟล์ของเราอนุญาต เราสามารถเขียน ตัวอย่างเช่น "sudo nautilus" โดยไม่ต้องใส่เครื่องหมายอัญประกาศเพื่อลบออกด้วยอินเทอร์เฟซแบบกราฟิก แต่ฉันคิดว่าการเปิดเทอร์มินัลและเขียนจะเร็วกว่าและง่ายกว่า:
sudo rm /var/lib/dpkg/lock
- เมื่อลบไฟล์แล้ว เราสามารถลองอีกครั้งในสิ่งที่เราไม่ได้รับอนุญาต ถ้าเราเขียน sudo apt update และเราไม่เห็นข้อผิดพลาด ข้อบกพร่องได้รับการแก้ไขแล้ว
การรีบูตและความอดทนมักจะดีที่สุด
แม้ว่าจะมีวิธีแก้ไขเช่นที่อธิบายไว้ในจุดก่อนหน้า ข้อผิดพลาด "ไม่สามารถล็อก /var/lib/dpkg/lock" มันไม่มีอะไรร้ายแรงจริงๆ และสามารถแก้ไขได้โดยรอสักครู่หรือรีบูตเครื่อง เป็นสิ่งที่มักจะแก้ไขตัวเอง และหากไม่เป็นเช่นนั้น การรีบูตจะรุนแรงน้อยที่สุดและมีประสิทธิภาพมากที่สุด ตอนนี้ นี่คือ Linux และทุกอย่างหรือเกือบทุกอย่างมีทางออกจากเทอร์มินัล ไม่ต้องพูดถึงว่าเราสามารถ "ฆ่า" อะไรก็ได้ที่เราต้องการ
ไม่ว่าจะด้วยเหตุผลใดก็ตาม เราหวังว่าสิ่งที่ระบุไว้ในที่นี้สามารถช่วยคุณได้ ทั้งในการทำให้ข้อความหายไปด้วยกระบวนการที่ก้าวร้าวมากขึ้น หรือเพื่อให้คุณอดทนสักนิด
สวัสดี:
คำสั่งนี้ใช้งานได้สำหรับฉัน (ทดสอบบน Xubuntu 18.04 LTS):
sudo fuser -vki /var/lib/dpkg/lock.php
นอกจากนี้ยังใช้ได้กับไฟล์ที่ถูกล็อกอื่นๆ เช่น /var/lib/dpkg/lock-frontend หรือ /var/lib/apt/lists/lock
ความนับถือ