บางคนสามารถอธิบายว่าคำสั่ง apt-get update ทำอะไรได้บ้างและเมื่อใดที่ฉันควรใช้มัน
apt-get update
ดาวน์โหลดดัชนีที่อัปเดตจากที่เก็บแพ็กเกจการกระจายรายชื่อแพ็คเกจที่มีทั้งหมดและรุ่นที่แม่นยำ
การแจกแจงทั่วไปเช่นอูบุนตูและเดเบียนมักจะอนุรักษ์นิยมและเข้ากันได้ย้อนหลังในแพ็คเกจของพวกเขาดังนั้นเวอร์ชันจะไม่เปลี่ยนแปลงมากนักเมื่อเวลาผ่านไป พวกเขาจะเปลี่ยนเนื่องจากการปรับปรุงความปลอดภัยหรือแก้ไขข้อผิดพลาด ยกตัวอย่างเช่น MySQL จะได้รับการอัพเกรดจาก5.7.18
ไปแต่ไม่ได้ไป5.7.19
6.x
จัดเก็บดัชนีแพ็กเกจไว้ที่ไหน บนฐานข้อมูล ในไฟล์?
/var/lib/apt
ก็มักจะถูกเก็บไว้ในหนึ่งหรือไฟล์มากขึ้นภายใน ในบริบทของนักเทียบท่าไฟล์เหล่านี้อยู่ในรูปภาพ เมื่อสร้างไฟล์ Dockerfile พวกมันจะถูกจัดเก็บในเลเยอร์ใหม่ของระบบไฟล์ที่สร้างขึ้นและคงอยู่เป็นรูปที่สร้างขึ้นใหม่
จะเกิดอะไรขึ้นถ้าฉันติดตั้ง apt-get โดยไม่ต้องอัพเดตแคช
คุณอาจลองดาวน์โหลดรุ่นแพ็คเกจที่ไม่มีอยู่อีกต่อไป นี่เป็นเรื่องธรรมดาในเครื่องเสมือน แต่มันก็เป็นไปได้ในตู้คอนเทนเนอร์ด้วยเช่นกันหากที่เก็บการแจกจ่ายได้เปิดตัวแพ็คเกจใหม่หลังจากสร้างอิมเมจพื้นฐานแล้ว อาจไม่มีการประสานงานระหว่างผู้ดูแลการแจกจ่ายและผู้ดูแล Dockerfile ซึ่งเป็นผู้ดาวน์สตรีมจากการกระจายและอาจมีจำนวนมากขึ้น มีที่เก็บ Debian เพียงแห่งเดียว แต่มีหลายพันแห่งjessie
มีอิมเมจคอนเทนเนอร์ที่ใช้เป็นหลักและ Dockerfile
นอกจากนี้บางภาพต้นน้ำเช่นอูบุนตูหนึ่งจะลบดัชนีที่ดาวน์โหลดเพื่อทำให้รูปภาพมีขนาดเล็กลงและหลีกเลี่ยงไฟล์ที่ล้าสมัยที่นั่น ดังนั้นจึงคาดว่าจะมีการดาวน์โหลดดัชนีที่อัปเดตเมื่อสร้างภาพด้านบนไม่ใช่สำหรับภาพฐานแต่ละเวอร์ชันที่จะจัดส่งพร้อมกับดัชนีล่าสุด
มีโอกาสที่แพ็กเกจระยะไกลจะไม่อยู่อีกต่อไปและลิงก์จะใช้งานไม่ได้หรือไม่
แน่นอนเพราะรุ่นที่เก็บไว้ในดัชนีมีความแม่นยำมากเช่น5.7.19
(การทำให้เข้าใจง่าย; มันคล้ายกับ5.7.19-0ubuntu1
)
มีบางการเมืองที่ตกลงกันเกี่ยวกับที่เก็บ deb หรือไม่? ตัวอย่างเช่นที่เก็บควรมีเพียงเวอร์ชันสุดท้ายของแพ็คเกจหรือในทางตรงกันข้ามมันควรมีทุกเวอร์ชั่นสำหรับการเผยแพร่เฉพาะ?
เป็นเรื่องปกติที่รุ่นเล็กรุ่นเก่าจะถูกลบออกอย่างรวดเร็วเมื่อมีการอัพเดท ฉันคิดว่านี่คือการประหยัดพื้นที่บนเซิร์ฟเวอร์เป็นไบนารีสามารถชั่งน้ำหนักหลายสิบเมกะไบต์คูณด้วยทุกรุ่นและสถาปัตยกรรมที่รองรับ ดังนั้นจึงมักจะเป็นไปไม่ได้ที่พินกล่าวว่าmysql-5.7.18
ในภายหลังapt-get install
; เร็ว ๆ นี้mysql-5.7.19
มีการนำออกใช้ในการแจกจ่ายรายการก่อนหน้านี้จะถูกลบออก
เพื่อความเป็นธรรมต่อนักเทียบท่าสิ่งนี้ไม่ใช่ปัจจัย apt-get update
ปัญหานี้เป็นเรื่องที่นำมาซึ่งเป็นส่วนหนึ่งของการจัดการบรรจุภัณฑ์ของการแจกจ่ายแต่ละครั้ง คุณจะมีปัญหาเดียวกันกับที่พยายามสร้างเครื่องเสมือน EC2 หรือ Vagrant ซ้ำ ๆ
ผู้ดูแลระบบบางรายใช้บริการเช่นAptlyเพื่อทำมิเรอร์ที่เก็บต้นฉบับและสามารถตรึงเวอร์ชันเฉพาะได้ แต่คุณเสี่ยงต่อการพลาดการอัพเดทด้านความปลอดภัยเว้นแต่ว่าคุณมีกระบวนการแยกต่างหากสำหรับการทดสอบการอัพเดทและเปลี่ยนแปลงสิ่งที่คุณทำ กำลังตรึง