การควบคุมเวอร์ชันสำหรับ / etc ภายใต้ * BSD


14

มีโซลูชั่นแบบครบวงจรอะไรบ้างที่อยู่/etcภายใต้การควบคุมเวอร์ชันภายใต้คำสั่งต่าง ๆ ? Turnkey ไม่ได้แปลว่าเป็นส่วนหนึ่งของการติดตั้งพื้นฐาน แต่คุณสมบัติต่อไปนี้น่าจะดี:

  • ขอลงในคำสั่ง VCS เพื่อจัดการข้อมูลเมตา (ความเป็นเจ้าของสิทธิ์);
  • บูรณาการกับตัวจัดการแพคเกจ (เรียกใช้โดยอัตโนมัติก่อนและหลังการติดตั้งจัดการอัพเกรดอย่างชาญฉลาด);
  • ปฏิบัติต่อเวอร์ชันไฟล์อัพสตรีมเป็นสาขา
  • รายการเพิกเฉยที่เติมไว้แล้ว;
  • รองรับ VCS พื้นฐานหลายอัน (โดยเฉพาะที่แจกจ่ายแบบกระจาย)

ฉันใช้etckeeperภายใต้ Debian และอนุพันธ์ มันมีคุณสมบัติข้างต้นทั้งหมดยกเว้นว่าจะไม่ได้ติดตามเวอร์ชันอัปสตรีม ฉันต้องการเรียนรู้เกี่ยวกับทางเลือกอื่น ๆ โดยเฉพาะใน * BSD

คำตอบ:


4

ภายใต้ Gentoo เครื่องมือในการจัดการการเปลี่ยนแปลงที่เกิดจากแพ็คเกจ / etc (เรียกว่า dispatch-conf) รองรับ rcs เพื่อติดตามการเปลี่ยนแปลง แต่นั่นไม่ได้ทรงพลังจริงๆ

ฉันมักจะปรับรุ่น / etc ของฉันผ่านgitโดยเฉพาะอย่างยิ่งเมื่อใช้สาขาต่าง ๆ ฉันสามารถเก็บ / etc ของฉันให้ใกล้เคียงที่สุดกับการแจกแจงที่แตกต่างกันมากที่สุดในขณะที่รักษาสิ่งต่าง ๆ ไว้ในที่เดียวให้มากที่สุด ตัวอย่างเช่นแตกต่างกันจริง ๆ ในการแจกแจงที่ต่างกัน) มันทำงานได้เช่นนี้:

ฉันมีmasterrepo ของฉันพร้อมไฟล์กำหนดค่าเริ่มต้น ตอนนี้ฉันได้ติดต่อกับ distro ใหม่ดังนั้นฉันจึงสร้างสาขาใหม่ตามmasterสาขาของฉันตามชื่อของการแจกจ่าย (ในตัวอย่างเดเบียน) Debian เก็บไฟล์ config บางอย่างที่แตกต่างกันในสถานที่จากฉันดังนั้นฉันทำmaster git mv file new_locและทุกอย่างก็โอเค ฉันเปลี่ยนกลับเป็นmasterและเปลี่ยนไฟล์นั้นเพราะฉันได้เพิ่มคำสั่งปรับแต่งเฉพาะบางอย่างเมื่อฉันรวมmasterเข้าไปในdebianสาขาของฉันไฟล์ที่ย้ายถูกเปลี่ยนดังนั้นฉันสามารถเปลี่ยนสิ่งต่าง ๆ ส่วนใหญ่ภายในmasterสาขาของฉันและเพียงแค่ต้องรวมการเปลี่ยนแปลงใน สาขา (โดยปกติแล้วพวกเขามักจะมีการผสมผสานของการกระจายและสาขาวัตถุประสงค์เซิร์ฟเวอร์เดเบียนมีความแตกต่างบางอย่างกับเวิร์กสเตชันเดเบียนอย่างเห็นได้ชัด แต่คุณสมบัติยังคงทำงาน)

ดังนั้นโดยทั่วไปฉันมี "การกำหนดค่าทั่วไป" ในmasterและ (พูดในแง่การเขียนโปรแกรมเชิงวัตถุ) สืบทอดสิ่งเหล่านั้นในสาขาของฉัน (ซึ่งยังสามารถสืบทอดจากกันและกัน)

นอกเหนือจากนั้นgitกลไกของการกระทำ "cherry-pick" (ในกรณีนี้การเปลี่ยนเป็น / etc /) มีประโยชน์กับฉันในบางครั้งที่ฉันต้องการเพียงบางส่วนของการกำหนดค่าบางอย่าง

ตอนนี้ถึงความคิดของคุณ:

  • ถ้าฉันต้องการการรวมตัวจัดการแพคเกจเพิ่มเติมฉันอาจจะใช้สคริปต์ตัวตัดคำสำหรับสิ่งนี้ (ในขณะที่ฉันไม่ทำ)
  • การรักษาเวอร์ชันต้นน้ำเป็นสาขาจะทำงานได้ดีgitเป็นเพียงอีกสาขาที่บางครั้งคุณรวม (บางส่วน) เข้าด้วยกันmaster
  • รายการเพิกเฉยใน git เป็นไฟล์. gignignore ใน repo ของคุณเพื่อให้ครอบคลุม

ฉันชอบการอัปเดต cfg ใน gentoo ดีกว่าส่งไปอย่างน่าเสียดายที่อดีตไม่ได้รับการดูแล ตั้งแต่ประมาณหนึ่งปีก่อนที่ฉันจะจากไปและมันก็เป็นระเบียบของปาเก็ตตี้ Perl, IMO
xenoterracide

3

ฉันใช้fossilสิ่งนี้ด้วยความสำเร็จ ดูโพสต์ของฉันเกี่ยวกับฟอสซิลสำหรับข้อมูลเพิ่มเติม ฉันยังใช้เครื่องมือที่เรียกว่าetcupdateซึ่งเป็นการเคลื่อนไหวระหว่างการอัพเกรดมากกว่าการติดตามการเปลี่ยนแปลง ฉันเชื่อว่ามันมีจุดประสงค์เพื่อเป็นเครื่องมือfreebsd-updateในการช่วยเหลือในจุดหนึ่ง ฉันไม่แน่ใจว่าสถานะของมันในขณะนี้ แต่มันทำงานบนRELEASE-8.*ระบบของฉัน

http://lists.freebsd.org/pipermail/freebsd-current/2010-June/017927.html http://people.freebsd.org/~jhb/etcupdate/


-1

มีเครื่องมือที่เรียกว่าetckeeperฉันไม่รู้เลยว่ามันดีแค่ไหน

etckeeper คือชุดเครื่องมือที่จะให้ / etc ถูกเก็บไว้ในที่เก็บคอมไพล์, Mercurial, darcs หรือ bzr มันเกี่ยวข้องกับ apt (และผู้จัดการแพ็คเกจอื่น ๆ รวมถึง yum และ pacman-g2) เพื่อยอมรับการเปลี่ยนแปลงที่ทำกับ / etc โดยอัตโนมัติในระหว่างการอัพเกรดแพ็คเกจ มันติดตามไฟล์ข้อมูลเมตาที่ระบบควบคุม revison ไม่สนับสนุนตามปกติ แต่เป็นสิ่งสำคัญสำหรับ / etc เช่นการอนุญาตของ / etc / shadow มันค่อนข้างจำเพาะและสามารถกำหนดค่าได้ในขณะที่ยังใช้งานง่ายถ้าคุณเข้าใจพื้นฐานของการทำงานกับการควบคุมการแก้ไข

ฉันยังไม่รู้ด้วยซ้ำว่ามันสามารถใช้งานได้กับ * BSD ฉันสงสัยหรือไม่ แต่จะไม่รองรับพอร์ตที่ออกนอกกรอบ


1
Gilles ใช้ตัวกำหนดตำแหน่งแล้ว
tante

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