rpm -qa 就可以知道 installed software rpm有python的API 这个管用吗?是不是你想解决的问题?
-Ray 在2010-06-08 11:26:32,"Devil Wang" <[email protected]> 写道: 也许真的从数据库入手,是提高FC下 Ailurus的最好方法。 2010/6/8 Homer Xing <[email protected]> 我补充一下吧。 推荐装 sqliteman ,图形界面看数据库用。 /var/cache/yum/ 存有一些有趣的文件。 目录结构是 i386/12/fedora/xxxx-primary.sqlite i386/12/updates/xxxx-primary.sqlite i386/12/rpmfusion-free/xxxx-primary.sqlite i386/12/rpmfusion-nonfree/xxxx-primary.sqlite 打开 xxxx-primary.sqlite 文件,有惊喜。packages 表,似乎是源里提供的所有的包。 在 2010年6月7日 下午11:21,Devil Wang <[email protected]>写道: http://defindit.com/readme_files/rpm_yum_hangs.html 只要rebuild下db,就可以看到他们对数库库都干了什么了。 2010/6/7 Devil Wang <[email protected]> Basenames: Berkeley DB (Hash, version 9, native byte-order) Conflictname: Berkeley DB (Hash, version 9, native byte-order) __db.001: Applesoft BASIC program data __db.002: data __db.003: data __db.004: data Dirnames: Berkeley DB (Btree, version 9, native byte-order) Filedigests: Berkeley DB (Hash, version 9, native byte-order) Group: Berkeley DB (Hash, version 9, native byte-order) Installtid: Berkeley DB (Btree, version 9, native byte-order) Name: Berkeley DB (Hash, version 9, native byte-order) Obsoletename: Berkeley DB (Hash, version 9, native byte-order) Packages: Berkeley DB (Hash, version 9, native byte-order) Providename: Berkeley DB (Hash, version 9, native byte-order) Provideversion: Berkeley DB (Btree, version 9, native byte-order) Pubkeys: Berkeley DB (Hash, version 9, native byte-order) Requirename: Berkeley DB (Hash, version 9, native byte-order) Requireversion: Berkeley DB (Btree, version 9, native byte-order) Sha1header: Berkeley DB (Hash, version 9, native byte-order) Sigmd5: Berkeley DB (Hash, version 9, native byte-order) Triggername: Berkeley DB (Hash, version 9, native byte-order) de...@devil rpm$ 2010/6/7 Devil Wang <[email protected]> Hi all, 刚才折腾了下。 大体上有了眉目。 yum的数据库里面的信息也是表结构的。而且这个结构是不变的。 我在yum的source里面看到他也会去 select 一些 元组,这些元组的属性是固定。 sql = "SELECT name, version, release, epoch, flags " \ "FROM %s WHERE pkgKey = ?" % prcotype 我本以为sqlite也跟mysql一样。会有个常住deamon,后来我看了些关于C++操作sqlite的sample ,我发现他是直接去读 db文件的,不会有一个deamon去check是否有别的usr来访问数据库。 然后我发现 yum的数据库文件是放在 /var/lib/rpm 这个目录下的。 r...@devil rpm$ ls Basenames __db.004 Name Pubkeys Triggername Conflictname Dirnames Obsoletename Requirename __db.001 Filedigests Packages Requireversion __db.002 Group Providename Sha1header __db.003 Installtid Provideversion Sigmd5 r...@devil rpm$ 很显然,那些__db*因该就是 数据库文件了。 Installid我file 了下,也是数据库文件,二叉树的结构。 r...@devil rpm$ file Installtid Installtid: Berkeley DB (Btree, version 9, native byte-order) r...@devil rpm$ 如果我们直接读Installid里面的数据, 我觉得应该是Installed software info. 在Ailurus启动的时候去parse这个文件。应该可以大大的提高Ailurus的速度。 各位可以一起check下。 为了Ailurus的一切。 -- Thanks & Regards Linux Developer : Devil Wang -- Thanks & Regards Linux Developer : Devil Wang -- Thanks & Regards Linux Developer : Devil Wang _______________________________________________ Mailing list: https://launchpad.net/~ailurus Post to : [email protected] Unsubscribe : https://launchpad.net/~ailurus More help : https://help.launchpad.net/ListHelp _______________________________________________ Mailing list: https://launchpad.net/~ailurus Post to : [email protected] Unsubscribe : https://launchpad.net/~ailurus More help : https://help.launchpad.net/ListHelp -- Thanks & Regards Linux Developer : Devil Wang
_______________________________________________ Mailing list: https://launchpad.net/~ailurus Post to : [email protected] Unsubscribe : https://launchpad.net/~ailurus More help : https://help.launchpad.net/ListHelp

