Debian Linux Package 快速製作筆記(deb)

快速製作 Debian Package, 單純 Hello world 版, 若要詳細版本可見:

Debain Package 相關資料

此為快速製作 deb 簡易版, 主要是包自己的 Package 用, 只寫基本 build package 需要的檔案.

資料準備

  • Package name: Tsung-api (Debian package name 不允許底線 => "_")
  • Package description: Tsung open api
  • 檔案路徑: /tmp/api/
  • 檔案列表:
    • /tmp/api/lib/hello.php
    • /tmp/api/lib/db/db.php
    • /tmp/api/web/index.php
    • /tmp/api/web/template/index.php

安裝要製作 Package 所需套件

  • apt-get install dh-make debhelper fakeroot

Debian Package 所需檔案 (changelog, control, dirs, rules 四個檔案)

  • debian/
  • debian/changelog
  • debian/control
  • debian/dirs
  • debian/rules
  • 此 debian 目錄 含裡面的檔案, 需置於包 Package 的資料夾內, 所以完整路徑會是: /tmp/api/debian

Debian Package 所需檔案的內容 (changelog, control, dirs, rules)

changelog


tsung-api (0.0.1-1) unstable; urgency=low

* Initial release

-- Tsung <[email protected]>  Sat, 29 Apr 2006 21:13:14 +0800

control


Source: tsung-api
Section: misc
Priority: optional
Maintainer: Tsung <[email protected]>
Build-Depends: debhelper (>= 4.0.0)
Standards-Version: 3.6.2

Package: tsung-api
Architecture: all
Depends:
Description: This is Tsung Open API Package
URL: https://blog.longwin.com.tw
API: /usr/share/php/api/
Web: /var/www/api/

dirs


usr/share/php/api
var/www/api

rules


#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# This file was originally written by Tsung.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

clean:
dh_testdir
dh_testroot
dh_clean

build:
# Nothing to do

binary: binary-arch binary-indep
# Nothing to do

binary-arch:
# Nothing to do

#install: build
#    dh_testdir
#    dh_testroot
#    dh_clean -k
#    dh_installdirs

binary-indep:
dh_testdir
dh_installdirs

# Custom package commands
cp -r web/* debian/tmp/var/www/api/
cp -r lib/* debian/tmp/usr/share/php/api/

# Resuming debhelper scripts
dh_testroot
dh_installchangelogs
dh_installdocs
dh_fixperms
dh_compress
dh_gencontrol
dh_md5sums
dh_builddeb
.PHONY: binary binary-arch binary-indep build clean

rules 內容都先不要管, 只要注意下述兩行:(上述這些檔案, 粗體字的地方請務必修改, 剩下的再自行斟酌修改即可)

  • cp -r web/* debian/tmp/var/www/api/
  • cp -r lib/* debian/tmp/usr/share/php/api/

這是 Build Package 時, 會自動執行的指令, 安裝時也會安裝到此路徑, 需要知道的就下述幾點:

  • Build Package 時, 會執行這些動作. (亦會自動產生 debian/tmp/ 的目錄)
  • 請將 debian/tmp/ 當成 / 來看. (安裝時, debian/tmp/ 就等於根目錄的意思, 在此目錄放在何處, 安裝完成就會在哪邊)
  • ex: debian/tmp/var/www/api/ => 安裝完成時 /var/www/api/ # 這裡面會有 web/* 的檔案
  • 在此所需要的目錄, 於 dirs 裡面一定要寫.

製作 Package

  1. cd /tmp/api
  2. dpkg-buildpackage -rfakeroot -b # 即 build package.deb 完成.

Build Package 自動產生的檔案列表

  • /tmp/api/debian/tmp/ - 所有檔案都會先暫存於此
  • /tmp/api/debian/debhelper.log
  • /tmp/api/debian/files
  • /tmp/DEBIAN/
  • /tmp/DEBIAN/control - Package 描述
  • /tmp/DEBIAN/md5sums - 所有檔案的 "md5 <-> filename" 對應
  • /tmp/tsung-api_0.0.1-1_i386.changes
  • /tmp/tsung-api_0.0.1-1_all.deb # package 產生完成.

安裝

  • dpkg -i tsung-api_0.0.1-1_all.deb

移除

  • dpkg -r tsung-api # 移除.

懶人包: 直接下載此檔案 debian-package.tgz (上述的檔案整理成一個壓縮檔), 解開後, 將檔案內容改一改, 即可執行建立 Package.

測試懶人包 - 直接包 Package

  1. apt-get install dh-make debhelper fakeroot
  2. 下載 debian-package.tgz 到 /tmp
  3. cd /tmp
  4. tar zxvf debian-package.tgz
  5. cd debian-package
  6. dpkg-buildpackage -rfakeroot -b
  7. cd /tmp
  8. ls # 即可找到 tsung-api_0.0.1-1_all.deb
  9. dpkg -i tsung-api_0.0.1-1_all.deb # 安裝
  10. dpkg -r tsung-api # 移除

相關網頁

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈Debian Linux Package 快速製作筆記(deb)〉中有 13 則留言

  1. 楼主可以使用dh_install,在debian目录中创建一个文件
    tsung-api.install
    内容是:
    web/* var/www/api/
    lib/* usr/share/php/api/
    这样的话,rules几乎不用作任何更改,
    如果你使用dh命令的话,rules可以精简到只有3行

  2. 請問版主:
    在您提供的最後一篇references裡有提到,
    利用postinst以及prerm分別寫出安裝後跟移除前所要執行的script;
    但是在您的教學跟Debian新進人員手冊都沒有提到關於移除前的script。

    請問,我該怎麼做呢?感謝感謝∼

  3. Tsung 兄 你這個布洛格是在那裡申請的呢?!
    小弟也想申請一個。你的布洛格有支援code 的排版
    功能這是我想要的。小弟因為實務上的需要會在布洛格上的文章
    貼上一些程式碼。但目前網路上的布洛格似乎不支援程式碼排
    版的功能。

  4. 厄, 我是自己架的耶, 目前我是用 LifeType, 我會建議您可以考慮 WordPress, 也是不錯~ 🙂
    至於免費空間的話, Blogger 可以考慮看看~

  5. debian/rules:13: recipe for target 'clean' failed
    make: *** [clean] Error 2
    dpkg-buildpackage: error: fakeroot debian/rules clean subprocess returned exit status 2

    这个是什么问题?

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料