ฉันต้องการจัดการการอัปเดตของระบบ Linux ในแบบเดียวกันกับที่Gitทำโดยสามารถเลื่อนไปมาได้ใน "การแก้ไข" ฉันจะทำสิ่งนั้นได้อย่างไร
ฉันต้องการจัดการการอัปเดตของระบบ Linux ในแบบเดียวกันกับที่Gitทำโดยสามารถเลื่อนไปมาได้ใน "การแก้ไข" ฉันจะทำสิ่งนั้นได้อย่างไร
คำตอบ:
คุณอาจจะมองไปที่NixOSซึ่งใช้แพคเกจผู้จัดการห้าม
NixOS เป็นการกระจาย GNU / Linux ที่มีวัตถุประสงค์เพื่อปรับปรุงสถานะของการจัดการการกำหนดค่าระบบ ในการกระจายที่มีอยู่การกระทำเช่นการอัปเกรดเป็นอันตราย: การอัพเกรดแพ็คเกจอาจทำให้แพ็คเกจอื่นหยุดชะงักการอัพเกรดทั้งระบบมีความน่าเชื่อถือน้อยกว่าการติดตั้งใหม่ตั้งแต่เริ่มต้นคุณไม่สามารถทดสอบได้อย่างปลอดภัยว่าผลลัพธ์ของการเปลี่ยนแปลงการกำหนดค่าจะเป็นอย่างไร คุณไม่สามารถเลิกทำการเปลี่ยนแปลงระบบได้อย่างง่ายดายและอื่น ๆ
สิ่งที่คุณอาจกำลังมองหาจะเรียกว่าเครื่องมือในการจัดการการกำหนดค่า มีให้เลือกหลายแบบและมันก็เป็นอัตวิสัยที่ดีที่สุดในทุกสถานการณ์
ผมเองคิดว่าหุ่นจะค่อนข้างง่ายที่จะเริ่มต้นด้วย แต่เลือกที่นิยมอื่น ๆ ที่มีเกลือและเบิ้ล
นี่เป็นคำถามที่เกินความจำเป็นของคุณ แต่วิธีที่ง่ายที่สุดในการเปลี่ยนกลับการเปลี่ยนแปลงระดับระบบ / ขนาดใหญ่คือการถ่ายภาพ:
https://en.wikipedia.org/wiki/Snapshot_%28computer_storage%29
คุณไม่ได้พูดถึงลักษณะเฉพาะของอุปกรณ์ของคุณ แต่เมื่อคุณคุ้นเคยกับคอมไพล์แล้วจะไม่เป็นการคิดที่เกินกว่าที่จะจินตนาการว่าคุณอาจสนใจใช้ระบบไฟล์ที่ซับซ้อนกว่านี้ หากคุณต้องใช้ระบบไฟล์รุ่นต่อไป (ไม่ต้องสนใจชื่อ click-bait-y) คุณจะสามารถ "ย้อนกลับ" ระบบทั้งหมดของคุณได้อย่างสมบูรณ์โดยใช้คำสั่งเพียงกดลงในเทอร์มินัลของคุณ การเปลี่ยนแปลงใด ๆ ที่ทำไว้ทั้งหมดจะถูกเปลี่ยนกลับด้วยความล่าช้า / ความพยายามเพียงเล็กน้อย ZFS เป็นทางออกที่ดีที่สุดของคุณและคุณสามารถอ้างถึงบทความ Ars ที่น่าทึ่งนี้เพื่อดูว่ามันอาจจะเป็นสิ่งที่คุ้มค่าสำหรับคุณหรือไม่ (มีคุณสมบัติที่ยอดเยี่ยมอื่น ๆ อีกมากมาย):
คุณอาจสนใจเครื่องมือการจัดการการกำหนดค่าเช่นetckeeperซึ่งอนุญาตให้คุณบันทึกการเปลี่ยนแปลงการกำหนดค่าระบบทั้งนี้ขึ้นอยู่กับสิ่งที่คุณหมายถึงโดย "อัพเดท" ซึ่งจะช่วยให้คุณสามารถบันทึกการเปลี่ยนแปลงการกำหนดค่าระบบได้โดยอัตโนมัติ
หาก Git เป็นเครื่องมือที่คุ้นเคยและหากคุณ "อัปเดต" คุณหมายถึง "อัปเดตการกำหนดค่าระบบ" ซึ่งตรงข้ามกับ "อัปเดตแพ็กเกจระบบ" หรือ "อัปเดตไฟล์ทั้งหมดที่จัดเก็บบนเซิร์ฟเวอร์" นี่อาจเป็นสิ่งที่คุณต้องการ สำหรับ.
มันคุ้มค่าที่จะพิจารณาว่าไม่ว่าคุณจะใช้เครื่องมืออย่าง Puppet, Ansible, Etckeeper หรืออื่น ๆ คุณไม่สามารถ "ย้อนกลับ" ได้อย่างหมดจดโดยไม่สูญเสียข้อมูลเว้นแต่ว่าคุณจะได้หมูทั้งตัว (เช่นสแนปชอต วิธีการที่เหมาะสมจะขึ้นอยู่กับสถานการณ์ของคุณ (เช่นการถ่ายภาพสแนปชอตจะไม่เหมาะสมสำหรับระบบการผลิตที่คุณอาจสูญเสียใบสั่งซื้อของลูกค้าเมื่อย้อนกลับ)
ฉันได้ใช้OpenVMSในอดีตที่ผ่านมาโดยค่าเริ่มต้นที่มีระบบไฟล์เวอร์ชัน
หากเครื่องมือเช่นหุ่นเชิดไม่ได้ไปไกลพออาจเป็นระบบไฟล์ที่กำหนดเวอร์ชันเป็นสิ่งที่คุณกำลังมองหา
ถ้าคุณอยากที่จะจัดการทั้งระบบ (รวมถึงรุ่นเคอร์เนล) เช่นคอมไพล์คุณกำลังมองหาNixOS
สำหรับเวอร์ชันที่มีส่วนเกี่ยวข้องน้อยคุณสามารถใช้ตัวจัดการแพ็กเกจของ NixOS ได้จากเกือบทุกยูนิกซ์ ระวังสามารถติดตั้งในฐานะผู้ใช้ที่เรียบง่ายแม้ว่ามันจะง่ายต่อการติดตั้งมันเป็นราก เมื่อติดตั้ง nix แล้วคุณสามารถใช้มันเพื่อติดตั้งแพ็กเกจในฐานะผู้ใช้ที่ไม่มีสิทธิพิเศษและทำงานได้ดีกับผู้จัดการแพ็กเกจปัจจุบันของคุณโดยไม่มีข้อขัดแย้ง นอกจากนี้ยังเป็นเรื่องง่ายมากที่จะลบออกจากระบบของคุณอย่างสมบูรณ์ดังนั้นจึงไม่มีข้อแก้ตัวใด ๆ ที่จะไม่ลองทำ ;-)
หากต้องการตอบคำถามของคุณโดยตรง Nix จะกำหนดระบบที่ติดตั้งแบบสมบูรณ์ของคุณซึ่งเป็นเหมือนการคอมไพล์คอมไพล์ซึ่งเป็นตัวชี้ไปยังชุดพอยน์เตอร์เพื่อเวอร์ชันที่เฉพาะเจาะจงของแพ็คเกจที่ติดตั้งทั้งหมด
เมื่อ Nix อัพเกรดแพ็คเกจมันจะสร้างสภาพแวดล้อมใหม่ซึ่งชี้ไปที่ชุดพอยน์เตอร์ใหม่เป็นแพ็คเกจ (ส่วนใหญ่เป็นแพ็กเกจที่มีอยู่แล้วสำหรับแพ็กเกจที่ไม่ได้รับการอัพเดตอีกครั้งนี่คล้ายกับคอมไพล์คอมมิทใหม่ ชี้ไปที่ไฟล์ที่ไม่เปลี่ยนแปลงก่อนหน้านี้และไฟล์แก้ไขใหม่สองสามเวอร์ชั่น)
แน่นอนว่ามันเป็นเรื่องเล็กน้อยที่จะเปลี่ยนไปใช้สภาพแวดล้อมรุ่นก่อนหน้านี้และฉันเชื่อว่าเป็นทางแยก (เช่นสร้างสภาพแวดล้อมใหม่โดยอิงจากรุ่นเก่ากว่าครั้งสุดท้าย) สภาพแวดล้อมสามารถโหลดได้สำหรับเชลล์เฉพาะ (อันที่จริงแล้วคือชุดของตัวแปรสภาพแวดล้อมที่มีให้กับเชลล์ดังนั้นชื่อ) ดังนั้นคุณจึงสามารถมีสภาพแวดล้อมที่แตกต่างกันสำหรับโครงการที่แตกต่างกันในเครื่องเดียวกันได้อย่างง่ายดาย ไม่มีปัญหาเรื่องการพึ่งพาอีกต่อไปเพราะโครงการที่ไม่เกี่ยวข้องต้องใช้ไลบรารีเวอร์ชันอื่น!
NixOS นำคุณไปสู่ระดับถัดไปและจัดการคอมพิวเตอร์ทั้งหมดของคุณรวมถึงเคอร์เนลในลักษณะเดียวกันทำให้สามารถอัพเกรดเครื่องทั้งหมดได้อย่างมีความเสี่ยงต่ำ
ฉันยังอ่านไม่จบทั้งหมด แต่ฉันแนะนำยา Nix ของคนตายเพื่อเป็นการแนะนำ Nix
หากคุณเป็นประเภททดลองคุณอาจลองตรวจสอบระบบไฟล์ทั้งหมดของคุณในที่เก็บข้อมูลคอมไพล์ท้องถิ่น ฉันคิดว่านี่น่าสนใจ
git init
ในไดเรกทอรีราก /
git add -A .
git commit -m "Initial Snapshot"
git commit -Am "Snapshot X"
หรือคล้ายกันประโยชน์บางอย่างจะเป็น:
gitk
และgit diff
สิ่งแปลกประหลาดบางอย่างอาจรวมถึง:
git
หวังว่าจะทำงานได้ตามที่คาดไว้เมื่อคุณอยู่ในไดเรกทอรีซอร์สโค้ดซ้อนในรูทgit
คอนเทนเนอร์