@jesse_humm....  10 分鐘後開始... 來準備一下...
-!- mode/#debian.tw [+o AndrewLee] by csardas
@BBNSPaulliu: 9/21記得來系計中捧場哩 :P
-!- mode/#debian.tw [-ooo AndrewLee BBNS vgod] by jesse_
paulliu9/21? 有什麼事嗎?
-!- mode/#debian.tw [-ooo csardas AceLan Victor_] by jesse_
paulliujesse_: 什麼事要開始了??
csardaspaulliu: see title
-!- mode/#debian.tw [-oo scw_ flyhermit] by jesse_
BBNSpaulliu: Debian Installfest
BBNSpaulliu: 待會兒這裡要IrcConference
-!- mode/#debian.tw [-ooo kevinwat1 cnoize2 ycheng] by jesse_
paulliu喔....
BBNSpauliu: asho大 要開始講課
@ashoBBNS:...@@...講的不好不要打我...
BBNSasho: 你講的正是我最想學的哩 :D
BBNSchihchun: 這個Conference會被錄下來乎?
@ashoBBNS:壓力來了...><
paulliu我也要聽...
@jesse_BBNS: 會錄下來
BBNSjesse_: ya ... 因為我大概會缺席半小時
BBNSjesse_: 要上英文課:~
@jesse_BBNS: :)
-!- kanru [~kanru@61-231-216-71.HINET-IP.hinet.net] has joined #debian.tw
@jesse_再三分鐘
@jesse_突然變安靜了... @_@
csardas3
@jesse_bozilla: part
@jesse_err...
csardas.....
BBNS-v-
@jesse_直接踢嗎?  bozilla 的老爸不在.. :P
csardas 不會自動login??
-!- pwchi [~pwchi@c129.h061013218.is.net.tw] has joined #debian.tw
@jesse_試看看...
-!- tumii [~tumi@140-109-231-54.adsl.sinica.edu.tw] has joined #debian.tw
-!- bozilla was kicked from #debian.tw by jesse_ [jesse_]
@jesse_...
@jesse_21:00
informer_要拍手嗎 ?
@jesse_來開始吧..
@jesse_XD
* informer_ 拍手
* tumii 拍手
flame_pa pa pa...
paulliu* 拍手
kanrupapapa
pwchi啪啪啪啪
@jesse_我會把 channel +m
csardas
cserusticpapapa
@jesse_等會兒要發問的話, 請 /msg asho blah blah blah
sbc_
@jesse_ok, 先 +m 了
-!- mode/#debian.tw [+m] by jesse_
-!- louie [~louie@mail.louie.idv.tw] has joined #debian.tw
@jesse_要發問的話, 請 /msg asho blah blah blah 唷
@jesse_請 asho 開始吧
@ashojesse_: 謝謝
@asho各位朋友晚安...
@asho在這個中秋節過後的夜晚除了剩下的烤肉之外
@asho順道來點irc吧...:-D
@asho首先我先自我簡介
@asho我叫阿信,是moto.dot上的一位user
@asho同時也常常回答問題,不管有無給予正確解答,
@asho還希望讓詢問者有收穫
@asho今天很榮幸擔任irc conf第一場的主講人
@asho同樣地...藉由這一場
@asho小弟希望能將在Debian上得喜樂分享給各位朋友。
@ashoAll Right...It's time...
@asho今天要來分享的是debian上製作deb的方法
@asho我們知道deb是專屬於Debian上的package system
@asho而Debian在操作以及管理上經常讓人讚賞
@asho使得有許多朋友願意來使用 debian...
@asho因為 debian 實在太人性化且方便了
@asho雖然使用方便...那 package 製作呢?
@asho是地...不要懷疑...Debian可是平易近人的,記得他的符號嗎?是否每天早上都會見到呢...:-P
@asho以下將分成三小節來說明
@asho第一:事情準備
@asho第二:build package with 'debian' dir
@asho第三:build package without 'debian' dir
@asho好的...想必大家已經清楚了
@asho那我們就接下去摟...:)
@asho事情準備
@asho在製作deb之前,可要先做點功課窩...
@asho不然就會像沒閱讀無痛起步而痛不欲生...:D
@asho首先我們要準備的當然是
@ashodpkg-dev , gcc , make , patch , file ,libc6-dev 等 compiler 或library
@asho2.包裝的相關工具:   dh-make (也就是後段的主角)
@ashodebhelper
@asho這些皆可在debian archieve中找到
@ashoother useful tools...
@ashofakeroot
@ashodebmake (maybe...if you need)
@asho重要的文件....
@asho1. debian-policy
@asho   2. developers-reference
@asho或是網路上得文章:http://www.debian.org/doc/manuals/maint-guide/index.en.html
@asho這些文件是必需要念的...所以要辛苦一點窩
@asho但希望今晚的講解,可以讓各位就不需要這些文件了...i hope...:-)
-!- hlb [hlb@ca.NCTU.edu.tw] has joined #debian.tw
@asho<認領 deb>
@asho看完本篇之後一定想要開始動手了吧,但可別忘記檢查是否有人已經早一步製作了
@asho記得別忘記以下的步驟
@asho1. 先到 http://www.de.debian.org/devel/wnpp/being_packaged 確認是否有人已經認領了
@asho2: license program:參考 http://www.debian.org/social_contract#guidelines 的方式定義該package為 main/non-free/contrib
@asho或是寫信到 debian-legal@lists.debian.org 詢問
@asho3. 聯絡該軟體的作者是否願意製程deb
@asho4. well documented
@asho如果製作過程遇到無法解決的問題,可以寫信到 debian-mentors@lists.debian.org
@asho或是查詢 http://lists.debian.org/debian-mentors/ 這個 Mailing List的紀錄,或許就可迎刃而解。
@ashook...以上是基本動作...我們可以繼續進行以下的部份
@asho事前的說明雖然有點枯燥...但還請客位忍耐...
@asho因為沒有寒冷的冬季,怎能聞得梅花撲鼻香呢...:-)
@asho<debianization>
@asho何謂 debianization 呢?當我們下載了一套軟體的原始碼來編譯時,往往還需要一些修改才能符合系統的環境
@asho比如說各家的distribution目錄位置或名稱不同,就需要另外釋出修改好的 binary file 來安裝,Debian也是如此。
@asho在產生 deb 的過程中
@ashoDeveloper會利用deb的工具將copyright,README.Debian,changelog,control等相關檔案集合在該軟體下的一個 debian 目錄中
@asho透過 "rules" 和 "dh_*" 等工具來進行包裝的過程
@asho這些步驟就是所謂的 "debianization"
@asho經過 "debianization" 之後的套件
@asho我們只要在該目錄下執行:dpkg-buildpackage or dpkg-buildpackage -rfakeroot
@asho就會自動幫我們產生該套件的deb檔案,如果有相依性的問題,也會在編譯之前提醒。
@asho<套件版本與編號>
@asho當拿到了 package source 想躍躍欲試之前,請先確定一些 source dir 的限制。
@asho1. source dir必須全部小寫,因為debian 限制 package name 必須是小寫
@asho2. 目錄名稱要改成 <pkg name>-<version>
@asho3. <pkg name>少於20個英文小寫字母
@asho我們將<version>的部份抽出來討論,<version>有兩種表示方式:
@ashodate
@ashodate就是以日期為版本的套件請以<YYYYMMDD>表示
@asho比如<19910501>和<20010601>,而這也代表了<20010601>比<19910501>來的>新,所以會自動升級
@ashoupstream_version-debian_revision
@ashoupstream_version就是該軟體本身發行的版本
@ashodebian_revision就是該軟體在debian上發行的版本
@asho兩者皆可以有字母或'.'或'+'等 符號
@ashodpkg的判斷方式是從左而右,先判斷 upstream_version的大小
@asho然後在判斷 debian_revision的大小,遇到字母等符號以ASCII的數值來判斷
@asho我是先在硬碟裡面準備了五個版本的 gv4l
@asho<Revision 1>
@asho1. gv4l-2.0.2-1.deb
@asho2. gv4l-2.0.2-asho1.deb
@asho< Revision 2>
@asho1. gv4l-2.0.2-2.deb
@asho2. gv4l-2.0.2-asho2.deb
@asho3. gv4l-2.0.2-2asho.deb
@asho則他們的優先順序是:
@ashogv4l-2.0.2-asho2.deb > gv4l-2.0.2-asho1.deb > gv4l-2.0.2-2asho.deb >gv4l-2.0.2-2.deb > gv4l-2.0.2-1.deb
@asho是不是看到一些"怪怪"的呢?
@asho<gv4l-2.0.2-asho2.deb VS gv4l-2.0.2-asho1.deb>
@asho兩者只差在 revision 的號碼,所以數字大的表示比較新
@asho<gv4l-2.0.2-asho1.deb VS gv4l-2.0.2-2asho.deb>
@asho這兩個寫法代表的意義不同這兩個寫法代表的意義不同
@ashogv4l-2.0.2-2asho.deb本來是以為gv4l-2.0.2-2再加入asho當作者的意思
@asho所以就 revision 而言
@asho應該 gv4l-2.0.2-2asho.deb 會比 gv4l-2.0.2-asho1.deb 要來的新
@asho但實際上卻相反
@asho因為當檢查完 "gv4l-2.0.2-" 這個字串之後
@asho兩者的下一個字元是 "a" 與 "2"
@asho而 "a" 的ASCII數值是97,"2"的ASCII數值是50
@asho所以 gv4l-2.0.2-asho1.deb 會比 gv4l-2.0.2-2asho.deb 來的新
@asho第二個例子讓我們知道了套件命名上容易混淆的地方
@asho所以在包裝套件的時候要特別注意版本的寫法
@asho其他的符號就請各位測試看看摟...:-)
@asho<with debian dir>
@asho目前有許多的軟體在解開 source.tar.gz 後
@asho可以看到有一個 "debian" 的目錄
@asho這個時候,你可以大喊"萬歲"...:-P
@asho因為這個軟體已經針對 Debian 做好 debianization 了
@asho舉 mplayer 這個軟體當例子
@asho我從 http://www1.mplayerhq.hu/MPlayer/releases/MPlayer-0.91.tar.bz2 抓取最新的版本並解開如下
@ashohttp://gallery.debian.org.tw/IRCConf_20030913/irc_pic_01
@ashohttp://gallery.debian.org.tw/IRCConf_20030913/irc_pic_02
@asho我們可以看到目錄下有 debian 這個目錄
@asho於是可以執行 dpkg-buildpackage 產生mplayer的deb
@ashohttp://gallery.debian.org.tw/IRCConf_20030913/irc_pic_03
@asho除了這些未包裝的軟體之外
@asho我們也可以編譯 Debian 所包好的套件
@asho先在 /etc/apt/sources.list 中加入 deb-src 的來源路徑
@asho然後可以執行 apt-get source [pkg-name] 來抓取該軟體的 source code
@asho比如拿 zsnes 這個套件來說
@asho當我們執行了 apt-get source zsnes 的時候,會抓取下列三個檔案
@asho   1. zsnes_xxx.diff.gz
@asho2. zsnes_xxx.dsc
@asho   3. zsnes_xxx.orig.tar.gz
@asho同時會進行 patch 及解開zsnese_xxx.orig.tar.gz
@asho這時候就可以仿造上面的方式進行編譯
@asho如果要修改編譯的選項或相依性
@asho就可以編輯 debian 裡面的 rules , control等檔案即可
@asho呼...以上大家應該都有用過...
@asho接下來的部份可能比較辛苦一點...
@asho大家加油...實作的部份就在不遠處了...yoyoyo...
@asho<without debian dir>
@asho * To debianize *
@asho   ** 製作之前 **
@asho當拿到一個軟體的source code之後,想必會馬上製作 deb 出來分享,但該怎麼利用那些工具呢,硬碟裡有一堆dh*開頭的指令,到底該用哪一個呢?
@ashohttp://gallery.debian.org.tw/IRCConf_20030913/irc_pic_04
@asho光看到就嚇死了,還說製作呢...:-)
@asho放心吧,我們只需要一個指令:dh_make就可以幫我們做初始化的動作了
@asho製作之前還需要一點準備工作,就是了解該軟體的性質和目標,怎麼說呢?
@ashoDebian的package system具有分組的特性
@asho比如有library的deb,kernel的deb或Server等等
@asho在dselect或aptitude上皆可以看到軟體組別的狀態
@asho而一個軟體又可以細分成 library , document , plug module等
@asho以一些Server的軟體來說,通常會有xxx.deb,xxx-doc.deb以上
@asho會另外拆開的原因不外乎就是為了"精簡"和"系統化"
@asho不僅可以讓我們方便查詢套件之外,也可以只安裝所需要的就夠了,節省硬碟的空間
@asho所以我們會常常看到有些軟體比如kdebase還會將konqueror,kate等再細分出來
@asho因為不是每個人都需要那麼龐大的kdebase來佔系統降低速度
@asho故在製作 deb 之前,請先了解並確定我們要製作的軟體要拆成多少個 deb。
@ashodh_make在初始化的過程中也會詢問該軟體的性質:
@asho   1. single binary
@asho  2. multiple binary
@asho    3. library
@asho   4. kernel module
@asho 請依照要製作的軟體來分類吧
@asho   ** 範例 **
@asho我們先跳到實作的部份...先了解一下dh-make的使用情況
@asho這次要建立的是 GV4L,這一套軟體是用來處理video in做影像的擷取
@asho目前並沒有進到 Debian,所以我們就來為它製作 deb 吧
@asho先到該網址下載 GV4L 的source code:http://gv4l.sourceforge.net/,目前版本是2.0.2
@asho因為 GV4L 並不大,也沒有額外的文件,所以只建立 single binary 即可
@asho接下來請解壓縮 GV4L的gv4l-2.0.2.tar.gz
@asho解壓縮之後,切換到gv4l-2.0.2的目錄下,然後跟著以下的圖文框動作
@ashohttp://gallery.debian.org.tw/IRCConf_20030913/irc_pic_05
@asho透過 dh_make,我們就已經完成了 "debianization" 的初始動作了,接下來就跟 "with debian dir" 的情況一樣了。
@asho到現在為止...已經可以建立好 deb了
@asho但這樣做並不嚴謹,其他user拿到此deb雖然可以順利安裝但不一定能夠執行
@asho製作 deb 的重點在於 "debian" 這個目錄下的檔案
@asho其中以changelog,control,rules為主要的關鍵,接下來以剛剛的 GV4L 為例子,讓我們來了解這些檔案的格式與內容
@asho   *** changelog ***
@asho版本變更紀錄,此檔案主要是紀錄該軟體每次釋出所做的改變
@asho比如增加新版本,加入修正,不同的編譯方式等,皆會在此檔案中紀錄
@asho而此檔案只針對 Debian 的release更新,如果軟體有重大修正,是會有其它的說明文件。
@ashohttp://gallery.debian.org.tw/IRCConf_20030913/irc_pic_06
@asho以上的格式請特別注意空格以及符號
@asho比如Maintainer前面必須要有一個空白
@asho'-'前面也需要一個空白,第一行的debian-dist後面的';'
@asho整理好上面的欄位如下
@asho   1. pkg-name:該軟體在 debian 中的名字
@asho   2. (version-release):軟體版本編號-Debian釋出次數,()不能省略窩
@asho   3. debian-dist:stable/testing/unstable/frozen/experimental
@asho   4. urgency:緊急程度:low/medium/high,我們自己製作的填low就好了
@asho    5. * changes:將更新的部份紀錄在此,一行以一個 * 為開頭
@asho   6. Maintainer:Maintaner的全名
@asho   7. <E-Mail>:Maintainer的電子郵件
@asho   8. date:請填入 822-date 的執行結果
@asho這是剛剛 dh_make 初始化後後的 changelog:
@ashohttp://gallery.debian.org.tw/IRCConf_20030913/irc_pic_07
@asho   *** control ***
@asho此檔案主要是控制套件的相依性,比如安裝和編譯的時候所需要的軟體,其次的是軟體資訊
@asho當我們使用apt-cache的時候,是會從control這個檔案中取出資料
@asho以下是 control 檔案的內容:
@ashohttp://gallery.debian.org.tw/IRCConf_20030913/irc_pic_08
@asho讓我們一行一行地解釋control的格式吧
@ashoSource: <pkg-name> # 套件的 source code 名稱
@ashoSection: <section-name> # 將此套件放在那個分類
@asho* base
@asho# x11
@asho# devel
@asho# doc
@asho# mail
@asho# lib
@asho# net
@asho# system
@asho# text
@asho    * game
@asho 其他相關的section可以在aptitude中找到,至於main/contrib/non-free這三種分類可以省略
@ashoPriority:
@asho* required:Debian系統不能缺少的軟體,否則系統會無法運作,如dpkg,base-files
@asho* important:被定義成 important 的軟體指的是一般 Unix-Like 的作業系統上常常看到的,比如簡單的editor:ed,或是定時工作的 cron,移除這些軟體並不影響系統工作
@asho* standard:一些基本功能的軟體,如ftp
@asho* optional
@asho* extra
@asho 上面的required,important,standard在第一次安裝 Debian 的時候皆會安裝在系統內
@ashoMaintainer: <Name> <E-Mail> # <Name> 請用英文全名
@ashoBuild-Depends:
@asho<pkgname-1> (version) , pkgname-2 # 括號中是版本的比較,比如 debhelper (>> 3.0.0),表示debhelper的版本要比3.0來的新,如果不清楚此套件需要哪些package的話,可以透過以下指令來找尋:
@ashohttp://gallery.debian.org.tw/IRCConf_20030913/irc_pic_09
@ashoStandards-Version: <version> # Debian policy 的版本
@ashoPackage: <pkg-name> #編譯之後產生的套件名稱
@ashoArchitecture: <arch> # 對那一平台編譯,i386/PPC/ALPHA等,但此欄位請填入any,因為dpkg-gencontrol會依照機器型態幫我們填好該值。
@ashoDependency:Debian在處理套件的dependency就在於此欄位的設定,以下是dependency的關係式
@asho* Depends:安裝該套件前所必須先安裝的套件
@asho* Recommends/Suggests:Debian是一個以精簡為特性的系統,所以軟體會被拆成
@asho   1. 必要:該套件必須要有這些軟體才能正常啟動,通常是library之類的
@asho   2. 推薦:安裝此區的軟體能讓原本的套件功能更完整,有可能是額外的module或codec,並不完全地需要
@asho   3. 建議:而此區的軟體通常是另外的套件,與原套件通常有相同性質的軟體,比如gqview建議安裝gimp,而gimp除了看圖之外,還可以編輯圖像
@asho* Pre-Depends:同 Depends 但不只要安裝外,還必須將 Pre-Depends 的套件設定好
@asho* Conflicts:此區的套件與所要安裝的套件相衝突,必須先移除掉才可以安裝新的套件
@asho* Provides:此區通常是一些 virtual package,本身並沒有實體檔案,但卻提供多個版本或不同名字但同性質的軟體,比如 c-compiler,並沒有 c-compiler 這個套件,但 apt 會告訴你有哪些可以安裝
@ashohttp://gallery.debian.org.tw/IRCConf_20030913/irc_pic_10
@asho* Replaces:此區的套件與原本的套件是屬於相同性質的,但安裝此區的套件會將原本的套件被替換掉,比如 vim-gtk 和 vim-perl,兩者皆為 vim 的視窗介面但不能共存,如果先安裝了 vim-gtk,想再安裝 vim-perl 的話,那 vim-gtk 便會被替換掉,通常 Replaces 會與 Conflicts 一起使用
@asho上面的關係運算子有下列這幾種:
@asho1. <<
@asho2. <=
@asho3. =
@asho4. >=
@asho5. >>
@ashoDescription:<insert up to 60 chars description> # 一些軟體的敘述
@ashohmm...
@asho插花一下
@asho上面的822-date部份,也可以用 date -R
@asho以上由AndrewLee兄熱情提供
@asho   *** copyright ***
@asho此檔案是敘述該套件是以什麼樣的版權發行,比如GPL/BSD/LGPL等,dh_make會製作出一個樣本,直接修改內容便可
@ashohttp://gallery.debian.org.tw/IRCConf_20030913/irc_pic_11
@asho   *** rules ***
@asho此檔案是一個命令稿(script),藉由 debhelper 中的 tools 來建立 deb,檢視該檔案便可以發現有點類似 Makefile ,rules 中有數個 action target,rules的內容及格式如下:
@ashohttp://gallery.debian.org.tw/IRCConf_20030913/irc_pic_12
@asho而最需要注意的是 dh_xxx 這些檔案,只要安裝了 debhelper 之後就可以看到
@asho這些檔案是建立 deb 過程中的大功臣
@asho所以在 rules 的 install target 中,都會看到許多 dh 開頭的指令,在建立的過程中
@ashodebian目錄下會產生一個暫存目錄(通常為以pkg-name為名稱),在此範例為gv4l,用來當作 '/',下表是列出常用的指令
@asho   1. dh_testdir:檢查目前是否為該 source 的跟目錄
@asho   2. dh_testroot:檢查是否有 root 權限,一般user可以執行fakeroot或編譯時改成 dpkg-buildpackage -rfakeroot
@asho   3. dh_installman:拷貝manual files到debian目錄下的暫存目錄等待打包
@asho   4. dh_compress:壓縮軟體的文件檔
@asho   5. dh_gencontrol:拷貝 control 到 debian/gv4l/DEBIAN
@asho   6. dh_shlibdeps:calculates shared libraries dependencies of the libraries and executables
-!- bozilla [~www-data@linux4.cc.ntu.edu.tw] has joined #debian.tw
@asho   7.dh_md5sums:產生所有檔案的 md5sum 並拷貝到 debian/gv4l/DEBIAN
@asho   8. dh_installdeb:拷貝 Maintainer scripts 到 debian/gv4l/DEBIAN
@asho   9. dh_install:先在 debian 目錄下建立一個 gv4l.install,此檔案是紀錄編譯好的檔案路徑,之後dh_install會由gv4l.install的內容拷貝到適當的位置並打包成deb
@asho還有許多dh_install*開頭的指令,用途都稍微不同,可以自行查閱 manual
@asho除了上述命令之外,其餘指令可以自行查manual,而補充一點的是目前的 stable(woody)中的debhelper-4.0並不使用 dh_install
@asho而是用 dh_movefiles,testing/unstable的debhelper-4.1以上都改用 dh_install了,所以在製作woody的backport時要特別注意這兩者的差異
@asho   *** 其他檔案 ***
@asho在 debian 目錄下除了上面所介紹的檔案之外,還有一些附加檔,這些檔案可有可無,我們還是看一下。
@asho   1. README.Debian:Maintainer對Debian系統編譯的README檔,通常是描述編譯的情況或額外的修正皆在此檔案,與原軟體的README有所出入。
@asho   2. conffiles.ex:是否記得升級一些軟體時,會詢問是否要復蓋或保留設定檔呢?conffiles.ex就是這個功能,只要將更新的設定檔或其他一行一個檔案寫在 conffiles.ex就可以了,以下表示未來升級 gv4l 的同時,會詢問是否要復蓋 gv4l.conf 這個設定檔
@ashohttp://gallery.debian.org.tw/IRCConf_20030913/irc_pic_13
@asho# cron.d.ex:如果該軟體需要搭配 cron 的話,可以在這個檔案中加入 cron job,格式與編寫 cron 檔是一樣的
-!- bozilla [~www-data@linux4.cc.ntu.edu.tw] has left #debian.tw [bozilla]
@asho   4. docs:如果要加入額外的說明檔,請在此檔案中一行一行的加入,並透過 dh_installdocs 進行安裝,注意一下檔案的路經,其跟目錄以該 source code 的 Top Level開始
@asho   5. init.d.ex:如果該套件是一個 daemon,那請將 init script 改成此檔名
@asho   6. menu.ex:Debian上的Window Manager都會另外設計一個軟體選單,但軟體本身必須要提供 menu 檔案並透過 update-menus 產生該軟體選單
@ashomenu的格式可以參考 http://moto.debian.org.tw/viewtopic.php?t=1896
@asho   7. postinst.ex/postrm.ex/preinst.ex/prerm.ex:Maintainer scripts,安裝,移除套件後的後續或前續動作可以寫在這邊,比如我們移除或安裝一個 daemon 的軟體之前,要先停止該 daemon,而這個動作應該是套件管理程式要自動處理,所以我們必須寫好停止該 daemon 的動作在 preinst.ex 之中,更多的資訊可以在 debian-policy 這個套件之中
@asho   *** 再來一次 ***
@asho閱讀了上面所寫的資料之後,想必對 Debian 的套件包裝有一定的了解,所以我們重來一次完整的步驟,把上面的設定檔仔細調校,準備 submit 吧...:-D
@ashochangelog
@ashohttp://gallery.debian.org.tw/IRCConf_20030913/irc_pic_14
@ashocontrol
@ashohttp://gallery.debian.org.tw/IRCConf_20030913/irc_pic_15
@ashocopyright
@ashohttp://gallery.debian.org.tw/IRCConf_20030913/irc_pic_16
@ashohttp://gallery.debian.org.tw/IRCConf_20030913/irc_pic_17
@asho  ** checkinstall **
@asho看了上面的方法之後,是否有點頭昏眼花呢?不管結果是眼花撩亂或是耳聰目明,或許會自問:『只是想本機使用而不管維護或給別人使用的話,是否有什麼更簡單的辦法?』,有的,就是本節要介紹的:checkinstall。
@ashocheckinstall這套軟體的功能是方便我們製作出套件
@asho比如 Redhat:rpm,Debian:deb,Slackware:tgz
@asho只要軟體的source code有Makefile的情況下,checkinstall就能夠建立不同系統的二進位元檔,也就是rpm/deb/tgz等。
@ashoTesting/Unstable的朋友可以直接用apt-get install checkinstall來安裝
@ashostable目前並沒有納入checkinstall,如要安裝可以抓回Testing中的sourc
@asho然後依照 "with debian dir" 這一節來進行來製作deb。
@asho   *** 流程 ***
@asho一般編譯軟體的過程大致是三大步驟:
@asho   1. ./configure
@asho   2. make
@asho   3. make install
@asho那checkinstall要怎麼跟以上做對應或是有什麼相似的地方呢?
@asho我們將上面的方法改寫一下,就變成了checkinstall的使用步驟了...
@asho   1. ./configure
@asho   2. make
@asho   3. checkinstall
@asho應該看的出來吧,只要將最後的make install改成checkinstall就可以了,因為checkinstall會依著Makefile進行追蹤,以紀錄檔案的位置,最後會詢問要產生那一種的二進位元檔。
@asho   *** 範例 ***
@asho我們就拿之前所用的 gv4l 來實作吧
@asho同樣地,我們採取傳統編譯軟體的方式:
@asho   1. ./configure
@asho   2. make
@asho到了最後一步,我們執行 checkinstall
@ashohttp://gallery.debian.org.tw/IRCConf_20030913/irc_pic_18
-!- informer_ [~chatzilla@61-229-218-73.HINET-IP.hinet.net] has quit [ChatZilla 0.8.34 [Mozilla rv:1.5a/0]]
@asho這個畫面是詢問是否要建立該軟體的文件備份,由於一般軟體在Makefile中就會指定好文件的位置,我們無須再建立另一份新的,所以這邊我們選 'n'
@ashohttp://gallery.debian.org.tw/IRCConf_20030913/irc_pic_19
@ashohttp://gallery.debian.org.tw/IRCConf_20030913/irc_pic_20
@asho最後當然是直接選 'D'摟,因為我們的系統是 Debian...:-)
@ashohttp://gallery.debian.org.tw/IRCConf_20030913/irc_pic_21
@asho上圖可以增加所要修改的資訊,比如我選'0'來更改 Maintainer 的 E-Mail,修改好相關資訊之後,直接按下'enter'。
@ashohttp://gallery.debian.org.tw/IRCConf_20030913/irc_pic_22
@asho這樣就完成了 gv4l 的deb打包以及安裝了,透過 checkinstall,便能將繁雜的 dh_make + 修改 rules/changelog/control 等步驟都省下來了,是不是很讚呢...:-)
@asho如果有興趣更深入了解checkinstall,可以自行執行:checkinstall -h
@asho乎...終於結束了....
@asho以上就是deb製作的基本認識與概念
@asho後來的 maintain package部份,可以善用 debchange來維護該套件
@asho以上過程的部份講解的不好
-!- mode/#debian.tw [-m] by jesse_
@asho還請各位包涵並指正阿信...讓我有在學習的機會
@asho謝謝各位....
@asho下台一鞠躬 :-D
kanru啪啪..啪啪.啪.啪.啪...
@jesse_我有問題!
@chihchun
@chihchun我回來了
@ashojesse_: ><....請說...
BBNSasho:辛苦囉:)
louie精采
@chihchunAndrewLee! 積單尼的 email 是甚麼
@ashochihchun:偷跑出去@@
pwchi啪啪啪啪
flyhermit辛苦了
kanru好阿~!!
@jesse_asho: version number 中有時會有 ":" 有什麼特別的意思嗎?
@chihchunasho: sorry, 剛剛在路上看到可愛美眉忘了時間
@chihchunjesse_: good question
@ashojesse_:等一下窩...頭昏昏的...
pwchi記得存檔 post 到 網站阿!:)
@chihchunpwchi: sure, 包含現在的討論
pwchichihchun: good job!
flyhermit請問一下會post在哪呢? (其實我也有存耶)
@ashojesse_:在那個部份呢?
@jesse_asho: version number
tumii辛苦了
@jesse_一下好像找不到例子.. :P
@ashojesse_:能否舉例子說明...小弟不太懂呢...是有些package以:嗎?
paulliu積丹尼?? jidanni@jidanni.org 吧
@jesse_chihchun: 幫忙舉個例子吧?
paulliu他的網頁也在那
@jesse_有了!
@jesse_asho: http://packages.debian.org/cgi-bin/search_packages.pl?keywords=gcc&searchon=names&subword=1&version=unstable&release=all
@ashojesse_:糟糕...是這種 gcc 3:3.3-1
@jesse_asho: 是的
@ashohmm...老實說...我不太清楚...甚至是漏掉了...不好意思,能請知道的朋友回答嗎?
-!- bozilla [~www-data@linux4.cc.ntu.edu.tw] has joined #debian.tw
AndrewLeehttp://bugs.debian.org/cgi-bin/pkgreport.cgi?which=submitter&data=jidanni%40jidanni.org&archive=no
-bozilla:#debian.tw- 150: http://bugs.debian.org/cgi-bin/pkgreport.cgi?which=submitter&data=jidanni%40jidanni.org&archive=no from AndrewLee
@chihchun150:|恭喜積丹尼榮登 bug report 王寶座
-bozilla:#debian.tw- titled item 150
AndrewLeehttp://www.jidanni.org/comp/bugs.html
-bozilla:#debian.tw- 151: http://www.jidanni.org/comp/bugs.html from AndrewLee
tumii據說今天晚上有播出他的訪問...
tumiihttp://www.settv.net/taiwan/twd013/sat920909.htm
-bozilla:#debian.tw- 152: http://www.settv.net/taiwan/twd013/sat920909.htm from tumii
@chihchun150:http://www.jidanni.org/comp/bugs.html
-bozilla:#debian.tw- commented item 150
@ashojesse_:查詢到了...
tumii半夜兩點還會播一次...三立台灣台
@chihchun152:|電火條機密檔案 用電火條做地圖
-bozilla:#debian.tw- titled item 152
@jesse_asho: /
@jesse_asho: ?
@ashojesse_: hihi... 我有查詢到該意義,現在正想怎麼解釋
* chihchun 洗耳恭聽
-!- kanru [~kanru@61-231-216-71.HINET-IP.hinet.net] has quit [BitchX: the cootiless client]
@ashohmm...我試著說說看
@asho這個冒號代表著該軟體是第幾個 "世代"...
@asho比如說,我們看一下testing中的gcc
@asho他的版本編號是 3:3.3-1
@chihchunasho: 有 reference url ?
@asho第一個3是代表 minor version ,也就是第三版的gcc
@ashomaybe can check up the debian-policy...
tumii152: 據說今天晚上有播出他的訪問...
-bozilla:#debian.tw- commented item 152
@asho然後第二個3.3就是指upstream的版本
tumii152: 半夜兩點還會播一次...三立台灣台
-bozilla:#debian.tw- commented item 152
@asho接下來看一下 gcc-3.3這個package
@asho他的版本是 1:3.3.1
@asho1就是gcc3的第一代...或稱為 epoch 1
@asho我找一下 reference
-!- cserustic [~chatzilla@218-172-162-222.HINET-IP.hinet.net] has quit []
@ashohttp://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version
-bozilla:#debian.tw- 153: http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version from asho
-!- cschiu [James@dsnspc153.csie.nctu.edu.tw] has quit []
@jesse_err....
@jesse_好像應該先來感謝一下 asho
@jesse_asho: 多謝啦!!
pwchiasho: 讚!
@ashojesse_: 先謝過...講不清楚本應受罰,以免誤導大家
@chihchunasho: 讚
BBNSasho: 做的好:)
BBNSasho: 有DD的風範 :D
@ashochihchun pwchi jesse_ BBNS: thanks guys
louie感溫啦
@jesse_asho: 好像有點看懂了...
* AndrewLee 要再去跟 2.4.22 + ck2 戰鬥了
@asholouie: louie!!!!!
flyhermitasho: 讚
-!- mode/#debian.tw [+ooo csardas tumii AndrewLee] by jesse_
-!- mode/#debian.tw [+oo AceLan BBNS] by jesse_
@AndrewLeeasho: Thank you.
-!- mode/#debian.tw [+o cnoize2] by jesse_
-!- AndrewLee [~andrew@u50-250.u203-204.giga.net.tw] has quit [leaving]
@ashoflyhermit: thanks
pwchi一個一個說,不如大家要起立鼓掌吧....:D
@jesse_:D
@ashoAndrewLee: you're welcome
pwchiasho: 可惜看不到。
* louie 起立鼓掌
@ashopwchi:小弟會害羞...@@
* BBNS YOYO ASHO !! ㄟ( ̄▽ ̄)ㄟ~(? ̄▽ ̄) !! ASHO YOYO
pwchi哇,一時之間擠滿上萬人的會議室,頓時掌聲雷動阿!..pa..pa..pa.....
@asho壩鬥夭...要去吃飯了,謝謝各位今天的朋場...^_^***
@chihchun還沒吃飯呀 @_@
sbc_真了不起
@jesse_asho: 感謝感謝!!
sbc_真了不起!
@asho先下去吃飯了,各位晚安...:-D
-!- asho [~asho@61-231-241-103.HINET-IP.hinet.net] has quit [Client exiting]
pwchi散會啦.
@BBNS真的是神龍見頭不見尾 ~

Generated by irclog2html.pl 2.1 by Jeff Waugh - find it at freshmeat.net!