自己寫類似pkg_version -vL=的小程式 -- pver - BBS

Table of Contents

功能描述:
類似pkg_version -vL=
(其實應該說類似pkg_version -IvL=
之前忘記INDEX和實際ports裡面的情形可能不同@@)
不過也就只有列出版本號不同者
個人測試是比pkg_version -IvL=快三倍以上
(不考慮建立db的時間的話)

範例輸出:
ImageMagick-nox11 6.4.5.5 6.4.7.5
phpMyAdmin 3.1.0 3.1.1

下載網址:
http://www.csie.nctu.edu.tw/~weiyu/software/pver-0.07.tar.gz
僅原始檔,需自行編譯

dependency:
* portupgrade(optional)
* db-3+ (應該吧 測試環境是db-4.3)

編譯:
主要有個INDEX_DB_FILE可以設定
預設是/usr/ports/INDEX-{uname取得的主要版本}.db
也就是portupgrade裡portsdb所建立的檔案
方式一(使用portupgrade的portsdb建立的檔案):
* make

方式二(不想依賴portupgrade的話):
1. make INDEX_DB_FILE='檔案要放的位置'

其中檔案要放的位置 建議寫成絕對路徑(可以在不同目錄使用)
使用前請先執行
2. pver_dbgen
在指定位置產生db檔
(ports的index更新時須重新執行)

程式大致上的動作:
取出/var/db/pkg下的目錄名稱,和ports的INDEX所建立的db做比對
不一樣的話再去/var/db/pkg/{PKGNAME}/+CONTENTS找
@comment ORIGIN:那行取來源位置
如果該位置可以在ports的db找到的話,則取出db裡面的版本
(因為此時ports的db記錄的版本,和/var/db/pkg下的資訊不一樣
所以版本理論上應該不一樣)
顯示套件名稱和新舊版本

其他:
0.07 只有把顯示上的\t\t改成\t
0.06 使用scandir來達成排序效果
在nfs建立db很慢的話,可能需要指定建立在非nfs目錄


--
和FreeBSD有關,應該可以放在這個版吧XD
(雖然是宣傳自己的程式:p)

--

All Comments