GoodQt 2014-06-10
在FreeBSD下提供了两套包管理工个,Ports Collection和Packages Collection分别用来管理源码软件包和二进制软件包,Ports Collection可以用来下载软件,配置,编译,安装全自动完,Ports在本地并没有可存二进制代码和源码包,而是在本地提供一个下载软件的地址或者找到软件的方法。
Ports使用的源码包是以tar.gz结尾的包,Packages使用二进制包是以.tgz结尾,在FreeBSD 的安装盘中所提供的软件包大多使用.tgz文件格式。可以方便的使用pkg_add 来进行安装。
如果使用MINI安装默认是不安装Ports树的,需要使用管理员进行安装Ports:
sysinstall-->Configure-->Distributions--> X ports -->OK -->CD/DVD 等一会就会安装好的。
Ports默认的安装目录是在/usr/ports在这个目录在各个软件分类在不同的目录里。/usr/ports就被称为Ports树。
如果只想安装某一个软件的ports可以不执行上面操作,直接在光盘里的/cdrom/packages/里面找到需要的文件解压过/usr/ports相应的目录里就可以了。
我使用的安装盘是FreeBSD 7.0-RELEASE,光盘上所带的包基本上都是最新的,因为本地存储的是描述文件,时间长了以后会和ftp.freebsd.org的port源码不一样,比如某个版本更新了。如要更新本地版式本,只要下载更新的ports包下来解压一下就好了。当然也可使用cvsup来同步全部的源码树,对整个Ports Collection进行更新。
在7.0-RELEASE中共包含了17742个软件包,找起来很麻烦。我们可以在/usr/ports目录下使用make print-index 来生成一个包索引,把输出内容重定向到一个文件,就可以方便的查询了。
make readme 生成当前目录下所有目录的一个描述索引(README.html)。
make readmes 会生成当前目录下所有子目录的描述索引(README.html)。可以做一个目录到apache下,很方便的浏览文件。
make search key=apache2 可以列出所有和apache2相关的软件包。这也是一种查找软件包的方法。
whereis ssh
ssh: /usr/bin/ssh /usr/share/man/man1/ssh.1.gz /usr/ports/security/ssh
从返回的信息里也可以看到ssh所在的ports树的位置。
找到软件包的位置了就可以进行安了,安装十分简单,比如安装ssh吧
#cd /usr/ports/security/ssh
#make install
下面的事情就是等待了,ports会先去/usr/ports/distfiles目录里找一下有没有找一下有没有ssh的码包,如果没有话就去网上找,编译的时候如果需要别的支持文件的话也会自动去网上下载下来进行编译安装。同样下载下来的tar.gz文件包存放在/usr/ports/distfiles里面,备份这个目录是一个好主意,这样在你的机器没有网络环境的时候也可以使用ports进行包安装,只要把备份起来的文件恢复到/usr/ports/distfiles里面。安装完成后会在/var/db/pkg目录里面写入一个package安装记录,从而使两个包管理软件相互同步。
make也有其它的一些参数,比如make fetch这个命令所做的只是把要安装包的从网上拿下来,而不进行编译安装。
make 不带任何参数的情况下,只对软件包过行编译,而不安装。这个命令会在目录下生成一个work的目录,里面包括了,编译参数,补丁信息,编译步骤,及一个解压出来的原码文件。
make package可以在安装完成之后生成了一个按make install参数安装的二进制安装包。
不带任何参数的mail install通常会把软件安装在/usr/local下面,执行程序放在/usr/local/bin中,配置文件放在/usr/local/etc中,启动文件会放在/var/local/etc/rc.d中。
删除安装的软件可以使用make deinstall也是非常简单的,只有几个提示。
ports还支持对全系统升级那个又可以写一个东西来单独说一下了。
pkg包管理主要是用来安装光盘上的二进制包
pkg_add pkname 以这样的格式进行去安装就可以了
usage: pkg_add [-vInfFrRMSK] [-t template] [-p prefix] [-P prefix] [-C chrootdir] pkg-name [pkg-name ...]
pkg_info可以用来查看已经安装上去的软件包,包括使用ports安装上去的也可以查到,这个命令所读取的是/var/db/pkg这目录里的信息。
usage: pkg_info [-bcdDEfgGiIjkKLmopPqQrRsvVxX] [-e package] [-l prefix]
[-t template] -a | pkg-name ...
pkg_info [-qQ] -W filename
pkg_info [-qQ] -O origin
pkg_info
pkg_delete删除一个包
pkg_version为把本地已经安装的包和远程服务器上进行比较,看是否已经有更新的了
我们直接指定到一个大空间去存储mysql数据。在CONFIGURE_ARGS=后面增加--with-charset=gb2312 \和--with-xcharset=all \ 两行才能支持中文字符。