在 build 的時候,需要 Tcl 的 source code。configure 使用下列的方式設定:
CPPFLAGS="-I/home/danilo/rpm/SOURCES/tcl8.6.1/generic/ -I/home/danilo/rpm/SOURCES/tcl8.6.1/unix/" ./configure --enable-threads --with-tcl=/usr/lib64
* notice:因為我是使用 x86_64 的作業系統,所以目錄指向 /usr/lib64,如果是 32 位元應該要指向 /usr/lib 才對。然後,因為 TclX 有使用 Tcl 的內部宣告,所以要設定 CPPFLAGS 讓 TclX 在 build 的時候可以找到 header file。
再來就是 make,跟 make install 就可以了。
2013-10-09
Build a Tcl/Tk RPM (on openSUSE 12.3)
首先,要先安裝 rpm-build 這個工具。如果是 Ubuntu 的使用者,安裝的命令如下:
sudo apt-get install rpm
在 openSUSE 上我是使用 GUI 安裝軟體,下列是我猜可以使用的 openSUSE 命令,但是我沒試過:
sudo zypper install rpm-build
再來是環境設定,首先在自己的家目錄建立下列的目錄:
再來就下載 Tcl 和 Tk 8.6.1 的 source code package。放到 rpm/SOURCES,使用下列的命令解壓縮:
tar xzvf tcl8.6.1-src.tar.gz
tar xzvf tk8.6.1-src.tar.gz
ln -s tclsh%{majorver} $RPM_BUILD_ROOT%{_bindir}/tclsh
然後 tcl.spec 要在 Name: tcl 這行之前加入版本宣告:
%global majorver1 8
%global majorver2 6
%global majorver %{majorver1}.%{majorver2}
再來使用下列的命令建立 RPM:
rpmbuild --bb tcl.spec
進入 tk8.6.1 的目錄下,再進入 unix 目錄,對於 tk.spec 我們有一個地方要修改:
ln -s wish%{majorver} $RPM_BUILD_ROOT%{_bindir}/wish
然後在 Name: tk 這行之前加入版本宣告:
%global majorver1 8
%global majorver2 6
%global majorver %{majorver1}.%{majorver2}
再來使用下列的命令建立 RPM:
rpmbuild --bb tk.spec
sudo apt-get install rpm
在 openSUSE 上我是使用 GUI 安裝軟體,下列是我猜可以使用的 openSUSE 命令,但是我沒試過:
sudo zypper install rpm-build
再來是環境設定,首先在自己的家目錄建立下列的目錄:
- */rpm
- */rpm/BUILD
- */rpm/RPMS
- */rpm/SOURCES
- */rpm/SPECS
- */rpm/SRPMS
%packager test <test@gmail.com>
%_topdir /home/test/rpm
%_tmppath /var/tmp
%_rpmtopdir %{_topdir}
%_builddir %{_rpmtopdir}/BUILD
%_rpmdir %{_rpmtopdir}/RPMS
%_sourcedir %{_rpmtopdir}/SOURCES
%_specdir %{_rpmtopdir}/SPECS
%_srcrpmdir %{_rpmtopdir}/SRPMS
再來就下載 Tcl 和 Tk 8.6.1 的 source code package。放到 rpm/SOURCES,使用下列的命令解壓縮:
tar xzvf tcl8.6.1-src.tar.gz
tar xzvf tk8.6.1-src.tar.gz
1. tcl
進入 tcl8.6.1 的目錄下,再進入 unix 目錄,對於 tcl.spec 我們有二個地方要修改:- 預設的安裝目錄:原本是 /usr/local,可以改成 /usr
- 在最後再加入一行 %{directory}/share/man/mann,有檔案會安裝到這裡,如果不加會出現問題
ln -s tclsh%{majorver} $RPM_BUILD_ROOT%{_bindir}/tclsh
然後 tcl.spec 要在 Name: tcl 這行之前加入版本宣告:
%global majorver1 8
%global majorver2 6
%global majorver %{majorver1}.%{majorver2}
再來使用下列的命令建立 RPM:
rpmbuild --bb tcl.spec
2. tk
先確定 tcl 做好 rpm 之後有安裝成功。另外,還需要 XFree86-dev 有安裝才行。進入 tk8.6.1 的目錄下,再進入 unix 目錄,對於 tk.spec 我們有一個地方要修改:
- 預設的安裝目錄:原本是 /usr/local,可以改成 /usr
ln -s wish%{majorver} $RPM_BUILD_ROOT%{_bindir}/wish
然後在 Name: tk 這行之前加入版本宣告:
%global majorver1 8
%global majorver2 6
%global majorver %{majorver1}.%{majorver2}
再來使用下列的命令建立 RPM:
rpmbuild --bb tk.spec
2013-10-02
Network Time Protocol (NTP) client
範例:來自 Network Time Protocol - NTP
使用了 Tcllib 中的 NTP package,並且需要使用 TclUDP 或者是 ceptcl 來提供 UDP 支援。
使用了 Tcllib 中的 NTP package,並且需要使用 TclUDP 或者是 ceptcl 來提供 UDP 支援。
package require time
set timeserver "time.stdtime.gov.tw"
proc NetTime {server} {
set tok [time::getsntp $server] ;# or gettime to use the TIME protocol
time::wait $tok
if {[time::status $tok] eq "ok"} {
set result [time::unixtime $tok]
set code ok
} else {
set result [time::error $tok]
set code error
}
time::cleanup $tok
return -code $code $result
}
exec cmd.exe /c time [clock format [NetTime $timeserver] -format %H:%M:%S]
訂閱:
文章 (Atom)