| 在's profile不在PhotosBlogLists | Help |
不在11/4/2006 NetBSD BookmarksDownload Systems
News
Main Websites
Packages
Blogs
Forums
Other Websites
User's Docs
PDF Docs
NetBSD LiveCD, Floppy, Flash and Others
NetBSD Books
NetBSD CultureNetBSD: Articles, Advocacy, Reviews
NetBSD - Technical Articles in Polish (warpman's selection)
NetBSD - Technical Articles in English (warpman's selection)
Firms Offering NetBSD Systems
Varia5/29/2006 OnLamp.com的Clean up portszt from http://www.wonglaye.net/blog/?p= FreeBSD ports即便得到所有赞美,也存有局限性。其中之一实际上来自它的强项-upgrade系统。两者以一种郁闷的方式互相影响。
port安装过程记录一个port所include的所有文件和所有依赖。比如,许多ports需要PNG图形库。port记录它使用的PNG版本,如1.0.11。当你安装了一部分软件,这一般和可以在ports树中找到是相同的版本。FreeBSD upgrade进程可以升级被port tree支持的软件版本。比如,PNG最近升级到1.0.12版本,库版本号没有增加,但是新库有一些小bug修复。我想升级。但是如果我那样做了,编码了确切PNG版本号的30多个ports将得到错误记录。 ? 我的笔记本有187个包(packages)。我一个星期升级一次。这很快就变得零乱,不久之后就难以忍受。幸好,Akinori MUSHA has stepped up to the plate(怎么翻译)并开发了一套可以整理这种零乱状态的工具:portupgrade(1)和他的朋友们(小熊温尼和他的朋友们)。 portupgrade中包含的工具实现了port系统的新特性。首先是pkgdb 和portdb,用来对/var/db/pkg索引和ports树创建数据库。这样能加快搜索并操作之。这些工具也可以重写/var/db/pkg里不同的文件来维护一致性。最后是各种pkg_*命令的wrappers,当添加或删除软件时可以用来重写数据库和纯文本记录。所有这些可以通过安装/usr/ports/sysutilis/portupgrade来得到。 在开始使用portupgrade之前,备份 /var/db/pkg!我从没在这个程序上遇到过麻烦,但是任何可以直接改写系统记录的工具具有无限可能使你的生活一团糟。如果你完全破坏了package records,你需要还原它: #tar -czvf dbpkg.tgz /var/db/pkg 运行pkgdb -F 来初始化安装,并进行基本的清理工作。如果你有许多ports,并已升级过几次port树。第一次时应留出一定时间。一旦有了一致性的数据库,维护将是又快又easy的;只是第一次会比较耗时。
Checking the origin of Hermes-1.3.2 Checking the origin of Mesa-3.4.1 Checking the origin of Mesa-3.4.2_1 Checking the origin of ORBit-0.5.10_5 Checking the origin of XFree86-aoutlibs-3.3.6.9 … 当遇到依赖改变的包时,pkgdb会询问是否要修改。
libaudiofile-0.2.1_1 ? ([y]es/[n]o/[a]ll) [yes] esound已经记录libaudiofile版本0.2.2作为依赖,但是安装的是版本0.2.1_1。我也许过去做过pkg_add -f,以强制安装尽管有微小版本差异。问我是否想要更新我在/var/db/pkg/esound-0.2.22/+CONTENTS的入口来指向实际安装的libaudiofile的版本。如果默认,他将修改入口记录,如果输入“a”,不仅修改libaudiofile对于esound的入口,而且还修改所有用到libaudiofile的其他包。这对于具有很多依赖的包比如PNG,显得格外方便。
New dependency? (? to help): ? 这里我有一个选项。我可以指派一个新的依赖,或我可以告知package已经不再有什么依赖了。当Xaw3d需要imake,我知道在这个特别的系统里,它不会发现imake已经安装了。我想要删除依赖性。如果敲”?”来查看帮助会发现:
New dependency? (? to help):?
Control-D it is. 如果我选择“YES”,将清除该依赖。如果我选择“all”将清除所有该依赖无论何时出现。许多ports使用imake;我都想清除。稍后你将看到:
Delete this? ([y]es/[n]o/[a]ll) [yes] Deleted. 还有几次,在别处也出现了pkgdb不能推测依赖的情况
New dependency? (? to help): ? [Enter] to skip, [Ctrl]+[D] to delete, [.][Enter] to abort, [Tab] to complete New dependency? (? to help): timidity++-2.10.4 用tab可以完成。我知道timidity++-esound用到某版本的timedity,但是我不想挖地三尺以求整个完整的版本号。我可以输入前两个字母然后按Tab键,就得到了剩下的包的名字。
Remove any of them? [no] 这里我有一个问题。从一个包安装软件而需要另外一个包的情况是很疏松平常的。也许你已安装的包有一点版本出入。如果你正通过package来安装,它会自动安装依赖,即使稍有出入的版本已经安装了。这有时会在我的系统中出现。我的本本有两个不同版本的Mesa,但是一个已经覆盖了另一个。这明显的不能算最糟糕的,因为我的系统还在工作。(最后我完全删除了mesa并安装了适合的版本)。尽管如此我依然需要清理packge数据库。我手动卸载了老版本。
Hermes = Mesa = ORBit < XFree86-aoutlibs < Xaw3d = aalib = <代表安装的版本比port树中的旧.可以通过运行portversion | grep '<'来查看哪些port过时了.我经常使用它来查看自己的系统.比如,我的Apache过时了.但是在我的本本上我已经不使用apache了,所以我可以删除它.标准的pkg_delete命令仍然适用,但是我用了,我的package数据库将同我的系统失去同步.使用pkg_deinstall来代替.
—< Deinstalling 'apache-1.3.20' [Updating the pkgdb in /var/db/pkg ... - 182 packages found (-1 +0) (...) done] # 好处是我再也不用给出完整版本号!(对于FreeBSD的pkg_*,这困扰我良久,但是无能为力).portupgrade工具包含全局函数,可以进行模式匹配。
===> Cleaning for gettext-0.10.35 ===> Cleaning for gmake-3.79.1 ===> Cleaning for libtool-1.3.4_2 ===> Cleaning for jpeg-6b ===> Cleaning for png-1.2.0 ===> Cleaning for freetype2-2.0.5 ===> Cleaning for gd-1.8.4_4 If you want to compile in X support use ‘make -DWITH_X11′ instead ===> Extracting for gd-1.8.4_4 …. 将看到熟悉的make输出界面。如果继续观察,会发现转而去卸载已安装的包,更新数据库,然后继续。
pkg_delete: package ‘gd-1.8.4_3′ is required by these other packages and may not be deinstalled (but I’ll delete it anyway): scr2png-1.1 [Updating the pkgdb in /var/db/pkg … - 180 packages found (-1 +0) (…) done] ===> Installing for gd-1.8.4_4 … 一旦安装完成,会再一次更新package数据库。所有的都是同步的。
This port will try to ensure that the tools used by the FreeBSD Documentation Project are installed on your system so you can convert documentation from SGML to other formats. 组件其中之一是JadeTex,它依赖于TeTex。TeTex的源代码超过30M,可能需要很长的下载时间。
make JADETEX=yes?
*** Error code 1 Stop. 我考。这个port需要定制。你可以修改/usr/ports/textproc/docproj/Makefile添加 JADETEX=no。现在它将完全透明得运行。
是的,没错它可以,我说过的它真是好样的。 original:Michael W. Lucas 5/26/2006 Linux日志文件系统及性能分析(组图) 日志文件系统可以在系统发生断电或者其它系统故障时保证整体数据的完整性,Linux是目前支持日志文件系统最多的操作系统之一,本文重点研究了Linux常用的日志文件系统:EXT3、ReiserFS、XFS和JFS日志技术,并采用标准的测试工具PostMark和 Bonnie++对它们进行了测试,给出了详细的性能分析,对Linux服务器应用具有重要的参考价值。 |
||||
|
|