วิธีการอัปเดตเครื่องหลายเครื่องในเวลาเดียวกัน

ในสถานการณ์ที่คุณจัดการหลายเครื่อง Apt จะมีประโยชน์มากเนื่องจากทำให้กระบวนการอัปเดตและใช้แพตช์ความปลอดภัยสำหรับแต่ละเครื่องนั้นง่ายมาก ปัญหาคือด้วยวิธีการดั้งเดิมเมื่อมีการอัปเดตออกมาคุณต้องดาวน์โหลดสำเนาของแพ็คเกจใหม่ทั้งหมดสำหรับแต่ละเครื่องซึ่งแสดงถึงการใช้แบนด์วิดท์และแบนด์วิดท์ของเราอย่างน่าอัศจรรย์ จากเซิร์ฟเวอร์อย่างเป็นทางการโชคดีที่มีวิธีการที่ช่วยให้เราสามารถอัปเดตเครื่องใดเครื่องหนึ่งและจากนั้นอัปเดตเครื่องที่เหลือที่ประกอบเป็นเครือข่ายของเรา วิธีนี้นอกเหนือจากการลดต้นทุนและเพิ่มประสิทธิภาพการใช้แบนด์วิดท์ของเราแล้วยังหลีกเลี่ยงการซ้ำซ้อนของแพ็กเกจบนเครื่องต่างๆ: ทั้งหมดติดตั้งแพ็กเกจโดยใช้ "แคชเซิร์ฟเวอร์" ของเรา


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

ก่อนอื่นเรามาดูวิธีแก้ปัญหาที่ "ไม่ใช่แบบดั้งเดิม" ที่ฉันไม่แนะนำ แต่จะต้องนึกถึงเมื่อแก้คำถามนี้

แบ่งปัน / etc / apt

เมื่อคุณติดตั้งแพ็กเกจบน Debian distro (หรืออนุพันธ์ของมัน) จะถูกเก็บไว้ในไดเร็กทอรี '/ etc / apt' เมื่อต้องการแพ็กเกจ Apt จะค้นหาในไดเร็กทอรีนี้ก่อนเพื่อดูว่ามีสำเนาในเครื่อง (นั่นคือแคช) หรือไม่ดังนั้นจึงหลีกเลี่ยงการดาวน์โหลดที่ไม่จำเป็น เป็นผลให้คุณหลายคนคิดอย่างแน่นอนว่าวิธีที่ดีในการแก้ปัญหาที่เป็นปัญหาคือการเลือกคอมพิวเตอร์ซึ่งเราจะกำหนดให้เป็นเซิร์ฟเวอร์ประเภทหนึ่งซึ่งจะได้รับการอัปเดตโดยใช้ที่เก็บข้อมูลอย่างเป็นทางการซึ่งจะ ไดเร็กทอรี '/ etc / apt' ของคุณกับเครื่องอื่น ๆ บนเครือข่าย อย่างไรก็ตามวิธีนี้อาจนำไปสู่ปัญหาที่เกี่ยวข้องกับการบล็อกไฟล์'ources.list ' โดยทั่วไปไม่ใช่วิธีการแก้ปัญหาที่ใช้กันอย่างแพร่หลายหรือสะดวกที่สุด

ย้ายแพ็คเกจ

แทนที่จะแชร์ไดเร็กทอรี '/ etc / apt' ทั่วไปทางเลือกอื่นอาจให้คอมพิวเตอร์แต่ละเครื่องใช้ไดเร็กทอรีแคชภายในของตัวเอง แต่สร้างสคริปต์ที่ดูแลการคัดลอกแพ็กเกจจากเครื่องหนึ่งไปยังอีกเครื่องหนึ่งเพื่อให้ทั้งหมดยังคงอยู่ ปรับปรุง เครื่องมือในการทำงานนี้อาจเป็น 'apt-move' แต่ฉันไม่แนะนำโดยสุจริตเพราะมันไม่โปร่งใสเพียงพอสำหรับผู้ใช้ปลายทาง นอกจากนี้อาจหมายถึงการใช้พื้นที่ดิสก์โดยไม่จำเป็นโดยสิ้นเชิงเนื่องจากแพ็คเกจทั้งหมดจะต้องถูกคัดลอกไปยังแต่ละเครื่อง

ระบบแคชเฉพาะ

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

มีระบบมากมายที่ออกแบบมาเพื่อทำงานกับ Apt ได้แก่ apt-cacher, apt-proxy และ apt-cached

ต่อไปนี้เราจะจัดการกับ apt-cacher ซึ่งใช้งานง่ายที่สุด

apt-cacher

Apt-cacher แตกต่างจากระบบแคชที่เก็บข้อมูลอื่น ๆ อย่างมากเนื่องจากไม่ใช่โปรแกรมแบบสแตนด์อะโลน แต่ทำงานเป็นสคริปต์ CGI ภายใต้ Apache สิ่งนี้มีข้อดีหลายประการเช่นทำให้เป็นเครื่องมือขนาดเล็กและเรียบง่าย แต่ในขณะเดียวกันก็มีประสิทธิภาพมากและด้วยเหตุนี้จึงมีประสิทธิภาพมากขึ้นเนื่องจากไม่ต้องใช้รหัสของตัวเองในการจัดการโปรโตคอลและมีความยืดหยุ่นมากเนื่องจากคุณสามารถใช้ กลไกการควบคุมการเข้าถึงของ Apache ในกรณีที่คุณต้องการ จำกัด จำนวนเครื่องที่เปิดใช้งานเพื่อเข้าถึงแคช

ต้องติดตั้ง Apt-cacher ในเครื่องเดียวเท่านั้นเครื่องที่คุณตัดสินใจว่าควรทำหน้าที่เป็นแคชที่เก็บในเครื่องของคุณ จากนั้นคอมพิวเตอร์ที่เหลือในเครือข่ายของคุณจะต้องได้รับการกำหนดค่าให้ร้องขอการอัปเดตจากแคชไม่ใช่จากเซิร์ฟเวอร์อย่างเป็นทางการ

การกำหนดค่าเซิร์ฟเวอร์

ในการติดตั้งเพียง

sudo apt-get ติดตั้ง apt-cacher

แพ็คเกจนี้มีการอ้างอิงกับ apache, perl และ wget ดังนั้นมันจะติดตั้งหากคุณไม่ได้ติดตั้งไว้ก่อนหน้านี้

เมื่อติดตั้งแล้วขอแนะนำให้รีสตาร์ท Apache:

/etc/init.d/apache เริ่มต้นใหม่

สุดท้ายสิ่งที่คุณต้องทำคือปรับพารามิเตอร์เริ่มต้นของสคริปต์ ฉันเขียนในเทอร์มินัล:

sudo gedit /etc/apt-cacher/apt-cacher.conf

โดยทั่วไปแล้วค่าดีฟอลต์ทั้งหมดจะใช้ได้ดี แต่ขอแนะนำให้ปรับสามอย่างต่อไปนี้:

admin_email = mimail @ myserver create_reports = 1 expire_hours = 24

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

หากคุณใช้พร็อกซีอย่าลืมเพิ่มรายการต่อไปนี้:

http_proxy = proxy.example.com: 8080 use_proxy = 1

ในการตรวจสอบว่าใช้งานได้คุณสามารถเข้าถึงแคชภายในเครื่องของคุณผ่าน URL http: // server_name / apt-cacher / และหน้าจะปรากฏขึ้นเพื่อแสดงการกำหนดค่า apt-cacher โปรดจำไว้ว่า 'server_name' ต้องถูกแทนที่ด้วย IP ของเครื่องที่คุณกำหนดให้เป็น 'เซิร์ฟเวอร์' นั่นคือเป็นที่เก็บข้อมูลของแคชแพ็คเก็ตในเครื่อง

การกำหนดค่าไคลเอ็นต์

ตอนนี้สิ่งที่คุณต้องทำคือแก้ไขแหล่งที่มารายการของไคลเอนต์เพื่อให้พวกเขาผ่านเซิร์ฟเวอร์ หาก IP ของเซิร์ฟเวอร์คือ 123.123.123.123 คุณต้องเพิ่มในแต่ละบรรทัดของรายการ source.list และระวังด้วยว่าทั้งหมดอ้างถึงเซิร์ฟเวอร์เดียวกันมิฉะนั้นแคชจะไม่มีผล

sudo gedit /etc/apt/sources.list
หมายเหตุ: ระวัง! ใน Debian และอนุพันธ์ของ 'source.list' จะถูกเก็บไว้ใน '/ etc / apt' อย่างไรก็ตามในการแจกแจงอื่น ๆ อาจถูกเก็บไว้ในเส้นทางอื่น ในกรณีที่คุณไม่พบไฟล์คุณสามารถค้นหาได้ตลอดเวลาโดยป้อน 'locateources.list' ในเทอร์มินัล

เมื่อเปิดไฟล์ IP ของเซิร์ฟเวอร์ของเราคือ 123.123.123.123 ทุกบรรทัดควรได้รับการแก้ไขโดยใช้เกณฑ์ต่อไปนี้:

# ต้นฉบับ #deb http://ftp.us.debian.org/debian/ sid main Contrib non-free # deb-src http://ftp.us.debian.org/debian/ sid main Contrib non-free # Modified deb http://123.123.123.123/apt-cacher/ftp.us.debian.org/debian/ sid main สนับสนุน deb-src แบบไม่ฟรี http://123.123.123.123/apt-cacher/ftp.us.debian org / debian / sid main ไม่มีค่าใช้จ่าย

อย่างที่คุณเห็นคุณต้องเพิ่มเซิร์ฟเวอร์ IP + '/ apt-cacher /' ที่จุดเริ่มต้นของ URL จากนั้นไปที่ส่วนที่เหลือของบรรทัดเดิม

สถิติการเข้าชม

หากคุณเพิ่มองค์ประกอบ 'create_reports = 1' ในไฟล์ 'apt-cacher.conf' apt-cacher จะสร้างสถิติการเข้าถึงซึ่งคุณสามารถเข้าถึงได้ด้วย url '/ apt-cacher / report'

หากด้วยเหตุผลใดก็ตามคุณต้องสร้างสถิติก่อนจำนวนชั่วโมงที่กำหนดใน 'apt-cacher.conf' ให้รันคำสั่งต่อไปนี้:

/usr/share/apt-cacher/apt-cacher-report.pl

แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   Eduardo dijo

    คำทักทายการมีส่วนร่วมที่ยอดเยี่ยมคำถามของฉันคือถ้าคุณรู้จักแอปพลิเคชันใด ๆ ที่อนุญาตให้คุณมีที่เก็บส่วนกลางเพื่อใช้แพตช์ แต่สำหรับการแจกแจงที่แตกต่างกันนั่นคืออัปเดตเครื่องหลายเครื่องในเวลาเดียวกัน แต่มีการแจกแจงต่างกัน

  2.   มาใช้ Linux กันเถอะ dijo

    สวัสดี Eduardo! ความจริงก็คือฉันเห็นว่ามันยากมาก หากคุณค้นพบวิธีใดอย่าหยุดแจ้งให้เราทราบ
    กอดใหญ่! ไชโย! พอล.

  3.   ตระหนี่ dijo

    ฉันใช้หุ่นเชิดเพื่อจัดการเซิร์ฟเวอร์ที่ฉันจัดการจากระยะไกล

  4.   มาใช้ Linux กันเถอะ dijo

    ครับขอบคุณมากสำหรับข้อมูล ฉันแก้ไขมันแล้ว
    กอด! พอล.

  5.   เจนิวไตรโซน dijo

    สวัสดี

    การสอนดีมาก ... ฉันมีขอบเขต .. ใน Debian Lenny แหล่งที่มา lst อยู่ในเส้นทาง / etc / apt /

    ขอแสดงความนับถือ

  6.   sepulvedamarcos dijo

    คำถาม….

    ถ้าฉันมีเครื่องสองเครื่องที่มี distro เดียวกัน ... แต่ไม่มีโปรแกรมเดียวกัน ... คุณจะรู้ได้อย่างไรว่าจะดาวน์โหลดอะไรจาก repos อย่างเป็นทางการ…. ลดทุกอย่าง ??? ...

  7.   มาใช้ Linux กันเถอะ dijo

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

    โปรดอย่าลังเลที่จะเขียนหากฉันไม่ชัดเจนพอ

    กอด! พอล.

  8.   มิชูดาร์ก dijo

    ฉันคิดว่ามีข้อผิดพลาด…แพ็คเกจไม่ได้ถูกเก็บไว้ใน / etc / apt …. พวกเขาอยู่ใน / var / cache / apt / archive

  9.   มาใช้ Linux กันเถอะ dijo

    ความจริงก็คือฉันไม่รู้
    แน่ใจว่ามีวิธีทำ 🙁
    หากคุณทราบโปรดแจ้งให้เราทราบแล้วฉันจะเพิ่มให้
    ไชโย! พอล.

  10.   อัลบาโร dijo

    ไม่มีอะไรกับไดนามิกไอพีใช่มั้ย?

  11.   มาร์เซ dijo

    เห็นได้ชัดว่าใน distros ปัจจุบันมากขึ้นคุณต้องเพิ่มพอร์ต (3142 ตามค่าเริ่มต้น) ไปยัง URL ของเครือข่ายท้องถิ่น จะมีลักษณะดังนี้: http://mi_servidor:3142/apt-cacher

  12.   อัลเฟรโด ตอร์เรอัลบา dijo

    ฉันมี lubuntu 16.04 ที่ทำมันภายใต้ระบบนี้และถ้ามันได้ผลสำหรับเขา? และสิ่งที่ฉันอยากจะถามคือหากฉันติดตั้งเซิร์ฟเวอร์นี้และเครื่องอื่น ๆ ของฉันไม่มีโปรแกรมเดียวกันเมื่อทำการร้องขอบนเครื่องไคลเอนต์ของฉันสำหรับการติดตั้งโปรแกรมที่ฉันมีบนเซิร์ฟเวอร์คุณคิดว่าฉันติดตั้งโดยตรงจากเซิร์ฟเวอร์ภายในหรือไม่ การร้องขอไปยังเซิร์ฟเวอร์ที่เก็บอย่างเป็นทางการ¿?