2009年7月12日 星期日

LXDE on openSUSE


只是怕大家不知道這個好消息
http://lizards.opensuse.org/2009/07/11/lightweight-x11-desktop-environment-aka-lxde/
Andrea Florio 打包了最新的 lxde
放在 http://download.opensuse.org/repositories/home:/anubisg1:/LXDE/
而且更棒的是,現在已經準備進入正式的套件庫中
(將在 X11:lxde 中)
從圖片看來 Andrea 針對 lxde 和 openSUSE 做了更多的整合
大家可參考此頁 http://en.opensuse.org/LXDE
(包含了介紹與安裝)
注意:為了避免和 home:swyear 套件庫中的套件打架
請先停用 swyear 套件庫(裏面的 lxde 套件有一陣子沒更新了)

2009年7月10日 星期五

osc step by step

osc: openSUSE (build service) commander
是一個 openSUSE Build Service 命令列的客戶端工具
其實我跟他不太熟
但是 http://en.opensuse.org/Build_Service_Tutorial
http://en.opensuse.org/Build_Service/CLI
都有詳盡的說明
裏面有提到,如果您會用 svn 的話,使用 osc 會有賓至如歸的感受
(可惜我和 svn 也不熟)
我現在要依照第一個連結,一步一步跑一次
(我使用 commandline 的方法)
目的是在 M17N:Devel[1] 這個 Project[2] 底下建構 gcin 這個 Package
[註1]M17N (multilingualization) 是 openSUSE 的多國語言化計劃,
裏面蠻多都是關於CJK的,而
M17N:Devel 則是此計劃的測試區,詳情請參考
http://news.opensuse.org/2009/06/18/opensuse-factory-is-now-open/
[註2]Project 是 OBS 的專有名詞,每個申請了 openSUSE Build Service 的人,
都會有一個 home:YOUR-LOGIN-NAME 的 home project。package 就是指在 project 底下建構的套件。

前言請自己看
第一步:登入
先建立一個工作目錄,例如:~/OBS
$ cd ~/OBS
$ osc checkout M17N:Devel

(這個命令可簡化成 osc co ...)
如果您從未用過 osc,將會提示您輸入使用者名稱及密碼(當然是指 OBS 的)
這時候會在您的工作目錄下建立一個 M17N:Devel 的目錄
並且開始將 M17N:Devel project 中的內容抓到這個目錄底下
每個套件(package)就是一個子目錄
因為此計劃中已經有了其他的套件,所以要花一段時間才能完成
若您用自己的 home project,上面命令要改成
$ osc checkout home:YOUR_LOGIN_NAME

完成後,切換到 M17N:Devel 目錄下
$ cd M17N\:Devel/


第二步:建立新套件
我要建立 gcin 套件
$ osc meta pkg -e M17N:Devel gcin

此時會開啟您預設的文字編輯器請您填入
title 標題(請填入該套件的摘要 Summary),description(請填入套件的描述),
url 位址(請填入上游位址)
這樣就可以了
如果您沒有設定 EDITOR 的變數,會用 vim 來編輯
若不習慣用 vim,請在上面命令執行前先執行
$  export EDITOR=kwrite

(請將 kwrite 改成您自己習慣的純文字編輯器)
存檔之後,就會開始傳送資訊到 M17N:Devel
您可以用瀏覽器看到

接著只要執行
$ osc up

您的工作目錄就會從 M17N:Devel 更新
所以您的 M17N:Devel 目錄中也會多了一個 gcin 的目錄
現在切換到 gcin 目錄中
$ cd gcin

將您的 source[3] 通通複製到此
[註3]這裡的 source 其實是指程式的原始碼(通常打包成 tar.gz 或 tar.bz2 格式)、patches(修補)和 spec 檔
這是我的 gcin.spec 檔
#
# spec file for package gcin
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#

# norootforbuild

%define release 1
%define prefix /usr
%define name gcin
%define version 1.4.6pre8
%define uversion 1.4.6.pre8


Summary: Gcin is a Chinese input method server
Name: %{name}
Version: %{version}
Release: %{release}
License: LGPL
Vendor: Edward Liu
URL: http://hyperrate.com/dir.php?eid=67
Group: System/I18n/Chinese
Source0: gcin-%{uversion}.tar.bz2
Source1: xim.d-gcin
Source2: gcin-README.suse
Source3: xim.gcin.suse.template
Patch0: configure145p2.diff
Patch1: gcin_scripts_modify-XIM_103.diff
Patch2: gcin_desktop_icon_path.diff
Patch3: qt4-im145p2.diff
Patch4: use_small_icons.diff
Patch5: gtk-im-path1437.diff
Patch11: sync_gcin-setup.diff

BuildRoot: %{_builddir}/%{name}-%{uversion}-root

BuildRequires: qt3-devel libjpeg-devel pkgconfig gtk2-devel libqt4-devel update-desktop-files
BuildRequires: chrpath anthy-devel
Requires: gtk2 >= 2.2.4
#Provides: locale(ja;zh)
PreReq: /usr/bin/touch
Docdir: %{prefix}/share/doc/packages

%description
gcin is a Chinese input method server for traditional Chinese.
It features a better GTK user interface.

%package devel
Summary: Gcin development package
Group: Development/Libraries/C and C++
Requires: %{name} = %{version}

%description devel
gcin development package contains the header files for gcin

%prep
%setup -n gcin-%{uversion}
%patch0
%patch1
%patch2
%patch3
%patch4
%patch5

%patch11 -p1

%build

CFLAGS="$RPM_OPT_FLAGS" %configure --prefix=/usr --use_xim='Y' --new_gtk_im='Y' --use_i18n=Y
make

%install

mkdir -p $RPM_BUILD_ROOT/etc/X11/xim.d/
install -m 644 $RPM_SOURCE_DIR/xim.d-gcin $RPM_BUILD_ROOT/etc/X11/xim.d/gcin

DESTDIR=$RPM_BUILD_ROOT make install
%suse_update_desktop_file gcin-setup System SystemSetup
pushd $RPM_BUILD_ROOT/etc/X11/xim.d/
for lang in en zh_TW zh_HK zh_CN zh_SG ; do
mkdir $lang
pushd $lang
ln -s ../gcin 30-gcin
popd
done
popd
chrpath -r /usr/%_lib/gcin ${RPM_BUILD_ROOT}%{_bindir}/gcin
chrpath -r /usr/%_lib/gcin ${RPM_BUILD_ROOT}%{_bindir}/sim2trad

%find_lang %{name}

%clean
rm -rf $RPM_BUILD_ROOT


%files -f %{name}.lang
%defattr(-,root,root)
%doc README.html Changelog.html COPYING AUTHORS
%doc $RPM_SOURCE_DIR/xim.gcin.suse.template
%doc $RPM_SOURCE_DIR/gcin-README.suse
%dir /etc/X11/xim.d/
%dir %{_libdir}/gcin
%dir %{_libdir}/menu
%dir %{_datadir}/control-center-2.0
%dir %{_datadir}/control-center-2.0/capplets
%dir %{_datadir}/gcin
%dir %{_datadir}/gcin/script
%dir %{_datadir}/gcin/table
%config /etc/X11/xim.d/*
%{_bindir}/*
%{_datadir}/gcin/table/*
%{_datadir}/gcin/script/*
%{_datadir}/man/man1/*
%{_datadir}/icons/*
%{_datadir}/pixmaps/gcin.png
%{_datadir}/applications/*
%{_datadir}/control-center-2.0/capplets/*
%{_libdir}/menu/*
%{_libdir}/gtk-2.0/*
%{_libdir}/qt3/plugins/inputmethods/*
%{_libdir}/gcin/*
%{_libdir}/qt4/plugins/inputmethods/im-gcin.so


%files devel
%defattr(-,root,root)
%{_includedir}/*

%post
/sbin/ldconfig
touch var/adm/SuSEconfig/run-gtk

%postun
/sbin/ldconfig
touch var/adm/SuSEconfig/run-gtk


%changelog
* Fri Jul 03 2009 - swyear@gmail.com
- 1.4.6:
- gtab 自動選字時,手動選字的問題。
- gtab shift+字母 改成大寫輸出
- .cin 現在支援 %flag_auto_select_by_phrase 選項,有了這個表示產生的 .gtab 會自動啟用由詞庫自動選字。gcin-setup 中可以強迫開啟or關閉。
- gtab 詞庫自動選字現可以用空白鍵送出編輯區的內容。
- pcmanx 無法顯示編輯區的問題。
- mozilla thunderbird 選單不正常的問題。
- 詞音注音選字時也可以用 mouse 選擇了。
- 如果 gtab 有指定保留大小寫的選項,則 CapsLock 輸入英數的功能自動關閉。
- 左鍵 click tray icon 改成中英切換,因為現在比較少用簡體輸出。有時候沒辦法使用 ctrl-space 切換中英時就可以用。簡體輸出改到右鍵的選單裡。
- GTK 程式 focus out 時現在會自動送出編輯區的內容。QT的程式目前還不行。
- Eclipse double click 會導致空白的問題。
- 在tray icon 按 Shift + 左鍵可以列出所有輸入法的選單。
- 詞音按 [] 輸入「」【】現在不需要按空白鍵。

你可以從上面看到 spec + sources + patches 共有12個檔案
有些是為了配合 openSUSE 輸入法啟動的方式所加的檔案與說明
有些則是因為 gcin 的 configure 和 Makefile 都是"手寫的",
所以要做一些修改來配合實際的路徑
有些則是 OBS 龜毛的要求
因此在我的 gcin 目錄中就必須要有這12個檔案
$ ls
configure145p2.diff gtk-im-path1437.diff
gcin-1.4.6.pre8.tar.bz2 qt4-im145p2.diff
gcin_desktop_icon_path.diff sync_gcin-setup.diff
gcin-README.suse use_small_icons.diff
gcin_scripts_modify-XIM_103.diff xim.d-gcin
gcin.spec xim.gcin.suse.template

然後執行
$ osc add *

將此目錄中所有檔案都加入,下次提交時就會上傳到 M17N:Devel
然後提交
$ osc commit

(或簡化為 osc ci)
會出現一個編輯視窗,請在虛線上方寫一下此次提交的摘要,例如:
First commit to M17N:Devel by swyear
存檔後就會開始上傳提交
當然這也要花上一陣子(甚至更久,因為用ADSL上傳速度通常較慢)

理論上應該進行第三步驟:加套件庫(就是你的套件要在哪個環境建構)
看看你有哪些可用的套件庫
$ osc ls

你會得到數百個
看來還是用 web 介面點一點好了
因為M17N:Devel已經將這方面處理好了,我不必去改它
若是您自己第一次用OBS,你就可能需要自己動手了

第四步驟:在OBS伺服器上開始建構(Build)
其實不必做什麼事,當OBS伺服器偵測到 source 有變化時
就會自動開始建構,當然,得要OBS有空時...
您也可以參考在本機上自行建構(我是不幹的啦)
建構好的套件會自動輸出到
http://download.opensuse.org/repositories/M17N:/Devel/
也就是說,你以後也可以從這個套件庫取得 gcin 了

然後我要寫封信到 opensuse-m17n@opensuse.org
說我新提交了一個新套件 gcin 到 M17N:Devel
介紹一下 gcin 並請大家測試檢查...
不過,現在OBS伺服器都很忙,也不知道何時才會建構完成
今天也太晚了,還是明天再說吧
今天的工作就到此告一段落了

2009年7月9日 星期四

開源人年會2009

開源人年會2009
COSCUP 【開源人年會】已邁入第四年,不但成為台灣各地社群朋友一年一度相聚的盛事,更在各地社群共同舉辦之下,逐漸成長茁壯。繼去年EeePC推出linux版netbook之後,Google 也開始推出Android手機,許多新的open source專案和產品都爆炸性發展。順應今年的Open Source發展趨勢,本活動分成四大主題:Android 和嵌入式系統、雲端運算和 Web 技術、開發者工具及使用者桌面。無論您是寫 open source 軟體的開發者、熱衷 open source 軟體的推廣者、熟悉 open source 軟體的使用者、還是想瞭解 open source 軟體的新手,也不論您是因為工作而接觸 open source 軟體、因興趣而沉迷於 open source 軟體、還是被朋友拉著加入 open source 社群,歡迎一同共襄盛舉。

其他詳細活動資訊,如下:

日期:2009/8/15 (六) - 8/16 (日)
地點:臺灣大學應用力學研究所 國際會議廳
活動網頁:http://coscup.org/2009/zh_tw/
報名網站:http://coscup.org/2009/zh_tw/register
開放報名:2009/07/15
報名費用:全程免費!歡迎參加!

2009年7月1日 星期三

openSUSE 每週新聞第78期已經上線

本期摘要:
  • openSUSE 論壇已經達到 30,000 使用者
  • Google 夏日程式碼大賽狀態回報
  • Jigish Gohil : 使用 SuSEfirewall 防範 SSH 暴力攻擊
  • metaverse: 給作家使用的更多自由且開源碼工具
  • openSUSE 論壇: 在 SUSE 中如何開啟 .docx 檔案?
完整閱讀
openSUSE Weekly News 繁體中文版第78期
openSUSE Weekly News 繁體翻譯計劃