2017-10-24

openSUSE tcl-dbif: let it run

目前 openSUSE OBS 上找到的是 1.0 版,相依性的設定有設 tcl-dbus,所以要先安裝 tcl-dbus,然後才安裝 tcl-dbif。

不過如果你真的使用下列的指令安裝:
sudo zypper install tcl-dbif


你很快就會發現無法正確使用。使用 package require dbif 並不會正確的找到套件。原因也很簡單,

在 tclsh 下使用下列的指令查詢:
::tcl::tm::path list


dbif 會安裝在 /usr/share/tcl/dbif1.0 目錄,但是這個目錄卻沒有在 openSUSE LEAP 42.3 tclsh 搜尋目錄的列表內。修正的方法很簡單,使用 ::tcl::tm::path 指令修正,在家目錄下的 ~/.tclshrc 一開始的時候加上我們想搜尋的目錄,
::tcl::tm::path add /usr/share/tcl/dbif1.0


這樣就可以讓 tcl-dbif 目錄正常的使用。但是會需要這樣是因為 .tclshrc 需要放在家目錄,這樣就…… 不知道怎麼從 rpm spec 修改。

* 原本我以為會去搜尋 /usr/share/tcl 目錄,結果沒有,但是還是可以透過修改 .tclshrc 方式來使用。

* 其實還有個違反 tm 檔案設計想法的改法,就是加上 pkgIndex.tcl,就可以讓 Tclsh 搜尋到。這個方法還沒測試。

更新:雖然和 tm 檔案設計的想法衝突,但是 RPM spec 加上 pkgIndex.tcl 就可以正常運作
使用 build script 建立 RPM 來測試 (注意:tcl-dbif 1.2 需要使用 tcl-dbus 2.1 版本才行)

沒有留言: