LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2921|回复: 8

Cleaning and Customizing Your Ports[翻译]

[复制链接]
发表于 2003-10-31 10:11:57 | 显示全部楼层 |阅读模式
Cleaning and Customizing Your Ports

原文:
http://www.onlamp.com/pub/a/bsd/2003/09/18/FreeBSD_Basics.html
作者:Dru Lavigne
翻译:rainren
本人能力有限, 很多地方自我感觉都翻译的不对, 请大家指出, 我慢慢修改。
  
  我们前两篇文章讨论了怎样使用ports和用portupgrade升级你已安装的程序。 今天,我将示范如何干净的卸载应用程序和使用pkgtools.conf来定制你的ports tree以结束这一系列。

很多人认识到安装、 卸载软件是一件杂乱的事情。安装时一些临时文件、 没有阅读的READMEs、 和一些不清楚的目录都导致硬盘混乱不堪。有时, 我们卸载了一个软件但它还会留下一些不再使用的文件在系统里。 更糟的是, 安装时重写, 但卸载时却删除其它软件会用到的库文件。 这些使得用户重新安装系统以求得一个干净的使用环境。

Keeping Your Ports Clean

幸运地, 这里有一些工具可以使你聪明地、正确地管理软件安装, 使你的FreeBSD系统能良好的运行很多年。例如当你从ports安装一个软件时要记得包含这个单词:

# make install clean

这将告诉make在软件安装成功时清理它的工作目录。 如果你忘记了使用clean, 你很快会发现那些工作目录占用了很多硬盘空间。

如果你的硬盘空间特紧张, 你可使用这个命令代替:

# make install distclean

当你安装一个ports时, 源程序将从互联网上下载下来并copied到/usr/ports/distfiles。 当你想重新安装那个ports时, 这些源程序已经在你的硬盘上了。 distclean 将告诉make 在软件安装成功时删除这些源程序。 可依据你的硬盘空间和你的电脑与互联网的连接速度来决定是否使用distclean。 另外, 因一些许可证的原因, 一些ports 会要求你手动取得源程序并将它们copied到/usr/ports/distfiles。 我觉得保存在硬盘上更方便, 因此我在安装ports时一般不会使用distclean。


有两个选项可以从另外的途径来节省你的硬盘空间。 如果你安装了portupgrade, 你可以使用portsclean来做这项工作。 从名字可以看出, 这个命令就是用来在ports 安装后做一些清理工作的。


我有一个系统专门用来测试, 我在上面安装、卸载了几百个ports, 平常, 我会使用clean清理, 但有时我会使用distclean。 来让我们看一下当前的硬盘使用情况和使用了portsclean后又有什么不同。 首先, 查看一下/usr分区使用了多少硬盘空间:

# df /usr
Filesystem  1K-blocks    Used   Avail Capacity  Mounted on
/dev/ad0s1f  13360662 6189648 6102162    50%    /usr

下一步我们来看看/usr/ports的使用情况。 这个命令将显示使用硬盘空间最多的10个目录:

# du /usr/ports |sort -rn|head
3110862        /usr/ports
1848846        /usr/ports/distfiles
822278        /usr/ports/editors
816710        /usr/ports/editors/openoffice-devel
816592        /usr/ports/editors/openoffice-devel/work
604784        /usr/ports/editors/openoffice-devel/work/oo_644_src
362536        /usr/ports/distfiles/KDE
295404  /usr/ports/distfiles/openoffice
211718  /usr/ports/editors/openoffice-devel/work/mozilla
211654  /usr/ports/editors/openoffice-devel/work/mozilla/work

Hmmm, 看起来我在安装了OpenOffice后没有使用distclean。

我现在将清理那些忘记的工作目录:

#portsclean –C

它真的能清理硬盘空间吗?

% df /usr
Filesystem  1K-blocks    Used   Avail Capacity  Mounted on
/dev/ad0s1f  13360662 5160664 7131146    42%    /usr

oh yeah. 清理了8%的硬盘空间。 记住清理工作目录是一件很好的事情, 毕竟它们只在安装软件时使用。 当软件安装成功后它们将不再需要。

下一个portsclean选项也非常有用。 确信你的/usr/ports/distfiles完整无缺。 当过一段时间,你卸载了一些应用程序而且还将一些程序升级到了最新版本。 但有一些不需要或过时的源程序还留在/usr/ports/distfiles里。 来让我们将它找出并清理掉:

# portsclean -DD
Detecting unreferenced distfiles...
<output varies>
来看看有什么变化:

# df /usr
Filesystem  1K-blocks    Used   Avail Capacity  Mounted on
/dev/ad0s1f  13360662 4092490 8199320    33%    /usr

Whoa, 又清理出了9%的硬盘空间。来让我们看看主要的差别:

# du /usr/ports | sort -rn | head
1011998        /usr/ports
780760        /usr/ports/distfiles
161724        /usr/ports/distfiles/openoffice
137010        /usr/ports/distfiles/staroffice52
122648        /usr/ports/distfiles/KDE
55478        /usr/ports/distfiles/xc
24936        /usr/ports/distfiles/rpm
20536        /usr/ports/devel
18194        /usr/ports/distfiles/AbiWord
17704        /usr/ports/distfiles/ghostscript

现在硬盘使用空间已减少了很多, 但我的系统上还保留着我平常安装软件的源代码。

Customizing Available Ports

让我们来看看如何定制ports collection。 当你安装了portupgrade后, /usr/local/etc/pkgtools.conf 和/usr/local/etc/pkgtools.conf.sample将安装在你的系统里。缺省情况下(默认情况下), 这两个文件是相同的。可以更改/usr/local/etc/pkgtools.conf但应保持/usr/local/etc/pkgtools.conf.sample不变, 当出现错误, 你可以回到最原始的设置。

花点时间阅读这个文件, 你会发现它会很好的帮助你取得你想到的ports。我有一些明确的非常有用的选择, 但你要花点时间改成你所需要的。

开始, 这个文件允许你给portupgrade这组工具套件设置工作环境。例如, 缺省情况下的临时目录是/var/tmp, 在/var很小的情况下这会有一些问题出现。 我们来改变这个缺省值, 从/usr/local/etc/pkgtools.conf找到下面这一行:

#   ENV['PKG_TMPDIR'] ||= '/var/tmp'

将它改到你想要的目录:

ENV['PKG_TMPDIR'] ||= '/usr/tmp'

要记得去掉注释符号#, 并确定你指定的目录已存在。

另一个有用的设置是设置忽略的分类:(Another useful setting is the ignore categories section)

# IGNORE_CATEGORIES: array
#
# This is a list of port categories you want the pkgtools to ignore.
# Typically you want to list language specific categories of the
# languages you don't use.
#
# After configuring this list, you need to rebuild the ports
# database to reflect the changes. (run 'portsdb -Ufu')
#
# e.g.:
#   IGNORE_CATEGORIES = [
#     'chinese',
#     'french',
#     'german',
#     'hebrew',
#     'japanese',
#     'korean',
#     'russian',
#     'ukrainian',
#     'vietnamese',
#   ]

IGNORE_CATEGORIES = [
]

这里, 注释十分干净。 如果你决定使用这个有用的选项时, 去掉你想要忽略的分类前面的注释符号#。 当语言分类被选择后, 你还可以忽略其它的分类。 如:你从未打算从astro和irc分类中安装任何程序, 你可以将它们也写进忽略的分类中。 下面是例子:

IGNORE_CATEGORIES = [
    'chinese',
    'german',
    'hebrew',
    'japanese',
    'korean',
    'russian',
    'ukrainian',
    'vietnamese',
    'astro',
]

#          IGNORE_CATEGORIES = [
#         ]

上面, 我注释了默认情况下空的IGNORE_CATEGORIES。 并去掉了我想要忽略的分类前面的注释符号#, 以同样的格式将astro分类加了进去。 别忘记了照注释上说明的做, 并执行下面的命令:

# portsdb -Ufu

好, 保存你所做的修改。(once you've saved your edits to this section.)

Customizing Individual Ports Build Options

在这个文件中最有用的设置之一是设置MAKE_ARGS会话。 一些ports允许在安装时设置一些参数来规定如何安装它。 这些参数可以在port’s Makefile里找到或这样:

# cd /usr/ports/multimedia/mplayer
# make WITH_GUI=yes WITH_FREETYPE=yes install clean

上面的命令等价于:

# make -DWITH_GUI -DWITH_FREETYPE install clean

如果你计划使用portupgrade升级mplayer并想使用同样的参数, 你有一个选择。 或者你有能力记得在使用portupgrade时使用 m 这个选项:

# portupgrade -rRm '-DWITH_GUI' '-DWITH_FREETYPE' mplayer

或者花一点时间将这些选择加入到/usr/local/etc/pkgtools/conf里:

MAKE_ARGS = {
    'multimedia/mplayer-*' => 'WITH_GUI=1 WITH_FREETYPE=1',
}

让我们分开它们来看看, 它有点复杂并且语法有点讲究。 整个MAKE_ARGS会话包含在一个{ }里。 在这里面是每个ports详细的 make参数。也就是你可以将一些ports 加入进去, 并确信它们都在这个括号内。

每个ports必须包含在一对单引号里’并且是从ports里分下来的子目录。 名字最后面跟通配符 -*

make参数也被放在一对单引号里并跟在 => 后面。 记住使用1代替使用单词yes, 所有的参数以空格分开。

你需要花一点时间来将你的参数加进这个会话中。
Ports Tools

让我们来看看ports tree的 tools 来结束这一系列吧! 如果你没发现这已经有了, 你可以看看这里:

# more /usr/ports/Tools/scripts/README

Gee, 当你想要了解所有关于ports的所有情况时, 你将在那里找到全部隐藏的有用工具。 它们都是脚本文件, 当你执行这些文件时别忘记里名字前面加上 ./

# cd /usr/ports/Tools/scripts
# ./consistency-check

建议你运行所有你在阅读README文件中介绍的感兴趣的脚本。 如果你找到一些喜爱的脚本, 你可以将它们copy到你的目录或做一个到 ~/bin下的符号连接。

我希望你喜欢这些使用ports collections的文章。 我将在下一段时间将前面的一系列文章修订成一本书。

求救, 我在最后的这些段翻译越来越差, 请兄弟们改正

It's worth your while to spend the few minutes it takes to add your arguments to this section whenever you first build a port that uses arguments. You'll eventually upgrade that port, and it is highly unlikely that you'll even remember that it used arguments, let alone what those actual arguments were.
Ports Tools
Let's finish this series by peeking at the tools section of the ports tree. If you haven't discovered it on your own yet, take a look at:
% more /usr/ports/Tools/scripts/README
Gee, just when you thought you knew everything there was to know about ports, you find there's a whole new stash of useful utilities. Since these are all scripts, don't forget to put a ./ in front of the name as you try out each of the scripts:
% cd /usr/ports/Tools/scripts
% ./consistency-check
I'd suggest trying out each script that piques your interest as you read its description in the README file. If you find some new favorites, consider either copying them or symlinking them to ~/bin so they will be in your path.
I hope you've enjoyed the past few articles on the ports collection. I'll be taking a break from the series over the next few months in order to write a book. Stay tuned for more details.
 楼主| 发表于 2003-10-31 10:17:02 | 显示全部楼层
freebird, 那篇《Ports Tricks》就不翻译了, 我以前只将大概意思说了一下, 在下面的这个连接里:
http://www.linuxeden.com/forum/s ... &threadid=75276
发表于 2003-10-31 11:39:46 | 显示全部楼层
很好!谢谢!!
发表于 2003-10-31 13:29:30 | 显示全部楼层

兄弟好贴啊~~~

深入浅出很不错的贴子,顶!!
发表于 2003-10-31 22:39:39 | 显示全部楼层
rianren
我只想说你是个好人。总是给我惊喜。。。
你能不能把你发过的文章给个目录。。。
我要看完。
 楼主| 发表于 2003-10-31 23:17:44 | 显示全部楼层
其实我发的文章好少的, 我在www.linuxeden.com的freebsd版发的, 你可以看freebsd版精华区, 我自己发的几篇都在(自己加自己的为精华, 管它好不好:p), 以后还要努力, 继续学习!早日成为高手! :p
发表于 2003-11-1 00:42:45 | 显示全部楼层
期待OPENBSD 5
发表于 2004-2-6 19:05:59 | 显示全部楼层
HOHO,根据这篇文章所说的话,我在ports维护上至少可以得95分
说这种话有讨打的可能(知道了还不写出来),所以我还是鼓吹一下,portupgrade这个工具包真的是非常非常的不错,各位一定要试试,否则,你只享受了ports一半的乐趣。
发表于 2004-2-7 12:56:35 | 显示全部楼层
我能得一半分都不错了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表