ผมคิดจะทำ repo sofware สำหรับ ubuntu มาระยะนึง อยู่ในงานของ linux ฉบับกระเป๋า ตั้งแต่ปีที่แล้วนู้น เอาเป็นว่ามีวิธีที่ดีๆ ละ

กำหนดที่เก็บ repo ไว้ที่ /var/www/package

$ sudo -s
$ mkdir /var/www/packages
$ cd /var/www/packages


สร้างที่เก็บไฟล์ (pool)

$ mkdir -p pool/main
$ mkdir -p dists/gutsy/main/binary-i386
$ mkdir .cache


สร้าง config ไฟล์สำหรับข้อมูล repository

$ sudo gedit apt-release.conf


ใส่ข้อมูลดังรายละเอียดข้างล่าง

APT::FTPArchive::Release::Codename "gutsy";
APT::FTPArchive::Release::Origin "Nerdica.com";
APT::FTPArchive::Release::Components "main";
APT::FTPArchive::Release::Label "Nerdica Ubuntu Repository";
APT::FTPArchive::Release::Architectures "i386";
APT::FTPArchive::Release::Suite "gutsy";


สร้างไฟล์ apt-ftparchive.conf เพื่อระบุ config ของ repo

$ sudo gedit apt-ftparchive.conf


ใส่ข้อมูลดังต่อไปนี้

Dir {
ArchiveDir ".";
CacheDir "./.cache";
};

Default {
Packages::Compress ". gzip bzip2";
Contents::Compress ". gzip bzip2";
};

TreeDefault {
BinCacheDB "packages-$(SECTION)-$(ARCH).db";
Directory "pool/$(SECTION)";
Packages "$(DIST)/$(SECTION)/binary-$(ARCH)/Packages";
Contents "$(DIST)/Contents-$(ARCH)";
};

Tree "dists/gutsy" {
Sections "main";
Architectures "i386";
}

จากนั้นหาไฟล์ .deb มาใส่ลงใน pool/main

สั่ง update repository ด้วยคำสั่ง

$ cd /var/www/packages
$ apt-ftparchive generate apt-ftparchive.conf
$ apt-ftparchive -c apt-release.conf release dists/gutsy > dists/gutsy/Release


เรียกใช้งาน repo ของเราโดยตั้งค่า sources.list

$ sudo gedit /etc/apt/sources.list


ใส่ข้อมูล repo ดังนี้

$ deb http://my-server-address.com/packages gutsy main


สั่ง update package ดังนี้

$ sudo apt-get update

 

*** ตัวอย่างเป็น gutsy นะครับ ผมลองทำเล่นๆ ดูใน http://thaiopensource.org/ubuntu ครับ