自行重新編譯官方/非官方 deb 套件 -- 以 libqt3

常言道:『飲水思源』,在 Open Source 的世界裡,我們常常需要別人的幫助,但是在您有所心得的時候請記得分享給大家,『幫助人是快樂的喔』。歡迎您在使用 debian 的過程中的任何心得分享給大家。

自行重新編譯官方/非官方 deb 套件 -- 以 libqt3

文章octapult » 週六 1月 04, 2003 3:55 pm

大家應該都有遇過 "安裝了某個套件,結果卻發現缺少了某個功能。在檢查說明檔的時候,才知道套件維護者在製作 deb 檔案的時候,將某個選項給關閉了,並且建議使用者如果需要使用這個功能的話,可以自行下載原始檔回來製作 deb 檔案。" 的這個窘境吧。由於 KDE 官方提供的 libqt3 套件預設是將 xft 給關閉的,而 Debian 官方 testing 裡面的 libqt3 版本過舊 (3.0.5-3),unstable 裡面的 libqt3 則是過新又不穩定 (3.1.1+cvs.20021220-1),兩者都不適用於 KDE 3.0.5a,所以底下弟將以自行製作 libqt3 這個套件為範例,教導各位如何重新編譯 deb 檔案。首先我們假設我們的工作目錄為 /tmp。

1. 由於 libqt3 的下載位址在 http://download.uk.kde.org/pub/kde/stab ... ian/woody/,所以我們必須在 /etc/apt/sources.list 裡面加入下面這一行,才能夠由這個網址下載製作 deb 的原始檔:
代碼: 選擇全部
deb-src http://download.uk.kde.org/pub/kde/stable/3.0.5a/Debian/woody ./

2. 接下來就是下載原始檔囉:
代碼: 選擇全部
apt-get source libqt3

系統會自動下載 qt-x11-free_3.0.5-4.diff.gz、qt-x11-free_3.0.5-4.dsc、qt-x11-free_3.0.5-4.orig.tar.gz 這三個檔案,然後自動將 qt-x11-free_3.0.5-4.orig.tar.gz 這個檔案給解壓縮到 /tmp/qt-x11-free-3.0.5 這個子目錄底下。

3. 編譯原始檔的過程常常會用到一些我們沒有安裝在系統裡的套件,而編譯 libqt3 所需要用到的套件,其實我們可以在 qt-x11-free_3.0.5-4.dsc 這個檔案裡面找到。不過 apt-get 提供了一個很簡便的方法幫助我們補齊相關的套件,我們就不必一個一個自己裝了:
代碼: 選擇全部
apt-get build-dep libqt3

接著系統就會自動幫我們補齊編譯 libqt3 將會使用到的套件,例如 unixodbc-dev、ibmysqlclient10-dev、postgresql-dev...等套件。

4. 接著請進入 /tmp/qt-x11-free-3.0.5 這個目錄裡:
代碼: 選擇全部
cd /tmp/qt-x11-free-3.0.5


5. 接下來請執行 dch -i,將我們所要編譯的 deb 套件增加一個版次。如果我們不做這個動作的話,我們在安裝好我們自己編譯好的 deb 檔案以後,又執行 apt-get upgrade 的話,系統會自動以 apt repository 的 deb 套件覆蓋過去,也就是系統將會以 http://download.uk.kde.org/pub/kde/stab ... bian/woody 下載回來的 libqt3_3.0.5-4.deb,覆蓋掉我們辛苦編譯好的 libqt3_3.0.5-4.deb。所以請執行:
代碼: 選擇全部
dch -i

其實執行這個指令等於是進入 vi 裡面去修改 /tmp/qt-x11-free-3.0.5/debian/changelog 這個檔案,在裡面增加一個版次。所以您會發現執行了這個指令以後,您已經在 vi 裡面、正在修改 debian/changelog 這個檔案。接下來請按 i 鍵進入 vi 的 insert-mode,在星號的後面加入一些簡單的說明,接著按 ESC 退出到 command-mode,再按 : 鍵,接著輸入 wq,就會儲存檔案並退出 vi 了:
代碼: 選擇全部
qt-x11-free (2:3.0.5-5) unstable; urgency=low

  * Qt-3.0.5 with xft support (recompiled by oct 2003/01/03)

 -- root <root@debian>  Fri,  3 Jan 2003 22:14:04 +0800

qt-x11-free (2:3.0.5-4) unstable; urgency=low

  * Qt-3.0.5 backport to Debian GNU/Linux 3.0 (Woody)

 -- Ralf Nolden <nolden@kde.org>  Sun, 6 Oct 2002 12:50:00 +0200

qt-x11-free (2:3.0.5-3) unstable; urgency=low

  * Sometimes our buildds do strange things (Closes: #155258)
  * debian/rules: added shlibdeps-path for libqt3-mt.
  * debian/rules: libqt3-mysql, libqt3-odbc and libqt3-psql contain the
    unthreaded plugins now (Closes: #152022)

 -- Martin Loschwitz <madkiss@madkiss.org>  Thu, 9 Aug 2002 22:18:00 +0200

...................................

執行完 dch -i 以後,您就會發現 changelog 已經增加了一個版次為 3.0.5-5 了,這樣我們編譯完成的 libqt3 將會是 3.0.5-5 版。

6. 接下來就是打開 libqt3 的 xft 選項了。請用文字編輯器打開 debian/rules (其實是 /tmp/qt-x11-free-3.0.5/debian/rules,底下我們都以 debian/rules 稱之) 這個檔案,以搜尋的功能找到 -no-xft 這個地方,然後將 -no-xft 給刪掉,然後將檔案儲存起來。

7. 接下來就是編譯我們的 libqt3 套件囉,請執行:
代碼: 選擇全部
debian/rules binary

編譯過程大概要一個小時吧 (cpu 為 AMD Atholon XP 1700+)...

8. 編譯完成以後,會在 /tmp 底下產生下面幾個檔案:
代碼: 選擇全部
libqt3_3.0.5-5_i386.deb
libqt3-dev_3.0.5-5_i386.deb
libqt3-mt_3.0.5-5_i386.deb
libqt3-mt-dev_3.0.5-5_i386.deb
libqt3-mt-mysql_3.0.5-5_i386.deb
libqt3-mt-odbc_3.0.5-5_i386.deb
libqt3-mt-psql_3.0.5-5_i386.deb
libqt3-mysql_3.0.5-5_i386.deb
libqt3-odbc_3.0.5-5_i386.deb
libqt3-psql_3.0.5-5_i386.deb
libqxt0_3.0.5-5_i386.deb
qt3-doc_3.0.5-5_all.deb
qt3-tools_3.0.5-5_i386.deb

平常我們使用 KDE 3.0.5a 的話,只需要安裝 libqt3、libqt3-mt、libqxt0 和 qt3-tools 就可以了,如果您有在編譯 qt3 的應用程式的話,您必須加裝 libqt3-dev 和 libqt3-mt-dev 這兩個套件:
代碼: 選擇全部
dpkg -i libqt3_3.0.5-5_i386.deb libqt3-dev_3.0.5-5_i386.deb libqt3-mt_3.0.5-5_i386.deb libqt3-mt-dev_3.0.5-5_i386.deb libqxt0_3.0.5-5_i386.deb qt3-tools_3.0.5-5_i386.deb

libqt3_3.0.5-5_i386.deb 和 libqt3-mt_3.0.5-5_i386.deb 必須在同一個 dpkg -i 指令裡安裝,才不會出現相依性的問題而不能安裝。

OK,這就完成了所有的步驟,您可以再執行一次 apt-get upgrade,就會發現系統不再以系統內定的 deb 來取代我們自己編譯的 deb 了 :-)

後記:大家在安裝好自己編譯的 deb 套件以後,可能想要將之前經由 apt-get build-deb libqt3 所安裝的一些不常用的套件給移除掉,可惜的是弟找不到比較簡便的方法來移除掉這些套件,所以只好依據 qt-x11-free-3.0.5-4.dsc 這個檔案的內容,自己一個一個移除了 :-(
octapult
摩托學園!學園長們
摩托學園!學園長們
 
文章: 512
註冊時間: 週六 9月 07, 2002 10:30 pm
來自: Seyda Neen, Morrowind

re:自行重新編譯官方/非官方 deb 套件 -- 以 libqt3

文章louie » 週六 1月 04, 2003 6:21 pm

可試試 debfoster, 她可將自己選好不留在系統上的 packages 給
移除
louie
快樂的大學生
快樂的大學生
 
文章: 593
註冊時間: 週一 9月 09, 2002 7:58 pm

re:自行重新編譯官方/非官方 deb 套件 -- 以 libqt3

文章阿信 » 週六 1月 04, 2003 6:39 pm

aptitude也是可以的,只是option要設定一下,aptitude可以紀錄連帶要安裝的package記錄下來,等下次要移除某package的時候,會一併移除掉。
頭像
阿信
版面大總管
版面大總管
 
文章: 4756
註冊時間: 週二 9月 03, 2002 11:58 pm
來自: 台灣 - 嘉義

re:自行重新編譯官方/非官方 deb 套件 -- 以 libqt3

文章dreamcryer » 週六 11月 15, 2003 7:49 pm

我想照著這篇去編譯自己的libqt3
不過因為kde已經出到3.1.4
又他把source, Source.gz等檔改了位置
所以source.list裡面的路徑似乎要變成
代碼: 選擇全部
deb-src ftp://download.uk.kde.org/pub/kde/stable/3.1.4/Debian/dists/woody/main/source

不過這樣子我下了apt-get source libqt3會有東西抓不到
代碼: 選擇全部
讀取套件清單中...
了解套件依存關係中...
需要下載 16.1MB 的原始檔案。
讀取:1 ftp://download.uk.kde.org ./ qt-x11-free 3:3.1.2-0woody1 (dsc) [1159B]
 錯誤 ftp://download.uk.kde.org ./ qt-x11-free 3:3.1.2-0woody1 (dsc)
  Unable to fetch file, server said 'Can't open /pub/kde/stable/3.1.4/Debian/dists/woody/main/source/pool/main/q/qt-x11-free/qt-x11-free_3.1.2-0woody1.dsc: No such file or directory  '
讀取:2 ftp://download.uk.kde.org ./ qt-x11-free 3:3.1.2-0woody1 (tar) [16.0MB]
錯誤 ftp://download.uk.kde.org ./ qt-x11-free 3:3.1.2-0woody1 (tar)
  Unable to fetch file, server said 'Can't open [color=orange]/pub/kde/stable/3.1.4/Debian/dists/woody/main/source/pool/main/q/qt-x11-free/[/color]qt-x11-free_3.1.2.orig.tar.gz: No such file or directory  '
讀取:3 ftp://download.uk.kde.org ./ qt-x11-free 3:3.1.2-0woody1 (diff) [66.9kB]
錯誤 ftp://download.uk.kde.org ./ qt-x11-free 3:3.1.2-0woody1 (diff)
  Unable to fetch file, server said 'Can't open /pub/kde/stable/3.1.4/Debian/dists/woody/main/source/pool/main/q/qt-x11-free/qt-x11-free_3.1.2-0woody1.diff.gz: No such file or directory  '

我找了一下
發現pool目錄存在於....../3.1.4/Debian/pool/
請問這是kde網站的問題嗎?
dreamcryer
可愛的小學生
可愛的小學生
 
文章: 40
註冊時間: 週六 8月 16, 2003 10:55 pm

re:自行重新編譯官方/非官方 deb 套件 -- 以 libqt3

文章阿信 » 週六 11月 15, 2003 11:08 pm

please add the sources.list below

deb-src ftp://download.uk.kde.org/pub/kde/stable/3.1.4/Debian/ stable main
頭像
阿信
版面大總管
版面大總管
 
文章: 4756
註冊時間: 週二 9月 03, 2002 11:58 pm
來自: 台灣 - 嘉義

re:自行重新編譯官方/非官方 deb 套件 -- 以 libqt3

文章dreamcryer » 週日 11月 16, 2003 1:34 am

原來是這樣子@@
謝謝阿信兄!
dreamcryer
可愛的小學生
可愛的小學生
 
文章: 40
註冊時間: 週六 8月 16, 2003 10:55 pm


回到 share

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客