ที่เก็บแพ็กเกจโลคัล Debian - การสร้างพื้นที่เก็บข้อมูลในเครื่อง (apt-mirror) การเตรียมและติดตั้ง apt-mirror

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


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

เราสร้างไฟล์โดยเพิ่มส่วนที่จำเป็น (คุณสามารถอ่านเพิ่มเติมเกี่ยวกับสิ่งนี้ได้ในเอาต์พุตคำสั่ง ผู้ชายทำซ้ำในส่วนไฟล์กำหนดค่า)
# mousepad /repository/conf/distributions
ในข้อความต้นฉบับของคำอธิบาย ผู้เขียนได้ยกตัวอย่างไฟล์นี้ไว้


ที่มา: เดเบียน
ชุด: การทดสอบ
นอกจากนี้AcceptFor: การทดลองที่ไม่เสถียร
โค้ดเนม: เลนนี่
เวอร์ชัน: 5.0
สถาปัตยกรรม: แหล่งที่มา i386
ส่วนประกอบ: ส่วนประกอบหลักไม่ฟรี
UDebComponents: การสนับสนุนหลักไม่ฟรี
คำอธิบาย: พื้นที่เก็บข้อมูลในเครื่องของฉัน
ที่ไหน:
ที่มา - ชื่อการแจกจ่าย = Debian
Suite - สาขา = การทดสอบ
นอกจากนี้AcceptFor - อนุญาตให้คุณ "พุช" แพ็คเกจสำหรับสาขาอื่น ๆ ไปยังพื้นที่เก็บข้อมูลการทดสอบ = การทดลองที่ไม่เสถียร หากไม่ได้ระบุตัวเลือก มันจะสาบานเช่นนี้เมื่อคุณพยายามเพิ่มแพ็คเกจจากสาขาที่ไม่เสถียร/ทดลอง
ชื่อรหัส - ชื่อรหัสสาขา = lenny
เวอร์ชัน - เวอร์ชันสาขา = 5.0
สถาปัตยกรรม - สถาปัตยกรรม ฉันมีโปรเซสเซอร์ x86 ดังนั้นฉันจึงมี i386 บางครั้งฉันก็อัปโหลดซอร์สไปยังที่เก็บด้วย ดังนั้นจึงมีแหล่งที่มา
ส่วนประกอบ - ส่วนของสาขาที่คุณสามารถวางแพ็คเกจ deb รวมถึงแหล่งที่มา = การสนับสนุนหลักที่ไม่ฟรี (คุณสามารถสร้างได้มากเท่าที่คุณต้องการ)
UDebComponents - ส่วนของสาขาที่คุณสามารถวางแพ็คเกจ udeb (มีบางส่วน) = main contrib ไม่ฟรี (ดีกว่าเมื่อตรงกับบรรทัดด้านบน)
คำอธิบาย - คำอธิบายด้วยวาจาสั้น ๆ ของพื้นที่เก็บข้อมูล = ตัวอย่างเช่น พื้นที่เก็บข้อมูลในเครื่องของฉัน

หากไดเร็กทอรีที่เก็บไม่ใช่ปัจจุบัน ให้เขียนสิ่งที่เรียกว่า บาเซเดียร์ตัวเลือก -b เบสเดียร์(ในกรณีของฉัน BASEDIR=/พื้นที่เก็บข้อมูล).

หลังจากสร้างไฟล์ /repository/conf/distributionsเริ่มต้นพื้นที่เก็บข้อมูล
#ทำซ้ำการส่งออก
# reprepro createsymlinks

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

การเพิ่มแพ็กเกจ deb ไปยังที่เก็บ
โดยทั่วไปจะมีลักษณะดังนี้:
# reprepro -b BASEDIR -C ส่วนรวมeb BRANCH /path/to/file/filename.deb
ดังที่ฉันได้อธิบายไว้ก่อนหน้านี้ นี่คือตัวอย่างของการเพิ่มแพ็กเกจที่ไม่ได้มาจากไดเร็กทอรีที่มีพื้นที่เก็บข้อมูล แต่มาจากไดเร็กทอรีที่กำหนดเอง หากคุณอยู่ในไดเร็กทอรีที่เก็บ คำสั่งจะดูเหมือนเดิมแต่ไม่มี -b เบสเดียร์
เช่น เพิ่มแพ็คเกจ foo_1.0.debอยู่ในโฟลเดอร์ /home/user/debianในส่วนหลักของสาขา lenny คำสั่งจะมีลักษณะเช่นนี้
# reprepro -b /repository -C รวมหลัก eb lenny /home/user/debian/foo_1.0.deb

การลบแพ็กเกจ deb ออกจากที่เก็บ
หากต้องการลบแพ็กเกจ deb หนึ่งรายการออกจากสาขาพื้นที่เก็บข้อมูลที่ระบุ คุณต้องออกคำสั่งต่อไปนี้
# reprepro ลบสาขา package_name

เช่น สำหรับแพ็คเกจที่พิจารณา foo_1.0.debตั้งอยู่ในสาขา เลนนี่ให้คำสั่งนี้:
# reprepro ลบเลนนี่ฟู

หากต้องการใช้พื้นที่เก็บข้อมูล คุณต้องเพิ่มลงในไฟล์ /etc/apt/sources.listเป็นบรรทัดต่อไปนี้ (โดยทั่วไป):
ไฟล์ deb:///path_to_repository_folder/ ส่วนสาขา

ซึ่งสำหรับตัวอย่างของเราจะเป็นดังนี้:
deb file:///repository/ lenny main contrib ไม่ใช่ของฟรี

นี่เป็นพื้นฐานซึ่งฉันคิดว่าเพียงพอแล้วในกรณีของฉัน บทความต้นฉบับตั้งอยู่

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

ขอแนะนำอย่างยิ่งให้วางที่เก็บข้อมูลในเครื่องไว้ในฮาร์ดไดรฟ์แยกต่างหาก (อย่างน้อยก็พาร์ติชั่น) เพื่อที่ว่าในกรณีที่เกิดอุบัติเหตุคุณจะไม่สูญเสียทุกสิ่งที่คุณดาวน์โหลดมาจากการทำงานหนัก พื้นที่เก็บข้อมูลการกระจาย เดเบียน 8สำหรับสถาปัตยกรรม amd64มีน้ำหนักมากขึ้น 40 กิกะไบต์. ดังนั้นหากคุณต้องการ แพ็คเกจ i386 (32 บิต)จากนั้นระดับเสียงจะเพิ่มขึ้นเป็นสองเท่า สมมติว่าระบบของคุณมีฮาร์ดไดรฟ์ขนาด 500 GB แยกต่างหากซึ่งติดตั้งอยู่ใน /media/repo นี่คือสิ่งที่เราจะดำเนินการต่อไป เริ่มจาก Debian 8 Jessie กันก่อน

มีหลายวิธีในการสร้างพื้นที่เก็บข้อมูลในเครื่องบน Debian/Ubuntu ฉันจะใช้ยูทิลิตี้ที่ง่ายที่สุดและผ่านการทดสอบตามเวลามากที่สุด - ฉลาดกระจก. ติดตั้ง:

sudo apt ติดตั้ง apt-mirror apache2

สร้างไดเร็กทอรีสำหรับที่เก็บ:

sudo mkdir /media/repo/debian

และไดเรกทอรีบริการ:

sudo mkdir -p /media/repo/debian/(มิเรอร์, var, skel)

การตั้งค่ามันขึ้นมา เปิดไฟล์การกำหนดค่า:

sudo นาโน /etc/apt/mirror.list



ตั้งค่า base_path /media/repo/debian




# ตั้งค่า var_path $base_path/var




#ตั้งค่าเริ่มต้น


ตั้งค่า run_postmirror 0

# พารามิเตอร์การบริการไม่ใช่
ตั้งค่าเธรดที่ 20
set_tilde 0
#

# มิเรอร์พร้อมแพ็คเกจสำหรับ amd64 jessie (เสถียร) + แหล่งที่มา
deb-amd64 http://mirror.yandex.ru/debian jessie การสนับสนุนหลักไม่ฟรี

# มิเรอร์พร้อมอัปเดตความปลอดภัย amd64 jessie (เสถียร) + แหล่งที่มา
deb-amd64 http://security.debian.org/jessie/updates การสนับสนุนหลักไม่ฟรี


deb-amd64 http://mirror.yandex.ru/debian jessie main/debian-installer




ข้ามการทำความสะอาด http://mirror.yandex.ru/debian/dists/jessie/main/installer-amd64/

# Mirror พร้อมแพ็คเกจสำหรับ i386 jessie (เสถียร) + แหล่งที่มา
deb-i386 http://mirror.yandex.ru/debian jessie การสนับสนุนหลักไม่ฟรี
deb-src http://mirror.yandex.ru/debian jessie การสนับสนุนหลักไม่ฟรี
# มิเรอร์พร้อมอัปเดตความปลอดภัย i386 jessie (เสถียร) + แหล่งที่มา
deb-i386 http://security.debian.org/jessie/updates การสนับสนุนหลักไม่ฟรี
deb-src http://security.debian.org/jessie/updates การสนับสนุนหลักไม่ฟรี
# มิเรอร์ที่จำเป็นสำหรับการติดตั้งเครือข่าย (udebs)
deb-i386 http://mirror.yandex.ru/debian jessie main/debian-installer
# ลบไฟล์ที่ไม่ได้จัดทำดัชนีใน Release
ทำความสะอาด http://mirror.yandex.ru/debian
ทำความสะอาด http://security.debian.org
# ปิดการใช้งานการทำความสะอาดโฟลเดอร์ที่เลือก
ข้ามการทำความสะอาด http://mirror.yandex.ru/debian/dists/jessie/main/installer-i386/

บันทึก. มาเริ่มดาวน์โหลดที่เก็บกันเถอะ:

sudo apt-กระจก

หลังจากดาวน์โหลดไฟล์ดัชนีแล้ว Apt-Mirror จะบอกคุณว่าคุณต้องดาวน์โหลดแพ็คเกจจำนวนเท่าใด (ปริมาณจะใหญ่มาก) สิ่งที่คุณต้องทำคือรอ ระบบจะดำเนินการส่วนที่เหลือเอง หากต้องการซิงโครไนซ์และล้างมิเรอร์โดยอัตโนมัติ คุณต้องเพิ่มบรรทัดในการตั้งค่า ครอนและตั้งเวลาให้เหมาะสม กระจกทางการจะอัปเดตทุก 6 ชั่วโมง: 3:00, 9:00, 15:00, 21:00 น. ตัวอย่างเช่น:

crontab -e

05 01 * * * apt-mirror >> /var/log/apt-mirror.log
05 03 * * * /media/repo/debian/var/clean.sh >> /var/log/apt-mirror.log

เพื่อการทำงานที่ถูกต้อง จำเป็นต้องเพิ่มลิงก์สัญลักษณ์ "มั่นคง","การทดสอบ", "ไม่เสถียร"บน เจสซี่, ยืด, ซิดตามนั้น (ถ้าคุณมี) ตัวอย่างสำหรับเจสซี่:

ln -s /media/repo/debian/mirror/mirror.yandex.ru/debian/dists/jessie /media/repo/debian/mirror/mirror.yandex.ru/debian/dists/jessie/stable

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

ซีดี /สื่อ/repo/เดเบียน/
sudo ln -s /media/repo/debian/mirror/mirror.yandex.ru/debian เดเบียน

ขณะนี้บนเครื่องไคลเอ็นต์ (ซึ่งต้องการเข้าถึงพื้นที่เก็บข้อมูลในเครื่อง) ให้ระบุที่อยู่ของพื้นที่เก็บข้อมูล หากคอมพิวเตอร์ที่มีพื้นที่เก็บข้อมูลมีชื่อเครือข่าย (เช่น เซิร์ฟเวอร์) จากนั้นระบุ มิฉะนั้นให้ระบุตามที่อยู่ ที่อยู่ IP:

sudo นาโน /etc/apt/sources.list

deb http://server/debian jessie main contrib ไม่ใช่ของฟรี
deb-src http://server/debian jessie main contrib ไม่ใช่ของฟรี
deb http://server/debian jessie/updates main contrib ไม่ใช่ของฟรี

หากคุณระบุการโหลดแพ็คเกจ 32 บิต (i386) ในการกำหนดค่า อย่าลืมเพิ่มสถาปัตยกรรมนี้ลงในระบบ:

sudo dpkg -- เพิ่มสถาปัตยกรรม i386

และอัพเดตรายการแพ็คเกจ:

อัปเดต sudo apt-get

จากนั้นทุกอย่างก็เป็นไปตามปกติ สำหรับ Ubuntu ทุกอย่างจะเหมือนกัน ยกเว้นชื่อของที่เก็บและการเพิ่มสถาปัตยกรรม 32 บิตให้กับระบบ 64 บิต (ไม่จำเป็น) กำหนดค่า mirror.list สำหรับ อูบุนตู 14.04:

############# กำหนดค่า ###################
# ไดเร็กทอรีฐานซึ่งจะสร้างมิเรอร์ในเครื่องของที่เก็บ Debian
ตั้งค่า base_path /media/repo/ubuntu

# เส้นทางไปยังไฟล์มิเรอร์ ไฟล์ชั่วคราว และบันทึกการดำเนินการ apt-mirror
# ตั้งค่า mirror_path $base_path/mirror
# ตั้งค่า skel_path $base_path/skel
# ตั้งค่า var_path $base_path/var
# ตั้งค่า cleanscript $var_path/clean.sh

# สถาปัตยกรรมที่ใช้สร้างกระจก ค่าเริ่มต้นคือสถาปัตยกรรม
# ระบบที่ apt-mirror ทำงาน (amd64,i386 หรืออื่น ๆ ) ไม่จำเป็นต้องเปลี่ยน
# เพราะ ด้านล่างนี้เราจะระบุทั้งกระจกและสถาปัตยกรรมอย่างชัดเจน
#ตั้งค่าเริ่มต้น

# เส้นทางไปยังสคริปต์หลังการประมวลผลหายไปตามค่าเริ่มต้น แต่เรายังไม่ต้องการมัน
# ตั้งค่า postmirror_script $var_path/postmirror.sh

# ห้ามเรียกใช้สคริปต์หลังการประมวลผล
ตั้งค่า run_postmirror 0

# พารามิเตอร์การบริการไม่ใช่
ตั้งค่าเธรดที่ 20
set_tilde 0
#
############# สิ้นสุดการกำหนดค่า ##############

deb-amd64 http://archive.ubuntu.com/ubuntu หลักที่เชื่อถือได้ถูก จำกัด
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-updates หลักถูก จำกัด
deb-amd64 http://archive.ubuntu.com/ubuntu จักรวาลที่น่าเชื่อถือ
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-updates จักรวาล
deb-amd64 http://archive.ubuntu.com/ubuntu ลิขสิทธิ์ที่เชื่อถือได้
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-updates ลิขสิทธิ์
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-security หลักถูก จำกัด
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-security จักรวาล
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-security ลิขสิทธิ์

deb-i386 http://archive.ubuntu.com/ubuntu หลักที่เชื่อถือได้ถูก จำกัด
deb-i386 http://archive.ubuntu.com/ubuntu trusty-updates หลักถูก จำกัด
deb-i386 http://archive.ubuntu.com/ubuntu จักรวาลที่น่าเชื่อถือ
deb-i386 http://archive.ubuntu.com/ubuntu trusty-updates จักรวาล
deb-i386 http://archive.ubuntu.com/ubuntu ลิขสิทธิ์ที่เชื่อถือได้
deb-i386 http://archive.ubuntu.com/ubuntu trusty-updates ลิขสิทธิ์
deb-i386 http://archive.ubuntu.com/ubuntu trusty-security หลักถูก จำกัด
deb-i386 http://archive.ubuntu.com/ubuntu trusty-security จักรวาล
deb-i386 http://archive.ubuntu.com/ubuntu trusty-security multiverse

ดังนั้นคุณต้องเปลี่ยนลิงก์สัญลักษณ์:

ln -s /media/repo/ubuntu/mirror/archive.ubuntu.com/debian/dists/trusdy /media/repo/ubuntu/mirror/archive.ubuntu.com/ubuntu/dists/trusty/stable

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

ดังที่คุณทราบ Ubuntu ใช้การจัดเก็บข้อมูลแบบรวมศูนย์เกี่ยวกับโปรแกรมหลัก ๆ ทั้งหมดไว้ในที่เดียว เพื่อความสะดวกในการค้นหาและการติดตั้งในภายหลัง สถานที่นั้นคือผู้จัดการแพ็คเกจ Synaptic (ระบบ -> การดูแลระบบ -> Synaptic Package Manager) ในการติดตั้งโปรแกรม คุณเพียงแค่ต้องค้นหามันในรายการและทำเครื่องหมายเพื่อติดตั้ง จากนั้นโปรแกรมจะถูกดาวน์โหลดโดยอัตโนมัติจากอินเทอร์เน็ตและติดตั้ง

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

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

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

มาเริ่มกันเลย

1. หากต้องการสร้างสำเนา (ส่วน) ของที่เก็บบนฮาร์ดไดรฟ์ของคุณ มีโปรแกรมพิเศษ: debmirror ดังนั้นก่อนอื่นคุณต้องติดตั้งจากตัวจัดการแพ็คเกจ Synaptic เดียวกัน

หรือโดยพิมพ์คำสั่งในเทอร์มินัล:

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

2. สร้างโฟลเดอร์ในโฮมไดเร็กตอรี่ที่จะจัดเก็บส่วนของที่เก็บ (หรือหลาย ๆ อัน) ไว้เช่นเรียกมันว่า Repositories

ไปที่โฟลเดอร์ Repositories:

และสร้างไฟล์สคริปต์ในชื่อ archive.ubuntulinux.org.sh:

gedit archive.ubuntulinux.org.sh

วางสิ่งต่อไปนี้ลงในไฟล์นี้:

#!/bin/bash -x
/usr/bin/debmirror --nosource -m --passive --host=archive.ubuntulinux.org \
--root=ubuntu --method=ftp --progress \
--dist=hardy,hardy-security,hardy-updates,hardy-backports \
--ignore-release-gpg --section=main,จำกัด,ลิขสิทธิ์,จักรวาล \
--arch=i386 /full/path/to/folder/where/need/to/download/repository/

เส้นทางแบบเต็มของคุณควรมีลักษณะดังนี้: /home/aidsoid/Repositories/ru.archive.ubuntu.com/

และบันทึกไว้ หลังจากบันทึกแล้ว คุณจะต้องทำให้ไฟล์เปิดใช้งานได้ (chmod +x archive.ubuntulinux.org.sh)

ตัวอย่างข้างต้นจะดาวน์โหลดพื้นที่เก็บข้อมูลสำหรับ Ubuntu 8.04 (Hardy Heron) หากคุณยังคงใช้ Ubuntu 7.10 (Gutsy Gibbon) เวอร์ชันเก่าอยู่ คุณจะต้องปรับแต่งสคริปต์นี้เล็กน้อย โดยเฉพาะคุณต้องเปลี่ยนค่า ของพารามิเตอร์ --dist จาก hardy ถึง gutsy คุณควรใส่ใจกับพารามิเตอร์ --arch ซึ่งระบุสถาปัตยกรรมของคอมพิวเตอร์ของคุณ ค่า i386 บ่งชี้ว่าแพ็คเกจจะถูกดาวน์โหลดสำหรับคอมพิวเตอร์ที่มีสถาปัตยกรรม x86 พารามิเตอร์นี้อาจเป็น amd64 สำหรับคอมพิวเตอร์ AMD หรือ Intel 64 บิต

4. เพียงเท่านี้ ตอนนี้คุณสามารถเรียกใช้สคริปต์เพื่อดำเนินการได้แล้ว โดยพิมพ์คำสั่งต่อไปนี้ในคอนโซลขณะอยู่ในโฟลเดอร์ Repositories:

./archive.ubuntulinux.org.sh

สคริปต์จะเริ่มทำงาน พื้นที่เก็บข้อมูลทั้งหมดใช้เวลาประมาณ 20-30 กิกะไบต์ ดังนั้นตรวจสอบให้แน่ใจว่าคุณมีพื้นที่ว่างในดิสก์ก่อนที่จะดาวน์โหลด คุณสามารถขัดจังหวะสคริปต์ได้อย่างไม่ลำบากเมื่อใดก็ได้โดยกดคีย์ผสม Ctrl+C เมื่อคุณเรียกใช้สคริปต์อีกครั้ง สคริปต์จะดาวน์โหลดแพ็คเกจที่ไม่ได้ดาวน์โหลดต่อไป นอกจากนี้ การรันสคริปต์อีกครั้งจะอัปเดตพื้นที่เก็บข้อมูลในเครื่องของคุณ เช่น มีการตรวจสอบการมีอยู่ของโปรแกรมเวอร์ชันใหม่และดาวน์โหลดด้วย

หมายเหตุ: ผู้ใช้ Ubuntu 7.10 มีข้อผิดพลาดเล็กน้อย ผู้ใช้ Ubuntu 8.04 ไม่มีอะไรต้องกังวล มีข้อบกพร่องใน debmirror ที่ทำให้โฟลเดอร์พูลถูกลบออกจากที่เก็บในเครื่องเมื่อเรียกใช้สคริปต์อีกครั้ง จะต้องได้รับการแก้ไขก่อนที่จะรันสคริปต์ คำอธิบายของข้อผิดพลาดที่นี่: https://bugs.launchpad.net/ubuntu/+source/debmirror/+bug/136634

ข้อผิดพลาดสามารถแก้ไขได้ง่าย:
$ sudo gedit /usr/bin/debmirror.php
แทนที่บรรทัด local $/="\n\n"; ไปยังท้องถิ่น $/="\n"; และบันทึกไฟล์ ตอนนี้การอัปเดตพื้นที่เก็บข้อมูลจะเกิดขึ้นโดยไม่มีเหตุการณ์เกิดขึ้น

5. หลังจากดาวน์โหลดสคริปต์แล้ว (อาจใช้เวลานาน) คุณสามารถใช้งานได้โดยเพิ่มบรรทัด deb ให้กับแหล่งที่มาของแอปพลิเคชัน (ระบบ -> การดูแลระบบ -> แหล่งที่มาของแอปพลิเคชัน)

deb line ควรชี้ไปที่โฟลเดอร์ repository และควรมีลักษณะดังนี้:
ไฟล์ deb:///home/aidsoid/Repositories/ru.archive.ubuntu.com/ hardy จักรวาลลิขสิทธิ์หลักที่ถูก จำกัด

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

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

ในบทช่วยสอนนี้ ฉันจะบอกวิธีตั้งค่าพื้นที่เก็บข้อมูล Ubuntu 16.04 ในเครื่องด้วยสองวิธี

ในวิธีนี้ เราจะดาวน์โหลดแพ็คเกจทั้งหมดจากพื้นที่เก็บข้อมูลสาธารณะไปยังฮาร์ดไดรฟ์ของเซิร์ฟเวอร์ Ubuntu ก่อนอื่นคุณต้องติดตั้งเว็บเซิร์ฟเวอร์ Apache จำเป็นต้องแจกจ่ายแพ็คเกจผ่านเครือข่ายท้องถิ่น:

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

ตอนนี้ติดตั้ง apt-mirror:

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

สร้างไดเร็กทอรีที่จะดาวน์โหลดแพ็คเกจทั้งหมด:

sudo mkdir /myrepo

ตอนนี้เปิดไฟล์ /etc/apt/mirror.list และเพิ่มบรรทัดต่อไปนี้:

sudo vi /etc/apt/mirror.list

############# กำหนดค่า ###################
#
# ตั้งค่า base_path /var/spool/apt-mirror

ตั้งค่า base_path /myrepo

ที่นี่ /myrepo คือที่อยู่ของโฟลเดอร์ที่สร้างขึ้นใหม่ นอกจากนี้ในไฟล์การกำหนดค่านี้ คุณสามารถระบุพื้นที่เก็บข้อมูลที่คุณต้องการใช้ เราจะใช้พื้นที่เก็บข้อมูลมาตรฐาน แต่คุณสามารถเพิ่ม PPA ได้ หากคุณต้องการใช้ทั้งสถาปัตยกรรม x64 และ x32 จะต้องระบุที่เก็บข้อมูลสำหรับสถาปัตยกรรมเหล่านั้นในไฟล์แยกกัน

ตัวอย่างเช่น สำหรับ x32 บรรทัดจะขึ้นต้นด้วย deb-i386 และสำหรับ x64: deb-amd64 เมื่อคุณตั้งค่าเสร็จแล้ว ให้เริ่มดาวน์โหลดแพ็คเกจด้วยคำสั่ง:

เทอร์มินัลจะส่งออกดังนี้:

กำลังดาวน์โหลดไฟล์ดัชนี 162 ไฟล์โดยใช้ 20 เธรด...
เวลาเริ่มต้น: วันพุธที่ 5 สิงหาคม 16:09:16 น. 2558
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

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

แทนที่จะรันคำสั่งนี้ด้วยตนเองทุกวันเพื่ออัปเดตพื้นที่เก็บข้อมูล คุณสามารถกำหนดเวลางาน Cron ได้ เมื่อต้องการทำเช่นนี้ ให้ยกเลิกหมายเหตุบรรทัดต่อไปนี้ในไฟล์ /etc/cron.d/apt-mirror:

sudo vi /etc/cron.d/apt-mirror

# งาน cron ปกติสำหรับแพ็คเกจ apt-mirror
#
0 4 * * * apt-mirror /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log

ในตัวอย่างนี้ Cron จะเรียกใช้การอัปเดตแพ็คเกจตอนสี่โมงเช้าทุกวัน

หลังจากการดาวน์โหลดเสร็จสิ้น ให้ตรวจสอบว่ามีแพ็คเกจอยู่ในไดเร็กทอรี /myrepo หรือไม่

ตอนนี้เราต้องทำให้แพ็คเกจพร้อมใช้งานผ่านเครือข่าย เมื่อต้องการทำเช่นนี้ เรามาสร้างลิงก์สัญลักษณ์กัน:

sudo ln -s /myrepo/mirror/us.archive.ubuntu.com/ubuntu/ อูบุนตู

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

การตั้งค่าบนเครื่องไคลเอนต์จะไม่ทำให้เกิดปัญหาใดๆ เพียงเปิดไฟล์ /etc/apt/sources.list และเพิ่มพื้นที่เก็บข้อมูลในเครื่องของคุณในลักษณะเดียวกับที่คุณเพิ่มระยะไกล เพียงใช้ที่อยู่ IP ของเครื่องของคุณ:

sudo vi /etc/apt/sources.list

[...]
deb http://192.168.1.102/ubuntu จักรวาลที่น่าเชื่อถือ
deb http://192.168.1.102/ubuntu trusty main ถูกจำกัด
deb http://192.168.1.102/ubuntu trusty-updates หลักถูก จำกัด
[...]

นั่นแหละ นี่. 192.168.1.102 - ที่อยู่ของเซิร์ฟเวอร์พร้อมพื้นที่เก็บข้อมูล ตอนนี้เรามาอัปเดตรายการแพ็คเกจกันดีกว่า:

อัปเดต sudo apt-get

หากต้องการติดตั้งโปรแกรม เพียงรันคำสั่งมาตรฐาน:

sudo apt-get ติดตั้งชื่อแพ็คเกจ

การตั้งค่า apt-mirror ubuntu 16.04 เสร็จสมบูรณ์ ขณะนี้ลูกค้าไม่จำเป็นต้องเชื่อมต่ออินเทอร์เน็ตเพื่อดาวน์โหลดแพ็คเกจ พวกเขาจะได้รับแพ็คเกจและการอัปเดตทั้งหมดจากที่เก็บ Ubuntu ในเครื่อง

วิธีที่ 2: APT-Cacher

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

ขั้นแรกให้ติดตั้งเซิร์ฟเวอร์ Apache:

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

จากนั้น apt-cahcer:

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

เลือกวิธีการเริ่มต้น - daemon และคลิกตกลง:

ตอนนี้คุณต้องแก้ไข /etc/default/apt-cacher โดยตั้งค่าพารามิเตอร์ autostart เป็น 1

sudo vi /etc/default/apt-cacher

ไฟล์การกำหนดค่าการเริ่มต้น apt-cacher daemon

# ตั้งค่าเป็น 1 เพื่อรัน apt-cacher เป็น daemon แบบสแตนด์อโลน ตั้งค่าเป็น 0 หากคุณกำลังจะไป
# เพื่อเรียกใช้ apt-cacher จาก /etc/inetd หรือในโหมด CGI (เลิกใช้แล้ว) อีกทางหนึ่ง
# การเรียกใช้ "dpkg-reconfigure apt-cacher" น่าจะช่วยคุณได้
#
สตาร์ทอัตโนมัติ=1

# การตั้งค่าพิเศษเพื่อแทนที่การตั้งค่าใน apt-cacher.conf
# EXTRAOPT=" daemon_port=3142 ขีดจำกัด=30 "

คุณยังสามารถกำหนดค่า IP ที่คุณสามารถเข้าถึงแคชได้ โดยเปิดไฟล์ /etc/apt-cacher/apt-cacher.conf และแก้ไขบรรทัดที่เกี่ยวข้อง: ตัวอย่างเช่น อนุญาตให้เชื่อมต่อกับคอมพิวเตอร์ที่มี IP เท่านั้น 192.168.1.20 ถึง 192.168.1.30 :

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

[...]
## ยกเลิกการแสดงความคิดเห็นและตั้งค่าช่วง IP ##
อนุญาต_โฮสต์ = 192.168.1.20 - 192.168.1.30
#denied_hosts =
[...]

หลังจากตั้งค่าเสร็จแล้วให้รีสตาร์ท apache:

sudo systemctl รีสตาร์ท apache2

sudo service apache2 รีสตาร์ท

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

สร้างไฟล์ sudo nano /etc/apt/apt.conf.d/01proxy และเพิ่มบรรทัดต่อไปนี้:

sudo นาโน /etc/apt/apt.conf.d/01proxy

รับ::http::พร็อกซี "http://192.168.1.102:3142";

ที่นี่ 192.168.1.102 คือที่อยู่ของพื้นที่เก็บข้อมูลในเครื่องของเรา สิ่งที่เหลืออยู่คือการอัปเดตรายการแพ็คเกจ:

อัปเดต sudo apt-get

ที่นี่เราไม่ได้เพิ่มพื้นที่เก็บข้อมูล Ubuntu ในเครื่อง แต่เพียงใช้พรอกซีเพื่อดาวน์โหลดแพ็คเกจ

ข้อสรุป

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

แทนที่จะใช้ dpkg -i package_name.deb ในการติดตั้ง คุณสามารถสร้างพื้นที่เก็บข้อมูลในเครื่องสำหรับแพ็คเกจที่นำมาบนแฟลชไดรฟ์หรือสื่ออื่นๆ จากนั้นใช้ synaptic/kynaptic (หรือ apt-get install package_name)

1. เป็นการดีกว่าที่จะดำเนินการทั้งหมดในฐานะรูท

ซูโดะ ซู

2. ตอนนี้ติดตั้งแพ็คเกจ dpkg-dev มันจะมียูทิลิตี้ dpkg-scanpackages ซึ่งเป็นสิ่งที่เราต้องการ

apt-get ติดตั้ง dpkg-dev

3. วางแพ็คเกจ .deb ทั้งหมดในไดเร็กทอรี เช่น /myrepo (ไม่ได้อยู่ในไดเร็กทอรีนี้โดยตรง แต่อยู่ในไดเร็กทอรีย่อยที่อยู่ในไดเร็กทอรีนี้)

4. ดำเนินการ

cd /myrepo dpkg-scanpackages /dev/null | gzip -9c > Package.gz

5. ตอนนี้คุณต้องเพิ่มพื้นที่เก็บข้อมูลใหม่ใน /etc/apt/sources.list แทรกบรรทัดลงใน /etc/apt/sources.list (ควรแทรกไว้ใกล้กับจุดเริ่มต้นมากกว่า เนื่องจาก apt-get (synaptic/kynaptic) ให้ความสำคัญกับแหล่งที่มาที่เร็วกว่าแหล่งอื่น)

ไฟล์ deb:/myrepo ./

6. อัปเดตรายการที่เก็บ

ฉลาดรับการปรับปรุง

หากเนื้อหาของไดเร็กทอรีแพ็กเกจเปลี่ยนแปลง ให้ทำซ้ำขั้นตอนที่ 1.4