占位图像 用户ID: 密码: 验证码: 登录 注册     占位图像
 
教育168搜索

a
频道信息
学前教育 基础教育
小学 初中
高中 高等教育
心理学 机械工程
园林 IT教育
办公软件 Director
Authorware 图形图象
FIREWORKS CORELDRAW
Maya PhotoShop
AutoCAD 3D
操作系统 Windows xp
Windows Vista Linux
Windows 2003 Windows 2000
FreeBSD 注册表
网站制作 FLASH
Dreamweaver CSS教程
装修设计 LightScape
装修风水 方案设计
英语 商务外语
素质教育 法制教育
企业培训
最新更新
·教你制作可以随身携带的Fre
·FreeBSD5.3与Apa
·FreeBSD5.3 Apa
·初学者入门:FreeBSD系
·FREEBSD下搭建支持JS
·FreeBSDhandboo
·FreeBSDhandboo
·FreeBSDhandboo
·FreeBSDhandboo
·FreeBSDhandboo
·FreeBSDhandboo
·FreeBSDhandboo
·FreeBSDhandboo
·FreeBSDhandboo
·FreeBSD下Apache
·FreeBSDhandboo
·FreeBSD4.7 Qma
·FREEBSD升级及优化全攻

点击排行
·FreeBSD网站平台建设全
·初学者入门:FreeBSD系
·教你制作可以随身携带的Fre
·FreeBSD5.3 Apa
·FreeBSD5.3与Apa
·FreeBSDhandboo
·porttree更新
·FreeBSD命令lastc
·FreeBSDkernel编
·在FreeBSD5.0上配置
·FreeBSDhandboo
·FreeBSD命令lastc
·FreeBSD中文化全攻略
·FreeBSD上的软件安装方
·利用FreeBSD组建安全的
·FreeBSDhandboo
·在FreeBSD上运行Win
·FreeBSD与Linux的

Ports&Package
发布日期:2005-3-28  浏览:242次
关键字:
在Windows底下要安装新的应用程式时,通常就是执行一下SETUP.EXE
,选选安装目录,回答几个简单问题,然後SETUP.EXE就会帮你把该做
的事做好。但是在UN*X的世界里通常不是就不是这麽简单了,除非你
买的是商业软体,不然一般你拿到的会是一包一包的sourcecode,而
不是现成弄好的可执行档。

在Windows的世界里,一方面因为应用程式是一个个的商品,为了商品
的利益,厂商不可能把形同命脉的sourcecode丢出来给你;另一方面
也因为Windows就只在Intel系列的平台上面执行(当做没有NT可
以在Alpha上面跑这一回事存在:P),它就不需要考虑编成binary
後在不同平台上面的适应性。反观UN*X的世界,UN*X是架构在各式各
样不同的平台上面,你绝对没办法用同一套binary吃遍所有的系统。
而且在UN*X世界中,许多程式的作者并不把能从他写的程式获得多少
利益摆在最重要的位置,而是希望他所写的程式能让更多的人受惠,并
希望他的程式能变好,所以他们会把sourcecode放出来,大家一
起来集思广益,让程式更好。

在UN*X下的程式,一般都是用C语言来写的。虽然C语言有它的标
准,而且本身已经有很好的可携性,但是在不同的UN*X系统下,却还
是会有"大同小异"的问题存在。虽然整个程式的大体架构、语法大致
相同,但是不同的系统间还是有些小小的差异,比如说headfile的不
同啦、资料型态资料大小的不同啦、系统目录结构的不同啦....etc。因
为这些大同小异,所以即使你在一个系统上面写的程式能在这个系统上
面正常的compile,正确的执行,但是拿到另一个系统上面却未必行得
通,通常必需视不同的系统做不同的修改。这种把A系统上面可以正常
运作的程式,弄成在B系统上面也能正常运作的工作,就称为"PORT"


简单的PORT可能改改目录位置,加上几个#ifdef之类的东东就可以
解决了,但是有时候如果遇到像是程式和系统的关连太深、程式用到一
些A系统内部提供但B系统却没有的功能时,那PORT的工作就不是
那麽简单了。但是,如果你选用了FreeBSD,那就只有一句话:啊~福
气啦!在FreeBSDcoreteam有系统的整理之下,目前FreeBSD已经有
超过二千种各式各样应用程式的ports,使用这些ports,你不需要自
己再去看source改code,所有需要修改的部份都已经有人代劳,帮你
改得好好的,你所需要做的事情非常的简单:makeinstall。是的,就
是这麽一道指令,一切OK。

因为目前FreeBSD只能在Intel系列的系统上跑,所以如果你觉得用
ports还要自己compile很麻烦,FreeBSD提供你另一项选择:package
。所谓的package就是有人帮你把程式都compile成binary了,并
把这些binary及一些相关的文件、档案压成一个*.tgz档,你只需要
直接用pkg_add就可以进行安装,把这些binary放进系统里面,直接
就可以使用了,方便省事。不过一般如果可以的话还是比较建议使用
ports来安装。

package就是别人帮你compile好的ports,而ports就是要自己从
sourcecode来compile出binary,但是已经有人把该修改的东东修
改好了,你无需再烦心如何让这个程式能在FreeBSD上正常的compile
正常的运作。一般的ports/package都会把东东放到/usr/local目录
下面,执行档就放到/usr/local/bin,设定资料放在/usr/local/etc
,library放在/usr/local/lib,manual放在/usr/local/man。

package是一个一个的tgz档,你可以在
ftp://freebsd.csie.nctu.edu.tw/pub/packages-*目录下面找到所有
的package,如果你用的是FreeBSD2.2*,就找packages-2.2,若是
3.0*,则是packages-3.0。packages-*目录下面还把各种packages
依照功能等特性分类,让你可以更方便的找到你所要的东东。在这里就
拿audio/amp-0.7.6.tgz来说,用tar-tvzfamp-0.7.6.tgz可以看
到它的内容如下:

-rw-r--r--root/bin181Nov617:541997 CONTENTS
-rw-r--r--root/bin19Nov617:541997 COMMENT
-rw-r--r--root/bin514Nov617:541997 DESC
-rw-r--r--root/wheel4358Nov609:141997 MTREE_DIRS
-r-xr-xr-xbin/bin94208Nov617:531997bin/amp
-r--r--r--bin/bin853Nov617:531997man/man1/amp.1.gz

其中 COMMENT这个档案简单介绍一下这个package,而 DESC里面则
是较详细的介绍或是一些注意事项等。 CONTENTS里面则是列出了这个
package里面有哪些档案,它们会被安装到哪里去。你用pkg_add来安
装或是用pkg_delete来反安装package时会参考到这些资料。
MTREE_DIRS里面放的是要丢给mtree的资料,用来设定档案目录的权
限等等的。接下来有几个目录、档案。这些目录都是相对於/usr/local
的,也就是说这里面的bin/amp到时候会安装到/usr/local/bin/amp
之下。和package相关的几个指令详述如下:

pkg_info:用来查看这个package是什麽。它会把package里面的
COMMENT和 DESC抓出来,解说一下这个package的功能等资料。

pkg_add:用来安装package。它会按照package里面的设定,把各个
档案拷到正确的位置,然後在/var/db/pkg下面造出该package的目
录,把 CONTENTS COMMENT DESC等档案拷过去。以前面的amp来说
,使用pkg_addamp-0.7.6.tgz会建立并把这三个档案拷到
/var/db/pkg/amp-0.7.6目录下去。

pkg_delete:用来反安装package。它会到/var/db/pkg/[package]目
录下面找出这个package安装了哪些东东,把它们通通移除,最後会把
/var/db/pkg/[package]目录也移除。比如说要反安装前面安装过的
amp,直接执行pkg_deleteamp-0.7.6即可。

如果你凡事都喜欢自己来事必亲躬,那麽你可以自己从ports里面做
compile,如果你看得懂source,还可以自己改改code,做做tuning
,量身订做弄出一个最适合自己的专用程式来。这种一手掌控的快感,
是你用Windows系统时所无法享受到的。ports主要分为两部份,一部
份就是原始的sourcecode,这些source大部份都放在
ftp://freebsd.csie.nctu.edu.tw/pub/distfiles里面。另一部份则是
这个ports如果要在FreeBSD下面编译、执行的话所需要的修改及摆
放的位置等设定,这一部份主要是放在
ftp://freebsd.csie.nctu.edu.tw/pub/ports-*目录下面。这个目录和
package一样,也是依照不同的应用特性来做分类。还是拿amp来说,
在audio/amp目录下面,你可以看到:

drwxr-xr-x2UPLOADUPLOAD512Oct900:24CVS
-rw-r--r--1UPLOADUPLOAD528Sep308:35Makefile
drwxr-xr-x3UPLOADUPLOAD512Oct900:24files
drwxr-xr-x3UPLOADUPLOAD512Oct900:24patches
drwxr-xr-x3UPLOADUPLOAD512Oct900:24pkg

Makefile指定了这个ports该如何编译、sourcecode要去哪里抓、
需要先安装哪些其它相关的ports、如何instal....等等的讯息。
files目录下一般是放sourcecode的md5checksum,以免抓到错误
的sourcecode包裹。patches里面放的是这个ports如果要改用到
FreeBSD下面所需要做的修改。pkg目录下面是这个ports的相关资料
,和package里面那些 CONTENTS COMMENT DESC有相同的功效。如
果你要使用ports,必需把该目录下的所有东东(嗯,其实CVS都没用
到)照原来的目录结构整个抓下来,如果你是用ncftp,就用get-R
来抓。一般抓下来的ports应该是放在/usr/ports/下的对应目录下
,如amp就应该放在/usr/ports/audio/amp/下,但是并没有硬性规
定就是了。

整个目录抓下来後,再来就是要执行make了。在ports下make有几
种不同的参数,这些参数在/usr/share/mk/bsd.port.mk里面都有详细
的解说。当你直接打make时,其实就是按照fetch(抓回source)->
extract(检查source的md5并解开source)->patch(对source做
patch)->configure(设定)->build(编译)这样一路做下来,把整个
ports编译好,而要等到你指定了makeinstall後才会真的把这个
ports安装到系统上去。最後安装完後可以再makeclean,把解开的
source等东东清除掉。

在makefetch时,系统会依照下列顺序来寻找需要的source:

1./usr/ports/distfiles下
2./etc/make.conf档中指定的MASTER_SITE_BACKUP
3.Makefile里指定的MASTER_SITES

/etc/make.conf内定是到FreeBSD总部去抓,不过其实一般这些
source都可以在ftp://freebsd.csie.nctu.edu.tw/pub/distfiles目
录下面抓到,所以你可以把MASTER_SITE_BACKUP改成:

MASTER_SITE_BACKUP?=\
ftp://freebsd.csie.nctu.edu.tw/pub/distfiles/${DIST_SUBDIR}/

节省到国外抓档的频宽。当makeextract後,会把source解开到
working目录下去。如果你想自己改一改source,可以在makepatch
之後到working目录下去修改。然後makeconfigure和makebuild
时我们大概也没什麽事好做了,就看电脑萤幕上的字一行行的向上,
简单一点的ports可能你做十下伏地挺身它就能make好,大一点的可
能就你出去跟人聊天串门子回来後它还在跑。

有时候呢,portsA会和portsB发生关,在安装portsA时系统
会去找portsB,如果找到会先装好portsB再回头来装portsA,但
是如果找不到portsB时就会给你一个警告,你就需要再去抓portsB
回来安装。但是这样缺啥补啥也是满麻烦的,即然用了FreeBSD就要善
用FreeBSD提供的好用功能--CTM。首先,/usr/ports下最好有
50Mb左右的硬碟空间,然後到
ftp://freebsd.csie.nctu.edu.tw/pub/CTM/ports-cur下面抓回
ports-cur.????xEmpty.gz(找一个数字最大的????抓)以及所有
*>????的ports-cur.*.gz,比如说你抓了ports-cur.2000xEmpty.gz
,那就要把ports-cur.2001.gz,ports-cur.2002.gz....通通抓回来
。如果你抓回来的gz档都放在/tmp/ctm下,就使用以下指令:

cd/usr/ports
/bin/rm-rf*
ctm-v/tmp/ctm/*

这样就会把全部的ports通通收在你的系统上,以後安装时就不需要再
担心缺东少西的问题了。而且之後如果ports又有更新,也只需要抓回
新的gz档,用ctm来更新即可,方便又省事。
关键字:

相关信息 用户评论
·教你制作可以随身携带的FreeBSD系统
·FreeBSD5.3与Apache2.0建立列目录
·FreeBSD5.3 Apache ssl认证
·初学者入门:FreeBSD系统的安装与优化
·FreeBSD下Apache2.0运行模型分析及性能调整
·FreeBSDhandbook中文版12存储
·FreeBSDhandbook中文版10安全
·FreeBSDhandbook中文版15串口通讯
·FreeBSDhandbook中文版14声卡
·FreeBSDhandbook中文版11打印(1)基本设置
·FreeBSDhandbook中文版11打印(1)基本设置
·FreeBSDhandbook中文版11打印(2)高级打印机设置A.过滤器
·FreeBSDhandbook中文版11打印(2)高级打印机设置B.Header
·FreeBSDhandbook中文版8用户和基本的帐户管理
·在FREEBSD5中使用MRTG画出Packet图表
·FreeBSDhandbook中文版5XWindow系统
·FREEBSD下搭建支持JSP的WEBSERVER
·FreeBSD4.7 Qmail Mysql Vpopmail QmailAdmin Sq

 

更多评论

验证码:
验证码