การซิงค์การติดตั้ง apt-get ระหว่างคอมพิวเตอร์หลายเครื่อง


11

มีวิธีซิงโครไนซ์การติดตั้ง (และการลบ) ระหว่างพีซีหลายเครื่องหรือไม่

ดีกว่าด้วยดรอปบ็อกซ์ - เนื่องจากฉันใช้ไฟล์นี้เพื่อซิงค์ไฟล์อยู่แล้ว

ฉันคิดถึงนามแฝงสำหรับapt-get installและapt-get removeคำสั่งที่เก็บพารามิเตอร์ไว้ในไฟล์ (หนึ่งสำหรับการติดตั้งหนึ่งสำหรับการลบ) และคำสั่งอื่นที่อ่านรายการทั้งหมดในไฟล์และดำเนินการคำสั่งตามลำดับ นี่เป็นวิธีการที่สมจริงหรือไม่?

คำตอบ:


7

คุณสามารถใช้puppetเพื่อสร้างไฟล์กำหนดค่าที่ระบุว่าควรติดตั้งแพคเกจใดและคุณสามารถใช้ Dropbox แทนเซิร์ฟเวอร์ puppetmaster เพื่อซิงโครไนซ์การกำหนดค่าหุ่นเชิดระหว่างเครื่องรวมถึงงาน cron เพื่อเรียกใช้ puppet เป็นระยะ ๆ


นี่เป็นความคิดที่ดีสำหรับเครื่องจักรจำนวนน้อย ในสภาพแวดล้อมขนาดใหญ่คุณควรมี puppetmaster อย่างแน่นอน ฉันทำงานที่ไหนเราจัดการเครื่องจักรหลายพันเครื่องด้วยหุ่นกระบอก
Ed Manet

9

ฉันไม่รู้ว่ามีวิธีที่ดีกว่า (อาจมี) แต่ขึ้นอยู่กับขนาดที่คุณต้องการคุณสามารถใช้คุณสมบัติการค้นหาความถนัดเพื่อเป็นส่วนหนึ่งของเครื่องจักร ช่วยให้คุณค้นหาแพ็คเกจที่ตรงกับรูปแบบ ดังนั้นaptitude search '~i'ให้คุณติดตั้งแพ็คเกจทั้งหมด

เราจำเป็นต้องก้าวไปอีกขั้น ผู้จัดการแพคเกจชอบที่จะรู้ว่าคุณร้องขอแพคเกจใดโดยตรงและแพคเกจใดที่เพิ่งถูกดึงเข้ามาเนื่องจากแพ็คเกจอื่น ๆ หากไม่มีข้อมูลนั้นสิ่งที่น่าเกลียดก็เกิดขึ้นได้ ดังนั้นเราสามารถขยายรูปแบบการค้นหานั้นเพื่อเลือกแพ็คเกจที่ไม่ได้ติดตั้งโดยอัตโนมัติ:aptitude search '!~M ~i'

คุณลักษณะการค้นหาจะครอบคลุมในรายละเอียดบางอย่างในคู่มืออ้างอิงความถนัดของ

ตอนนี้คุณมีรายการแพ็คเกจที่จะติดตั้งแล้ว คุณสามารถจัดรูปแบบเอาต์พุตตามความจำเป็นโดยส่งแฟล็ก -F ไปยังคำสั่งนั้นเช่น -F '% p' ​​เพื่อรับรายการด้วยชื่อแพ็คเกจ


ตัวอย่างเช่นคุณสามารถเรียกใช้งานบนเครื่อง 1 :

aptitude -F "%c %p" --disable-columns search '!~M ~i' | awk -F " " '{ print "apt-get -y install " $2 }' > aptshell.sh

จากนั้นคัดลอกaptshell.shไฟล์ที่สร้างขึ้นใหม่ไปยังเครื่อง 2และใช้คำสั่งนี้บนเครื่อง 2เพื่อรันที่นั่น:

sudo sh aptshell.sh

จากนั้นทำซ้ำขั้นตอนที่มีเดิมเครื่อง 2เป็นใหม่เครื่อง 1และเดิมเครื่อง 1เป็นใหม่เครื่อง 2 ตอนนี้แต่ละเครื่องมีแพ็คเกจทั้งหมดที่ก่อนหน้านี้เท่านั้น


มันจะดีมากหากรวมรุ่น ... เครื่อง 1 อาจหยุดรุ่นไว้ได้เช่นกันและเครื่อง 2 ควรสะท้อนให้เห็นว่า
Rondo

เช่นความถนัด -F "% c% p% V" - ปิดการใช้งานการค้นหาคอลัมน์ '! ~ M ~ i' | awk -F "" '{พิมพ์ "apt-get -y ติดตั้ง" $ 2 "=" $ 3}'> aptshell.sh
Rondo

2

นี่เป็นคำถามเก่า แต่เนื่องจากไม่มีใครพูดคุณอาจทำอะไรกับ dpkg และ cron ตั้งค่างาน cron ที่ทำสิ่งที่ฉลาดด้วยคำสั่ง get-selections และ set-selections ของ dpkg

dpkg --set-selections < ~/Dropbox/selections.dpkg


dpkg --get-selections > ~/Dropbox/selections.dpkg

นี่ไม่ใช่วิธีแก้ปัญหาที่เสนอคุณจะต้องพยายามหาวิธีเพื่อให้แน่ใจว่า selections.dpkg ได้รับการอัปเดตทุกครั้งที่คุณทำการเปลี่ยนแปลงบนคอมพิวเตอร์เครื่องใดเครื่องหนึ่ง ...


2

ศูนย์ซอฟต์แวร์ Ubuntu มีคุณสมบัติสำหรับการซิงค์แพคเกจที่ติดตั้งในคอมพิวเตอร์หลายเครื่อง มันใช้บัญชี Ubuntu One ของคุณสำหรับบันทึกแพ็คเกจ เพียงเลือกFile > Sync Between Computers...และเข้าสู่ระบบด้วยบัญชี Ubuntu One ของคุณ

การซิงค์แพ็คเกจกับ Ubuntu Software Center

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


-2

คุณจะไม่สามารถใช้ดรอปบ็อกซ์เพื่อซิงค์การติดตั้งแพ็คเกจ

Synaptic มีวิธีบันทึกรายการดาวน์โหลดแพ็คเกจ แต่ฉันไม่แน่ใจว่าจะจัดการกับกรณีของ "ทุกสิ่งที่เคยติดตั้ง" แทนที่จะเป็น "แพ็คเกจเหล่านี้คือแพ็คเกจที่ฉันต้องการดาวน์โหลดในเวลานี้"


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