2011年4月13日 星期三

使用 Ubuntu 套件的原始碼版本管理庫

以 language-selector 為例,並且參考先前的介紹來建立 Shared repository

$ bzr init-repo language-selector
$ cd language-selector
一般來說,想要拿到 Ubuntu 上面的最新開發中的版本,可以使用:
$ bzr branch lp:ubuntu/language-selector trunk
如果想要拿到 Ubuntu maverick 上面的開發版本就應該使用:
$ bzr branch lp:ubuntu/maverick/language-selector maverick
如果想要知道目前 Ubuntu 上面有哪些官方的開發版本的話可以使用 devscripts 套件中的 rmadison 來查詢
$ rmadison language-selector
language-selector |     0.1.20 |        dapper | source, all                    
language-selector |   0.1.20.1 | dapper-updates | source, all                   
language-selector |      0.3.4 |         hardy | source, all                    
language-selector |     0.4.18 |        karmic | source, all                    
language-selector |      0.5.7 |         lucid | source, all                    
language-selector |      0.5.8 | lucid-updates | source, all                    
language-selector | 0.5.8+langfixes~lucid1 | lucid-backports | source, all      
language-selector |      0.6.6 |      maverick | source, all                    
language-selector | 0.6.6+langfixes~maverick1 | maverick-backports | source, all
language-selector |       0.31 |         natty | source, all                    
假設想要使用 maverick-backports 當中的版本就可以使用:
$ bzr branch lp:ubuntu/maverick-backports/language-selector maverick-backports

另外,除了可以使用 `bzr branch` 之外,還可以使用 `bzr checkout` 來取得原始碼。
使用 `bzr branch` 在 `bzr commit` 後,還要再使用 `bzr push` 來將變動的部份提交到遠端的 Bazaar Repository 上面;
而使用 `bzr checkout` 的話,在 `bzr commit` 的同時就會自動提交到遠端的 Bazaar Repository 上。
無論是使用 `bzr branch` 還是 `bzr checkout` 都會將完整的變動歷史資料下載到本地端,如果想要像 Subversion 那樣只會取得最新的一筆資料可以使用 `bzr checkout --lightweight` 來取得原始碼。

想要知道目前處於哪一種模式 (branch/checkout/lightweight-checkout) 可以在該目錄下面執行

$ bzr info
如果是 lightwieght checkout 的話,應該會看到 `light checkout root`
如果是 checkout 的話,應該會看到 `repository checkout root`
如果上面兩個都沒有看到的話應該就是 branch 了

最後,如果想要在 branch 與 checkout 之間切換的話,就要使用 `bzr bind/unbind`

參考資料:
http://wiki.inkscape.org/wiki/index.php/Working_with_Bazaar
https://wiki.ubuntu.com/DistributedDevelopment/Documentation/GettingTheSource

2011年3月25日 星期五

加入 GnuPG 的信任簽章進自己的金鑰圈裡

在 Debian: 17 years of Free Software,"do-ocracy", and democracy 活動當中
跟現在的 Debian 計畫主持人 Stefano Zacchiroli 交換了金鑰指紋
後來收到了 zack 寄來的信件,如果沒有弄錯,應該也是使用之前提到的 caff 來弄的
因為我的 GnuPG 金鑰上面列了六個 Email 地址,所以我也收到了六封信件裡的附加檔案

0xE9EC46F5A547F31E.1.signed-by-0xD5CA9B04F2C423BC.asc
0xE9EC46F5A547F31E.2.signed-by-0xD5CA9B04F2C423BC.asc
0xE9EC46F5A547F31E.3.signed-by-0xD5CA9B04F2C423BC.asc
0xE9EC46F5A547F31E.4.signed-by-0xD5CA9B04F2C423BC.asc
0xE9EC46F5A547F31E.5.signed-by-0xD5CA9B04F2C423BC.asc
0xE9EC46F5A547F31E.6.signed-by-0xD5CA9B04F2C423BC.asc
然後下載 zack 的公鑰
$ gpg --recv-keys D5CA9B04F2C423BC
接者檢查 zack 的指紋是否跟我當天跟他交換的一致
$ gpg --fingerprint D5CA9B04F2C423BC
pub   1024D/F2C423BC 2000-03-06
      金鑰指紋 = 8156 FBF9 3EC1 D872 722D  3632 D5CA 9B04 F2C4 23BC
uid                  Stefano Zacchiroli <zack@upsilon.cc>
uid                  Stefano Zacchiroli <zack@debian.org>
uid                  Stefano Zacchiroli <zack@cs.unibo.it>
uid                  Stefano Zacchiroli <zack@pps.jussieu.fr>
sub   4096g/E5B57D13 2008-07-19
確認一致後就可以將 zack 對我的信任簽章加進自己的金鑰圈裡面
$ gpg --import < 0xE9EC46F5A547F31E.1.signed-by-0xD5CA9B04F2C423BC.asc
$ gpg --import < 0xE9EC46F5A547F31E.2.signed-by-0xD5CA9B04F2C423BC.asc
$ gpg --import < 0xE9EC46F5A547F31E.3.signed-by-0xD5CA9B04F2C423BC.asc
$ gpg --import < 0xE9EC46F5A547F31E.4.signed-by-0xD5CA9B04F2C423BC.asc
$ gpg --import < 0xE9EC46F5A547F31E.5.signed-by-0xD5CA9B04F2C423BC.asc
$ gpg --import < 0xE9EC46F5A547F31E.6.signed-by-0xD5CA9B04F2C423BC.asc
然後將 zack 對我的信任簽章上傳到金鑰伺服器 (讓其它人知道我的最新狀況)
$ gpg --send-keys E9EC46F5A547F31E

另外在這次有用到指令,但不是必要的指令:

同步金鑰伺服器上的金鑰 (不然就不會知道其它人金鑰狀態的最新狀況)

$ gpg --refresh-keys
然後查看自己目前的信任圈的狀態
$ gpg --list-sigs E9EC46F5A547F31E

P.S. E9EC46F5A547F31E 是四元的金鑰指紋 D5CA9B04F2C423BC 是 zack 的金鑰指紋,使用時要自己代換成其它金鑰指紋,不可照抄執行。

參考資料:http://wiki.debian.org.tw/index.php/GnuPG

2011年3月23日 星期三

給 Ubuntu 10.04/10.10 使用的 LibreOffice PPA

LibreOffice 已經出來一段時間了~ :P

PPA 的位置在 ppa:libreoffice/ppa 可以在軟體來源的其它軟體加上
然後更新系統安裝 libreoffice 跟 libreoffice-l10n-zh-tw

或是使用終端機介面輸入
sudo add-apt-repository ppa:libreoffice/ppa
sudo apt-get update
sudo apt-get install libreoffice libreoffice-l10n-zh-tw

如果是 GNOME 使用者可以再安裝 libreoffice-gnome
sudo apt-get install libreoffice-gnome

如果是 KDE 使用者可以再安裝 libreoffice-kde
sudo apt-get install libreoffice-kde

給 Ubuntu 10.04/10.10 使用的 Firefox 5.0 PPA

Firefox 5.0 出來啦~ Ubuntu 10.04/10.10 的使用者有 PPA 可以用喔~

PPA 的位置在 ppa:mozillateam/firefox-stable 可以在軟體來源的其它軟體加上然後更新系統

或是使用終端機介面輸入
sudo add-apt-repository ppa:mozillateam/firefox-stable
sudo apt-get update && sudo apt-get upgrade

中文語言包也被 ppa:mozillateam/firefox-stable 包進去了,直接更新就可以使用了。

2011年3月21日 星期一

使用 Automake 的 silent-rules 來簡化編譯過程的輸出訊息

使用前
ubuntu@maverick:~/hello$ make
make  all-am
make[1]: Entering directory `/home/ubuntu/hello'
gcc -DHAVE_CONFIG_H -I.     -g -O2 -MT hello.o -MD -MP -MF .deps/hello.Tpo -c -o hello.o hello.c
mv -f .deps/hello.Tpo .deps/hello.Po
gcc  -g -O2   -o hello hello.o  
make[1]: Leaving directory `/home/ubuntu/hello'
使用後
ubuntu@maverick:~/hello$ make
make  all-am
make[1]: Entering directory `/home/ubuntu/hello'
  CC     hello.o
  CCLD   hello
make[1]: Leaving directory `/home/ubuntu/hello'
使用方法,修改 configure.ac 加入 silent-rules
...
AM_INIT_AUTOMAKE([silent-rules])
...
然後在編譯前的設定執行
./configure --enable-silent-rules
或是預設打開 silent-rules
...
AM_INIT_AUTOMAKE
AM_SILENT_RULES([yes])
...
P.S. 此時可以省略掉 AM_INIT_AUTOMAKE 裡面的 silent-rules 選項
參考資料 http://www.gnu.org/software/hello/manual/automake/Options.html

2011年3月18日 星期五

Debian local archives 本地端 deb 檔案庫

有時候會需要將某些特別的 Debian 套件以及其相依的 Debian 套件透過網路先行下載回來
等到之後沒有網路的狀態下再依需求來安裝那些 Debian 套件

平常在使用 apt-get/aptitude/... 來安裝 Debian 套件時
系統預設會將那些套件檔案下載放到 /var/cache/apt/archives/ 底下再來安裝
但是也可以只下載但是不安裝,像是
# apt-get install -d eclipse
就可以將安裝 eclipse 所需要的套件先下載回來

然候可以用下面的指令製作一個 local archive
# mkdir -p /some/where/out/there
# mv /var/cache/apt/archives/*.deb /some/where/out/there
# cd /some/where/out/there
# apt-ftparchive packages . | gzip -n9 > Packages.gz

如果要使用這個 local archive 就可以將 /etc/apt/sources.list 改成
(其它來源先註解起來或是更改原本的檔案名稱)
deb file:///some/where/out/there /

然後之後等到沒有網路的時候,就可以用 apt-get update && apt-get install eclipse 來安裝了。

又或者在有區域網路的情況下,使用下面的指令分享給區域網路內的其它人使用
$ cd /some/where/out/there
$ python -m SimpleHTTPServer

只不過 /etc/apt/sources.list 的內容應該要換成類似下面這樣的內容
deb http://192.168.1.1:8000 /

2011年2月11日 星期五

$4 的 Debian 6.0 自動化安裝

製作可開機安裝 Debian 6.0 的 USB Stick

首先去下載 debian-6.0.9-i386-businesscard.iso (46M) 回來
然後再準備一個 USB Stick 接上電腦,如果 mount 在 Linux 系統上的話記得先 umount 掉
以 root 權限執行 (這裡假設 USB Stick 的 Device Node 位於 /dev/sdc)
# cat debian-6.0.9-i386-businesscard.iso > /dev/sdc
這樣就可以製作出可開機安裝 Debian 6.0 的 USB Stick 沒錯就是這樣製作的
這是 Debian 6.0 以後的新功能 hybrid CD/DVD image 不過只有在 i386/amd64 上面有作用

準備好要安裝的電腦跟可以透過有線網路 DHCP 上網的網路環境

現在這隻 USB Stick 可以接上任何可以使用 USB Stick 開機的電腦上開機就會看到:
Select Help

進去之後
Inside Help

輸入
auto url=fd.idv.tw
auto url=fd.idv.tw

然後就是等 Debian 6.0 自動安裝完就會自動關機,這樣就把 Debian 6.0 安裝好了。

接下來是開機展示

GRUB 的畫面 GRUB

開機動畫 plymouth

進入 GDM 了 GDM

輸入預設的密碼
debian
Login

進入安裝好的 GNOME 桌面環境 GNOME"/

關機時也會有關機動畫 poweroff

這個環境是按照 $4 個人的喜好所打造的,所以不一定會符合所有人的使用習慣,
像是 $4 喜歡使用酷音裡面的單純注音模式,不喜歡有 3D 桌面效果,
中文字型喜歡用 AR PL UMing 字型,英文喜歡使用 Droid 字型,
網頁瀏覽器喜歡用 Google Chrome,並且加入了 http://mozilla.debian.net/ 上面的 Iceweasel(Firefox)。

想要打造自己的 Debian 6.0 自動化安裝可以參考官方文件 Appendix B. Automating the installation using preseeding

而 $4 製作的腳本都放在 http://fd.idv.tw/d-i/

另外弄了一個半自動的安裝,讓使用者可以自己決定帳號密碼跟分割磁區。
auto url=http://fd.idv.tw/d-i/squeeze/manual.cfg