FreeBSD Packages和Ports使用技巧

2008-02-23 08:01:28来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

FreeBSD的Packages和Ports绝对是一种完美的应用程序的安装和配置及反安装的解决方案,可以说完全可以同RedHat的RPM方案相比,只不过RPM的商业运做比较成功罢了。
下面是FreeBSD HandBook中文版里面的一些技巧,供大家参考。
4.5.安装中出现的问题
4.5.1. 一些问题与解答
4.5.1.1.我认为应该作一个有关modem 的讨论?
哦,你必须想到你电脑的串口。我们使用串口从一个Unix 系统到另一个系统传送程序。
4.5.1.2.应该用package 来安装额外的程序?
是的,通常这是最快速、最简单的方法。
4.5.1.3.为什么用port 来烦人呢?
几个原因:
1,一些软件的发布许可可能不允许采用二进制的方式分发。它们必须采用源代码的方
式分发。
2,一些人不信任二进制分发。至少带上源代码,你可以自己阅读,寻找可能存在的问
题。
3,如果你有本地的补丁,那你可能在打补丁的时候需要源代码。
4,你可能在程序的编译方式上与做这些程序的人有不同的看法。无论是建构调试版,
还是把它们分开,一些人喜欢采用最优化的设置来编译以达到最强大。通常发布的
软件包在设置方面都是比较保守的。如果port 对一个特殊的处理器在使用代码上有
一个编译选项,或是需要支持一个额外的设备,你可能需要亲自对这个port 进行编
译,不需要为提供每一个额外的支持而生成许多不同的软件包。有很多这样的例子。
如果一个软件包可能对一些特殊尺寸的纸张提供了默认的支持,那我们就要提供多
种软件包,每一种对应一种尺寸的纸张。
5,一些人喜欢围着代码转。如果它们觉得无聊,或想攻克它,或想从中学点东西,诸
如此类的,它们可能会去读它。
6, 如果你不能得到源代码,那它就不是软件了。
4.5.1.4. 什么是补丁?
一个补丁(patch)是一个小文件,主要描述文件如何从一个版本升级到另一个版本。
第12 页FreeBSD 使用手册
它一般是纯文本的,基本上说是些象“delete line 23”,“add these two lines after line
468”,或“change line 197 to this ”这样的东西。它们以diff 闻名,因为它们是由diff
这个程序产生。
4.3.1.5. tarball 是指什么?
它就是以.tar 结尾的文件,或者是诸如以.tar.gz,.tar.Z,.tar.bz2,.tgz 结尾的文件。
基本上,它是一个已经被打包或压缩的目录树。这种技术最早被用于磁带机上,但后来它被
广泛运用于互联网上用来发布程序源代码。你可以看到在它里面有些什么文件,甚至你可以
亲自使用标准的UNIX tar 程序解开它们,只要这样做:
% tar tvzf foobar.tar.gz
% tar xzvf foobar.tar.gz
% tar tvf foobar.tar
% tar xvf foobar.tar
4.5.1.6. 那checksum 呢?
这是一个由统计检查文件里所有资料而产生的数字。如果有任何字符改变了,那
checksum 就不会再跟统计的结果一样,所以经过简单的比较就可以看出差异。
4.5.1.7. 我照上面说的方法从光盘编译port 都很顺,怎么一安装kermit 就出错?
# make install
>> cku190.tar.gz doesn’t seem to exist on this system.
>> Attempting to fetch from ftp://kermit.columbia.edu/kermit/archives/.
为什么找不到,难道这张光盘没有用?
就像在从光盘编译ports 那节所解释的,有些port 因为授权的限制不能放进光盘。Kermit
就是个例子。Kermit 的授权不允许把它做的tarball 放进光盘,所以必须自己动手下载
------真是抱歉!
会有这些错误信息是因为当时没有连上网络。只要从MASTER_SITES (列在Makefile 里)中
所列的任一个网站把文件下载下来,就可以重新开始安装的步骤了。
4.5.1.8. 我照做了,可是当要把文件放进/usr/ports/distfiles 时却得到没有许可的错误
信息。
Port 的机制是到/usr/ports/distfiles 中找tarball,可是因为它是符号连接(symlink)
到光盘的,所以那个目录只读而且也没有办法复制任何东西进去。用下面说的方法就可以让
它去找其它地方:
第13 页FreeBSD 使用手册
# make DISTDIR=/where/you/put/it install
4.5.1.9. Ports 的设计是只有把所有东西都放在/usr/ports 下才能用吗?系统管理员说要
把所有东西都放在/u/people/guests/wurzburger 下,不过这样好象不能用。
可以用PORTSDIR 和PREFIX 这两个变量来告诉port 用别的目录。例如,
# make PORTSDIR=/u/people/guests/wurzburger/ports install
会在/u/people/guests/wurzburger/ports 里编译port 并把所有东西安装在/usr/local 下。
# make PREFIX=/u/people/guests/wurzburger/local install
会在/usr/ports 里编译port 并安装至/u/people/guests/wurzburger/local。毫无疑问的,
# make PORTSDIR=.../ports PREFIX=.../local install
会结合这两种(要在这页完整的写出来太长了,不过它应该给你点概要了)。如果不想每次安
装一个port 就要把这些字再打一次,把这设置放到环境变量里会是个好主意。读读shell
的联机手册来获得做这些事的指导。
4.5.1.10. 我没有FreeBSD 的光盘,不过我想要把所有的tarball 放在手边,这样就不用
每次装一个port 就要等待下载。有什么好方法可以一次全下载下来吗?
要得到ports collection 每个tarball 的话,执行:
# cd /usr/ports
# make fetch
4.5.1.11. 我知道从临近的FreeBSD mirror 站下载比较快。可是有办法从其它
MASTER_SITES 上面没有的站下载port 吗?
可以。如果知道的话,例如ftp.FreeBSD.org 比MASTER_SITES 上面列的任何站都近,
那就这么做:
# cd /usr/ports/directory
# make
MASTER_SITE_OVERRIDE=ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/
fetch
4.5.1.12. 要怎样在make 去下载文件前先知道所需的文件?
make fetch-list 会列出一个port 所需的文件。
4.5.1.13. 有办法在port 编译前停止吗?我想在它安装前hack 一下程序代码,不过每次
都要边看边按control-C 很讨厌。
用make extract 会在源代码下载完并解开后停止。
第14 页FreeBSD 使用手册

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:FreeBSD开发环境解决方案

下一篇:freebsd5.2.1上安装vmware 3.2.1