--- hackpadID: uXGJHm1zcgj hackpadWorkspace: tossug tags: hackpad-import, tossug --- # 如何編譯一個 Debian package ###### tags: `Debian packaging workshop` ## Native way 1. 首先利用 lxc 建立一個 Ubuntu 14.04 的 VM 或者你也可以直接使用你的 Debian/Ubuntu 環境 * sudo apt-get install lxc * sudo MIRROR=[](http://free.nchc.org.tw/ubuntu)http://free.nchc.org.tw/ubuntu lxc-create -t ubuntu -n trusty -- -r trusty -a amd64 # 建立乾淨的VM * sudo lxc-start -d -n trusty # 啟動vm * sudo lxc-console -n trusty # 登入VM 1. 安裝必要套件 * sudo apt-get install dpkg-dev devscripts 1. 安裝相依的軟體套件(以 hime 為例) * sudo apt-get build-dep hime 1. 修改 /etc/apt/sources.list 加入相關的 deb-src lines,例如以下 * deb-src [](http://free.nchc.org.tw/ubuntu)http://free.nchc.org.tw/ubuntu trusty main restricted universe multiverse * deb-src [](http://free.nchc.org.tw/ubuntu)http://free.nchc.org.tw/ubuntu trusty-updates main restricted universe multiverse * deb-src [](http://security.ubuntu.com/ubuntu)http://security.ubuntu.com/ubuntu trusty-security main restricted universe multiverse 1. 下載該套件的 Debian source package (以下列出抓取不同來源的方法) * apt-get source hime # 抓取該 Distribution 上面的版本 * debcheckout hime # 從 Debian version control 上抓 Debian source package * dget -x -u [](http://dearchive.ubuntu.com/ubuntu/pool/universe/h/hime/hime_0.9.10-3.dsc)http://dearchive.ubuntu.com/ubuntu/pool/universe/h/hime/hime_0.9.10-3.dsc # 指定特定版本抓 Debian source package 1. 準備好姓名與Email * export DEBEMAIL="your@email.com" * export DEBFULLNAME="Your Name" 1. 修改 changelog * dch -R -D trusty Rebuild for trusty. 1. 開始編譯 Debian binary package * debuild -us -uc -tc 1. 安裝產生出來的 Debian binary package 進行測試 2. 產生 Debian source package * debuild -S ## Setup sbuild to Build Debian Package **Setup** mk-sbuild --arch=<arch> release **List** schroot -l **Update** schroot -c source:sid-amd64 apt update apt full-install **Build** sbuild -A -d unstable -c chroot:sid-amd64 package.dsc **autopkgtest** adt-run package.dsc --- adt-virt-schroot chroot:sid-amd64
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up