How to create Debian packages
Mình chỉ tóm tắt thôi, nó gồm các bước như sau:
- Tạo thư mục dạng ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}, ví dụ your-app_0.4.5-r5_i386.
Nếu build .deb cho Ubuntu có thể chỉ định thêm Ubuntu version ví dụ your-app_0.4.5-r5ubuntu1_i386 có nghĩa là version 1 dành cho Ubuntu build từ version 0.4.5-r5 dành cho Debian.
- Tạo các subdirectories cho các file sẽ install, ví dụ:
/usr/bin ‣ your-app
/usr/lib/nautilus/extensions-03 ‣ chứa extension cho Nautilus như libnautilus-your-app.so
/usr/share/doc, /usr/share/man ‣ chứa file help, manual
/usr/share/locale ‣ file ngôn ngữ, /usr/share/menu.
/opt/your-app/logo_32.xpm
- Tạo thư mục DEBIAN trong package directory. Trong thư mục DEBIAN chứa các file như control, conffile, md5sums, postinst, postrm, preinst, prerm. Có thể tham khảo từ các .deb package khác bằng cách extract nội dung các .deb có sẵn. Thông thường các .deb được cache trong /var/cache/apt/archives.
Để xem .deb có nội dung gì có thể dùng ar –t ví dụ
ar -t /var/cache/apt/archives/firefox_15.0.1+build1-0ubuntu0.11.10.1_i386.deb.
Để extract dùng ar –x sau đó dùng tar để xem nội dung các file nén.
Có thể dùng tool dpkg-deb để extract nội dung file .deb, eg.
dpkg-deb -x .../app.deb ~/workspace/app dpkg-deb -e .../app.deb ~/workspace/app/DEBIAN
- Nội dung file DEBIAN/control có thể giống file control của các app khác, chỉ cần chỉnh sửa 1 số field.
- File DEBIAN/postinst là một script sẽ run bởi dpkg –i sau khi các file trong package được extract. Post-install bắt đầu bằng
#! /bin/sh Để bảo đảm nếu có error phát sinh, script nên return non-zero exit code bằng set –e để shell exit ngay command đầu tiên không thành công.
- File DEBIAN/preinst pre-install
- File DEBIAN/prerm pre-remove
- File DEBIAN/postrm post-remove
- Xóa tất cả các file backup *~, nhất là các file trong DEBIAN/*~
rm -rf `find package-dir -name '*~'`
- Tạo file md5sums chứa checksum MD5 cho tất cả các file trong package bằng command
md5sum `find . -type f | grep -v '^[.]/DEBIAN/'` > DEBIAN/md5sums
Chạy command trong thư mục chứa DEBIAN.
- Giá trị của field Installed-Size: là số cuối cùng trong output của command du chạy trong package directory (lưu ý remove backup file). Có thể chỉ summarize kết quả với command như sau:
du -sx --exclude DEBIAN package-dirname -s, --summarize ‣display only a total for each argument -x, --one-file-system ‣skip directories on different file systems
- Build .deb package bằng
fakeroot dpkg-deb –b|--build package-dir
-
Kiểm tra bằng
lintian package-name.deb
-
Để install .deb package chỉ cần double click, dùng command như sau
sudo dpkg -i package-file.deb
Để uninstall dùng command
sudo dpkg -r package-name
No comments:
Post a Comment