12月7
FreeBSD的软件是用ports来进行管理的。
一、ports自身相关:
1、ports的安装:
如果在安装FreeBSD过程中没有安装ports,则挂载FreeBSD的第一张安装光盘到光驱,然后通过以下方法进行安装:
[root@FreeBSD ~]# sysinstall
在出现的窗口中依次选择:Configure-->Distributions-->ports,安装系统会自动复制文件至完成。
2、ports的路径:
ports的默认路径是/usr/ports,这个ports的根目录,下面有很多的文件夹及子文件夹,组成一个树状目录,包含大量ports下的软件,这些即是套件的软件分类和名称,比如mail代表邮件服务软件;games则是一些游戏;www里面是一些web服务软件;databases则是数据库软件……
3、利用ports进行软件的安装:make install clean
ports的根目录,下面有很多的文件夹及子文件夹,组成一个树状目录,包含大量ports下的软件:比如www。
[root@FreeBSD ~]# cd /usr/ports/www/apache22
[root@FreeBSD /usr/ports/www/apache22]# make install clean
/usr/ports/distfiles是存放软件包的文件夹,ports就会先检查/usr/ports/distfiles目录内有没有这个软件包,如果没有它就会自动从网上下载安装。
4、ports的源:
ports从网上下载软件包自动安装,那么从那里下载呢?这就需要一个源地址管理,跟ubuntu上的/etc/source.list文件一样,freebsd用的文件是/etc/make.conf,我们来编辑这个文件,加入下列几行,国内比较块的源:
注意:有新的服务器加入就直接往后面加就可以了,格式就是“源地址+/${DIST_SUBDIR}/ \”。但是不要同时存在2个“MASTER_SITE_OVERRIDE?”,否则第二个就无效了。
5、ports树目录的更新:
既然ports的树目录全部下载到本地,那么freeBSD有新的软件包了或者添置了新的软件,本地目录树就不会更新。所以我们在一段时间需要更新本地目录树。
ports树目录有两种更新方法,下面分别介绍:
A、cvsup命令
cvsup的安装:
如果你在命令下输入:cvsup,提示command not found,则说明cvsup没有被安装。我们就用ports来安装cvsup,cvsup位于/usr/ports/net目录下。并且有2个软件包,一个叫cvsup,一个叫cvsup-without-gui。cvsup-without-gui是纯命令模式的cvsup,在终端下一般用这个,那么我们就安装它好了:
ports-supfile就是cvsup升级目录树用到的配置文件,等会我们更新的时候需要指定配置文件,所以不建议直接在此文件上更改,我们可以先复制一个到其他地方(这里我们复制到/etc),然后修改那个复制文件:
1) *default host=就是需要从哪里更新的服务,我们把他改成国内的:
2) 后面的ports-all表示更新/usr/ports内所有的目录树,如果你只想更新一部分目录,那么就把ports-all前面加“#”注释起来,然后把后面“#ports-base”这样需要更新的文件夹前面的“#”注释去掉。
利用cvsup进行更新:
开始更新就比较简单了,只要一个命令即可:
注意:如果你是“ports-all”的话,要很长时间哦,大约需要1个小时,甚至更长。
B、使用portsnap来更新ports目录树:
portsnap是freebsd6以后才有的,他是以压缩包的形式,先把最新的压缩包形式的ports快照下载到/var/db/portsnap文件夹,然后再更新到/usr/ports中。
freebsd6以后的系统,portsnap是不需要手工安装的,已经默认直接在系统中了,所以可以直接使用portsnap命令来更新ports目录树。
当然ports中也有这个软件包:
portsnap的配置:
我们使用portsnap,首先要设置一下它的配置文件,位于/etc/portsnap.conf:
这个是他的更新服务器,另外还有几个国内比较块的portsnap服务器:
首次使用portsnap:
在你的freebsd首次使用portsnap必须执行下面2步:
*portsnap fecth是从网上获取portsnap快照的最新压缩包,听闻这个压缩包官方没小时更新一次。
*portsnap extract 则是把这个压缩包创立到/usr/ports。哪怕你以前已经手工安装了ports,他也会重新创立一次。
以后使用portsnap更新ports:
以后更新,只需要执行下面2步:
portsnap第一次运行extract命令时,可能需要一段时间,以后更新使用update的时候,速度就块很多了。
二、利用ports进行软件的管理
1、软件的安装:make install clean
[root@FreeBSD ~]# cd /usr/ports/archivers/rpm
[root@FreeBSD /usr/ports/archivers/rpm]# make install clean
如果要清除www内所有的暂存文件(暂存文件是指编译过程产生的一些临时文件,也是软件目录内的work文件夹),进入/usr/ports/www目录执行make clean:
[root@FreeBSD ~]cd /usr/ports/www
[root@FreeBSD /usr/ports/www]# make clean
相应的,如果要清除所有的暂存文件,刚直接进入ports目录下,执行make clean:
[root@FreeBSD ~]# cd /usr/ports
[root@FreeBSD /usr/ports]# make clean
注意:make clean只是清除暂存文件,并不是清除distfiles里面的软件包。
如果要清除distfile文件夹里面的内容呢?则执行make distclean:
[root@FreeBSD ~]# cd /usr/ports/www/apache22
[root@FreeBSD /usr/ports/www/apache22]# make distfile
make distclean不但会清除软件包,而且包含了make clean命令。这样就会清除apache22的软件包,以及apache22目录内的work文件夹。
同理,如果要清除所有www内的软件包及暂存文件,就进入/usr/ports/www目录;如果要清除所有的包及暂存文件,就进入/usr/ports根目录。
2、软件的卸载:make deinstall
以卸载apache为例:
[root@FreeBSD ~]# cd /usr/ports/www/apache22
[root@FreeBSD /usr/ports/www/apache22]# make desintall
3、查询可用ports安装的软件:make search key=软件包名 [参数]
[root@FreeBSD ~]# cd /usr/ports
[root@FreeBSD /usr/ports]# make search key=apache
不过这样操作会搜到很多相关(以apache打头)的结果,但请注意有一个细节,就是Port和Path两个关键字,一个代表名字,一个代表路径,我们综合起来使用:
[root@FreeBSD /usr/ports]# make search key=^apache-2 | grep -E "Port:|Path:|Info:"
Port: apache-2.0.61_2
Path: /usr/ports/www/apache20
Info: Version 2 of Apache web server with prefork MPM.
Port: apache-2.1.9_7
Path: /usr/ports/www/apache21
Info: Version 2.1 of Apache web server with prefork MPM.
Port: apache-2.2.6_2
Path: /usr/ports/www/apache22
Info: Version 2.2 of Apache web server with prefork MPM.
还可以进一步来增强查询,就是在获取一个空行,这样让查询结果更直观一点:
[root@FreeBSD /usr/ports]# make search key=^apache-2 | grep -E "Port:|Path:|Info:|^$"
Port: apache-2.0.61_2
Path: /usr/ports/www/apache20
Info: Version 2 of Apache web server with prefork MPM.
Port: apache-2.1.9_7
Path: /usr/ports/www/apache21
Info: Version 2.1 of Apache web server with prefork MPM.
Port: apache-2.2.6_2
Path: /usr/ports/www/apache22
Info: Version 2.2 of Apache web server with prefork MPM.
4、查询已安装的软件:pgk_info
pgk_info类似CentOS下的rpm -qa命令,
[root@FreeBSD ~]# pkg_info | grep samba
samba-3.0.32_1,1 A free SMB and CIFS client and server for UNIX
samba-libsmbclient-3.0.28 Shared libs from the samba package
一、ports自身相关:
1、ports的安装:
如果在安装FreeBSD过程中没有安装ports,则挂载FreeBSD的第一张安装光盘到光驱,然后通过以下方法进行安装:
[root@FreeBSD ~]# sysinstall
在出现的窗口中依次选择:Configure-->Distributions-->ports,安装系统会自动复制文件至完成。
2、ports的路径:
ports的默认路径是/usr/ports,这个ports的根目录,下面有很多的文件夹及子文件夹,组成一个树状目录,包含大量ports下的软件,这些即是套件的软件分类和名称,比如mail代表邮件服务软件;games则是一些游戏;www里面是一些web服务软件;databases则是数据库软件……
3、利用ports进行软件的安装:make install clean
ports的根目录,下面有很多的文件夹及子文件夹,组成一个树状目录,包含大量ports下的软件:比如www。
[root@FreeBSD ~]# cd /usr/ports/www/apache22
[root@FreeBSD /usr/ports/www/apache22]# make install clean
/usr/ports/distfiles是存放软件包的文件夹,ports就会先检查/usr/ports/distfiles目录内有没有这个软件包,如果没有它就会自动从网上下载安装。
4、ports的源:
ports从网上下载软件包自动安装,那么从那里下载呢?这就需要一个源地址管理,跟ubuntu上的/etc/source.list文件一样,freebsd用的文件是/etc/make.conf,我们来编辑这个文件,加入下列几行,国内比较块的源:
[root@FreeBSD~]# ee /etc/make.conf MASTER_SITE_OVERRIDE?= \
http://ports.hshh.org/${DIST_SUBDIR}/ \
http://ports.cn.freebsd.org/${DIST_SUBDIR}/ \
ftp://ftp.freebsdchina.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/ \
http://ports.hshh.org/${DIST_SUBDIR}/ \
http://ports.cn.freebsd.org/${DIST_SUBDIR}/ \
ftp://ftp.freebsdchina.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/ \
注意:有新的服务器加入就直接往后面加就可以了,格式就是“源地址+/${DIST_SUBDIR}/ \”。但是不要同时存在2个“MASTER_SITE_OVERRIDE?”,否则第二个就无效了。
5、ports树目录的更新:
既然ports的树目录全部下载到本地,那么freeBSD有新的软件包了或者添置了新的软件,本地目录树就不会更新。所以我们在一段时间需要更新本地目录树。
ports树目录有两种更新方法,下面分别介绍:
A、cvsup命令
cvsup的安装:
如果你在命令下输入:cvsup,提示command not found,则说明cvsup没有被安装。我们就用ports来安装cvsup,cvsup位于/usr/ports/net目录下。并且有2个软件包,一个叫cvsup,一个叫cvsup-without-gui。cvsup-without-gui是纯命令模式的cvsup,在终端下一般用这个,那么我们就安装它好了:
[root@FreeBSD ~]# cd /usr/ports/net
[root@FreeBSD /usr/ports/net]# ls -d cvsup*
cvsup cvsup-mirror cvsup-without-gui cvsupchk
[root@FreeBSD /usr/ports/net]# cd cvsup-without-gui
[root@FreeBSD /usr/ports/net/cvsup-without-gui]# make install clean
cvsup的配置:
vsup安装后,可以进/usr/share/examples/cvsup查看相关配置文件:[root@FreeBSD /usr/ports/net]# ls -d cvsup*
cvsup cvsup-mirror cvsup-without-gui cvsupchk
[root@FreeBSD /usr/ports/net]# cd cvsup-without-gui
[root@FreeBSD /usr/ports/net/cvsup-without-gui]# make install clean
cvsup的配置:
[root@FreeBSD ~]#cd /usr/share/examples/cvsup
[root@FreeBSD /usr/share/examples/cvsup]#ls
README doc-supfile ports-supfile refuse.README standard-supfile
cvs-supfile gnats-supfile refuse stable-supfile www-supfile
[root@FreeBSD /usr/share/examples/cvsup]#ls
README doc-supfile ports-supfile refuse.README standard-supfile
cvs-supfile gnats-supfile refuse stable-supfile www-supfile
ports-supfile就是cvsup升级目录树用到的配置文件,等会我们更新的时候需要指定配置文件,所以不建议直接在此文件上更改,我们可以先复制一个到其他地方(这里我们复制到/etc),然后修改那个复制文件:
[root@FreeBSD /usr/share/examples/cvsup]# cp ports-supfile /etc
[root@FreeBSD /usr/share/examples/cvsup]# ee /etc/ports-supfile
# listed at http://www.freebsd.org/doc/handbook/mirrors.html.
*default host=CHANGE_THIS.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix
ports-all
# These are the individual collections that make up "ports-all". If you
# use these, be sure to comment out "ports-all" above.
……(省略若干行注释)
#ports-base
#ports-accessibility
#ports-arabic
#ports-archivers
#ports-astro
#ports-audio
#ports-benchmarks
……(省略若干行目录注释)
[root@FreeBSD /usr/share/examples/cvsup]# ee /etc/ports-supfile
# listed at http://www.freebsd.org/doc/handbook/mirrors.html.
*default host=CHANGE_THIS.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix
ports-all
# These are the individual collections that make up "ports-all". If you
# use these, be sure to comment out "ports-all" above.
……(省略若干行注释)
#ports-base
#ports-accessibility
#ports-arabic
#ports-archivers
#ports-astro
#ports-audio
#ports-benchmarks
……(省略若干行目录注释)
1) *default host=就是需要从哪里更新的服务,我们把他改成国内的:
*default host=cvsup2.cn.freebsd.org
2) 后面的ports-all表示更新/usr/ports内所有的目录树,如果你只想更新一部分目录,那么就把ports-all前面加“#”注释起来,然后把后面“#ports-base”这样需要更新的文件夹前面的“#”注释去掉。
利用cvsup进行更新:
开始更新就比较简单了,只要一个命令即可:
[root@FreeBSD ~]# cvsup -g -L 2 /etc/ports-supfile
注意:如果你是“ports-all”的话,要很长时间哦,大约需要1个小时,甚至更长。
B、使用portsnap来更新ports目录树:
portsnap是freebsd6以后才有的,他是以压缩包的形式,先把最新的压缩包形式的ports快照下载到/var/db/portsnap文件夹,然后再更新到/usr/ports中。
freebsd6以后的系统,portsnap是不需要手工安装的,已经默认直接在系统中了,所以可以直接使用portsnap命令来更新ports目录树。
当然ports中也有这个软件包:
[root@FreeBSD /var/db]# cd /usr/ports
[root@FreeBSD /usr/ports]# make search key=^portsnap
Port: portsnap-1.1
Path: /usr/ports/ports-mgmt/portsnap
Info: Provides secure snapshots of the ports directory
Maint: cperciva@daemonology.net
B-deps:
R-deps: bsdiff-4.3
WWW: http://www.daemonology.net/portsnap/
[root@FreeBSD /usr/ports]# make search key=^portsnap
Port: portsnap-1.1
Path: /usr/ports/ports-mgmt/portsnap
Info: Provides secure snapshots of the ports directory
Maint: cperciva@daemonology.net
B-deps:
R-deps: bsdiff-4.3
WWW: http://www.daemonology.net/portsnap/
portsnap的配置:
我们使用portsnap,首先要设置一下它的配置文件,位于/etc/portsnap.conf:
[root@bsd01 /usr/ports]#vi /etc/portsnap.conf
把SERVERNAME=portsnap.freebsd.org
修改成:
SERVERNAME=portsnap.hshh.org
把SERVERNAME=portsnap.freebsd.org
修改成:
SERVERNAME=portsnap.hshh.org
这个是他的更新服务器,另外还有几个国内比较块的portsnap服务器:
portsnap.hshh.org
portsnap2.hshh.org
portsnap3.hshh.org (网通)
portsnap4.hshh.org
portsnap2.hshh.org
portsnap3.hshh.org (网通)
portsnap4.hshh.org
首次使用portsnap:
在你的freebsd首次使用portsnap必须执行下面2步:
[root@FreeBSD ~]# portsnap fetch
[root@FreeBSD ~]# portsnap extract
*这2步可以合成使用:
[root@FreeBSD ~]# portsnap fetch extract
[root@FreeBSD ~]# portsnap extract
*这2步可以合成使用:
[root@FreeBSD ~]# portsnap fetch extract
*portsnap fecth是从网上获取portsnap快照的最新压缩包,听闻这个压缩包官方没小时更新一次。
*portsnap extract 则是把这个压缩包创立到/usr/ports。哪怕你以前已经手工安装了ports,他也会重新创立一次。
以后使用portsnap更新ports:
以后更新,只需要执行下面2步:
[root@FreeBSD ~]# portsnap fetch
[root@FreeBSD ~]# portsnap update
*这2步可以合成使用:
[root@FreeBSD ~]# portsnap fetch update
[root@FreeBSD ~]# portsnap update
*这2步可以合成使用:
[root@FreeBSD ~]# portsnap fetch update
portsnap第一次运行extract命令时,可能需要一段时间,以后更新使用update的时候,速度就块很多了。
二、利用ports进行软件的管理
1、软件的安装:make install clean
[root@FreeBSD ~]# cd /usr/ports/archivers/rpm
[root@FreeBSD /usr/ports/archivers/rpm]# make install clean
如果要清除www内所有的暂存文件(暂存文件是指编译过程产生的一些临时文件,也是软件目录内的work文件夹),进入/usr/ports/www目录执行make clean:
[root@FreeBSD ~]cd /usr/ports/www
[root@FreeBSD /usr/ports/www]# make clean
相应的,如果要清除所有的暂存文件,刚直接进入ports目录下,执行make clean:
[root@FreeBSD ~]# cd /usr/ports
[root@FreeBSD /usr/ports]# make clean
注意:make clean只是清除暂存文件,并不是清除distfiles里面的软件包。
如果要清除distfile文件夹里面的内容呢?则执行make distclean:
[root@FreeBSD ~]# cd /usr/ports/www/apache22
[root@FreeBSD /usr/ports/www/apache22]# make distfile
make distclean不但会清除软件包,而且包含了make clean命令。这样就会清除apache22的软件包,以及apache22目录内的work文件夹。
同理,如果要清除所有www内的软件包及暂存文件,就进入/usr/ports/www目录;如果要清除所有的包及暂存文件,就进入/usr/ports根目录。
2、软件的卸载:make deinstall
以卸载apache为例:
[root@FreeBSD ~]# cd /usr/ports/www/apache22
[root@FreeBSD /usr/ports/www/apache22]# make desintall
3、查询可用ports安装的软件:make search key=软件包名 [参数]
[root@FreeBSD ~]# cd /usr/ports
[root@FreeBSD /usr/ports]# make search key=apache
不过这样操作会搜到很多相关(以apache打头)的结果,但请注意有一个细节,就是Port和Path两个关键字,一个代表名字,一个代表路径,我们综合起来使用:
[root@FreeBSD /usr/ports]# make search key=^apache-2 | grep -E "Port:|Path:|Info:"
Port: apache-2.0.61_2
Path: /usr/ports/www/apache20
Info: Version 2 of Apache web server with prefork MPM.
Port: apache-2.1.9_7
Path: /usr/ports/www/apache21
Info: Version 2.1 of Apache web server with prefork MPM.
Port: apache-2.2.6_2
Path: /usr/ports/www/apache22
Info: Version 2.2 of Apache web server with prefork MPM.
还可以进一步来增强查询,就是在获取一个空行,这样让查询结果更直观一点:
[root@FreeBSD /usr/ports]# make search key=^apache-2 | grep -E "Port:|Path:|Info:|^$"
Port: apache-2.0.61_2
Path: /usr/ports/www/apache20
Info: Version 2 of Apache web server with prefork MPM.
Port: apache-2.1.9_7
Path: /usr/ports/www/apache21
Info: Version 2.1 of Apache web server with prefork MPM.
Port: apache-2.2.6_2
Path: /usr/ports/www/apache22
Info: Version 2.2 of Apache web server with prefork MPM.
4、查询已安装的软件:pgk_info
pgk_info类似CentOS下的rpm -qa命令,
[root@FreeBSD ~]# pkg_info | grep samba
samba-3.0.32_1,1 A free SMB and CIFS client and server for UNIX
samba-libsmbclient-3.0.28 Shared libs from the samba package
FreeBSD黑洞模式
httpd: Could



