ฉันมีพื้นที่เก็บข้อมูล apt โดยใช้เซิร์ฟเวอร์ apache ที่ /var/www/organization.org/
โครงสร้างไฟล์คือ
.
+- ปล่อย
+- ส่วนต่าง/
+- คงที่/
| +- หลัก/
| | +- ไบนารีทั้งหมด/
| | | +- Packages.gz
| | | +- package1.deb
| | | +- package2.deb
| | +- ไบนารี-amd64/
| | | +- Packages.gz
| | | +- package1.deb
| | | +- package2.deb
| | +-binary-arm64/
| | | +- Packages.gz
| | | +- package1.deb
| | | +- package2.deb
| +- ส่วนร่วม/
| | +- [...]
| +- ไม่ฟรี/
| | +- [...]
+- การทดสอบ/
+- [...]
+- ไม่เสถียร/
+- [...]
และฉันมีสิ่งนี้ใน source.list ของฉัน
deb http://server_url การสนับสนุนหลักที่เสถียรไม่ฟรี
เมื่อฉันวิ่ง
อัปเดต sudo apt
สิ่งต่าง ๆ เป็นไปอย่างราบรื่น
เมื่อฉันทำ sudo apt ติดตั้ง package_name
ไม่พบแพ็คเกจใดๆ
ปรากฎว่าใน ปล่อย
ไฟล์ จะใช้เส้นทางนี้ ชื่อไฟล์: /var/www/organization.org/binary-all/package_name.deb (ไม่มี dists/stable/main)
ดังนั้นเมื่อฉันเพิ่ม symlinks แบบนี้ ไบนารีทั้งหมด -> dists/stable/main/binary-all/
ฉันไม่มีปัญหาในการติดตั้งแพ็คเกจ ทุกอย่างทำงานได้ แต่นี่เป็นแฮ็กที่ป้องกันไม่ให้ทำงานกับโฟลเดอร์ที่ไม่เสถียร/ และการทดสอบ/ เนื่องจาก symlinks อยู่ที่รูทนอกเหนือจาก Release และ dists/
นี่คือสคริปต์ที่ฉันใช้สร้าง Packages.gz และไฟล์ Release ซึ่งอาจเกี่ยวข้องกัน
#!/bin/bash
APT_REPO_DIR=/var/www/organization.org/
DISTS_DIR=$APT_REPO_DIR/dists
สีเหลือง='\033[1;33m'
BLUE='\033[1;34m'
NO_COLOR='\033[0ม.'
ผลักดัน diss
สำหรับ Stability_Directory ใน */; do # มักจะเรียกว่า: เสถียร, ไม่เสถียร, การทดสอบ
echo -e "กำลังสร้างดัชนีไดเรกทอรีภายใต้ ${YELLOW}$stability_directory${NO_COLOR}"
ผลัก $stability_directory
สำหรับ license_directory ใน */; do # มักจะเรียกว่า: main, contrib, non-free
echo -e "การจัดทำดัชนี ${BLUE}$license_directory${NO_COLOR}"
ผลัก $license_directory
สำหรับ binary_directory ใน `find binary-* -type d`; ทำ # binary-amd64, binary-arm64...
dpkg-scanpackages $binary_directory | gzip -9c > $binary_directory/Packages.gz
เสร็จแล้ว
ป๊อป
เสร็จแล้ว
ป๊อป
เสร็จแล้ว
ป๊อป
dpkg-scanpackages $APT_REPO_DIR | ที $APT_REPO_DIR/Release > /dev/null