注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

phperwuhan的博客

记载一个phper的历程!phperwuhan.blog.163.com

 
 
 

日志

 
 

FreeBSD 8下如何最有效率的安装软件  

2011-08-04 16:38:29|  分类: freebsd |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

来源:http://ocelot1985-163-com.iteye.com/blog/1054217

Ports机制

首先,FreeBSD下最有特色的软件安装和升级机制就是ports,既方便又高效。下面我们从ports套件的安装开始讲起,让你细致的了解有关ports的每一个细节。



一、ports套件的安装

①我的FreeBSD 8.0-release是最小化安装,所以既没有ports,也没有/usr/ports目录。选择启用ports的话,需要在root下输入"sysinstall"来安装它:

输入sysinstall --> 选择Configure --> Distributions --> ports,然后安装即可。

②ports的默认路径是/usr/ports。这个ports的根目录下面有很多的文件夹及子文件夹,组成一个树状目录,包含大量ports下的软件。比如mail是邮件服务软件,games是游戏,www代表web服务软件,databases则是数据库软件。

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. [root@bsd01 /usr/ports]# cd www   
  2. [root@bsd01 /usr/ports/www]# ls -d apache*   
  3. apache-contrib apache13 apache13-modssl+ipv6   
  4. apache-forrest apache13+ipv6 apache13-ssl   
  5. apache-jserv apache13-modperl apache20   
  6. apache-mode.el apache13-modssl apache22  
[root@bsd01 /usr/ports]# cd www  [root@bsd01 /usr/ports/www]# ls -d apache*  apache-contrib apache13 apache13-modssl+ipv6  apache-forrest apache13+ipv6 apache13-ssl  apache-jserv apache13-modperl apache20  apache-mode.el apache13-modssl apache22



如果你需要安装什么软件,只要进入当前目录,然后“make install clean”即可。

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. [root@bsd01 ~]# cd /usr/ports/www/apache22   
  2. [root@bsd01 /usr/ports/www/apache22] make install clean  
[root@bsd01 ~]# cd /usr/ports/www/apache22  [root@bsd01 /usr/ports/www/apache22] make install clean



/usr/ports/distfiles是存放软件包的文件夹。ports会先检查/usr/ports/distfiles目录内有没有这个软件包,如果没有它就会自动从网上下载安装。

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. [b]二、加速ports的升级速度[/b]  
[b]二、加速ports的升级速度[/b]



ports从网上下载软件包自动安装,那么从那里下载呢?首先,我们需要安装axel来取代默认的下载工具fetch,这样可以提高ports的安装速度:

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. cd /usr/ports/ftp/axel   
  2. make install  
cd /usr/ports/ftp/axel  make install



然后,我们需要一个源地址管理。跟ubuntu上的/etc/source.list文件一样,freebsd用的文件是/etc/make.conf,我们可以修改其文件,达到加速下载的目的。

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. #修改 /et/make.conf   
  2. vi /etc/make.conf   
  3. #加入以下内容   
  4. FETCH_CMD=axel   
  5. FETCH_BEFORE_ARGS= -n 10 -a   
  6. FETCH_AFTER_ARGS=   
  7. DISABLE_SIZE=yes   
  8. MASTER_SITE_OVERRIDE?=\   
  9. http://ports.hshh.org/${DIST_SUBDIR}/\   
  10. http://ports.cn.freebsd.org/${DIST_SUBDIR}/\   
  11. ftp://ftp.freeBSDchina.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/   
  12. MASTER_SITE_OVERRIDE?=${MASTER_SITE_BACKUP}     
#修改 /et/make.conf  vi /etc/make.conf  #加入以下内容  FETCH_CMD=axel  FETCH_BEFORE_ARGS= -n 10 -a  FETCH_AFTER_ARGS=  DISABLE_SIZE=yes  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}/  MASTER_SITE_OVERRIDE?=${MASTER_SITE_BACKUP}   

   

这样处理后,在公司的网络环境下,FreeBSD的下载速度明显提高了,有时居然能达到1M/s,这样升级及安装软件方便极了;呵呵,终于可以摆脱fetch的龟速了。

三、更新ports目录树

既然ports的树目录全部下载到本地,那么即使FreeBSD有新的软件包或者添置了新的软件,本地目录树也不会更新。所以,我们每隔一段时间需要更新本地目录树。我来介绍一种在FreeBSD中方便、快捷的更新ports的方法:使用portsnap来更新ports目录树。

①配置portsnap:

我们使用portsnap,首先要设置一下它的配置文件,位于/etc/portsnap.conf:

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. [root@bsd01 /usr/ports]# vi /etc/portsnap.conf  
[root@bsd01 /usr/ports]# vi /etc/portsnap.conf





SERVERNAME=portsnap.freebsd.org

修改成:

SERVERNAME=portsnap.hshh.org

这个是他的更新服务器。另外还有几个国内比较快的portsnap服务器:

portsnap.hshh.org

portsnap2.hshh.org

portsnap3.hshh.org (网通)

portsnap4.hshh.org

②首次使用portsnap:

在你的FreeBSD首次使用portsnap必须执行下面2步:

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. [root@bsd01 ~]# portsnap fetch   
  2. [root@bsd01 ~]# portsnap extract  
[root@bsd01 ~]# portsnap fetch  [root@bsd01 ~]# portsnap extract



portsnap fecth是从网上获取portsnap快照的最新压缩包,听闻这个压缩包官方没小时更新一次。

portsnap extract 则是把这个压缩包创立到/usr/ports。哪怕你以前已经手工安装了ports,他也会重新创立一次。

(注:这2步可以合成使用,指令为 [root@bsd01 ~]# portsnap fetch extract)

③以后使用portsnap更新,只需要执行下面2步:

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. [root@bsd01 ~]# portsnap fetch   
  2. [root@bsd01 ~]# portsnap update  
[root@bsd01 ~]# portsnap fetch  [root@bsd01 ~]# portsnap update



同样,这2步可以合成使用:[root@bsd01 ~]# portsnap fetch update

portsnap第一次运行extract命令时,可能需要一段时间,以后更新使用update的时候,速度就快很多了。

四、ports管理软件常用命令

①安装软件

下面以安装rpm为例:

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. [root@bsd01 ~]# cd /usr/ports/archivers/rpm   
  2. [root@bsd01 /usr/ports/archivers/rpm]# make install clean  
[root@bsd01 ~]# cd /usr/ports/archivers/rpm  [root@bsd01 /usr/ports/archivers/rpm]# make install clean



软件安装的过程中会生成大量的暂存文件。这些暂存文件建议保留,但是有时候,比如使用测试服务器的时候,可以通过清除暂存文件来节约磁盘空间。如果想清除www内所有的暂存文件,就cd到/usr/ports/www内。如果想清除所有的暂存文件,就cd到/usr/ports根目录:

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. [root@bsd01 ~]# cd /usr/ports   
  2. [root@bsd01 /usr/ports]# make clean  
[root@bsd01 ~]# cd /usr/ports  [root@bsd01 /usr/ports]# make clean



make clean只是清除暂存文件,并不是清除该文件夹里面的软件包。什么是暂存文件?其实主要是编译过程产生的一些临时文件,其实也是软件目录内的work文件夹,而执行make clean会把当前软件目录内的work文件夹删除。

如果想删除文件夹内中的软件包该怎么做呢?

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. [root@bsd01 ~]# cd /usr/ports/www/apache22   
  2. [root@bsd01 /usr/ports/www/apache22]# make distclean  
[root@bsd01 ~]# cd /usr/ports/www/apache22  [root@bsd01 /usr/ports/www/apache22]# make distclean



make distclean不但会清除软件包,而且也包含了make clean命令的效果。这样就会清除apache22的软件包,以及apache22目录内的work文件夹。

同理,如果想清除所有www内的软件包及暂存文件,就cd到/usr/ports/www;如果像清除所有的包及暂存文件,就cd到ports根目录。

②卸载软件

卸载软件用make deinstall:

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. [root@bsd01 ~]# cd /usr/ports/www/apache22   
  2. [root@bsd01 /usr/ports/www/apache22]# make deinstall  
[root@bsd01 ~]# cd /usr/ports/www/apache22  [root@bsd01 /usr/ports/www/apache22]# make deinstall



③查询可用ports安装的软件

我一直想,FreeBSD的ports直接在系统内占用资源空间组成树目录是好还是不好呢?如果要是从能查询这一点讲就比apt-get好一些了,以前用apt-get安装软件的时候,要是遇到一些稍微不规范一点的软件,就很难知道名字了,经常要用正则表达式来测试软件名是什么。

而现在在FreeBSD里面可以直接在ports树目录内查询可用的软件了。

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. [root@bsd01 ~]# cd /usr/ports   
  2. [root@bsd01 /usr/ports]# make search key=apache  
[root@bsd01 ~]# cd /usr/ports  [root@bsd01 /usr/ports]# make search key=apache



不过这种会找出很多,看的眼花,但是我们注意到有一个细节,就是Port和Path这两个关键字,一个代表名字,一个代表路径,我们就可以改善+过滤:

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. [root@bsd01 /usr/ports]# make search key=^apache-2 | grep -E "Port:|Path:|Info:"  
  2. Port: apache-2.0.61_2   
  3. Path: /usr/ports/www/apache20   
  4. Info: Version 2 of Apache web server with prefork MPM.   
  5. Port: apache-2.1.9_7   
  6. Path: /usr/ports/www/apache21   
  7. Info: Version 2.1 of Apache web server with prefork MPM.   
  8. Port: apache-2.2.6_2   
  9. Path: /usr/ports/www/apache22   
  10. Info: Version 2.2 of Apache web server with prefork MPM.  
[root@bsd01 /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.



④查询已安装的软件

怎么像Linux中用“rpm -qa | grep samba”来查询某个软件是否安装了呢(这里以samba为例),ports用“pkg_info”:

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. [root@bsd01 ~]# pkg_info | grep samba   
  2. samba-3.0.32_1,1 A free SMB and CIFS client and server for UNIX   
  3. samba-libsmbclient-3.0.28 Shared libs from the samba package  
  4. [root@bsd01 ~]# pkg_info | grep nfs  
[root@bsd01 ~]# 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  [root@bsd01 ~]# pkg_info | grep nfs




五、安装示例


在FreeBSD 8下采用ports安装现在最流行的FAMP及FNMP架构都是很容易和方便的事情,网上的文章也很多,我这里就不一详细说明了。我这里以安装Nginx和Git-Server来说明下,安装步骤如下:

①安装 Nginx

首先安装 pcre8.00(pcre 是Nginx所需的Perl兼容正则表达式库)

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. cd /usr/ports/devel/pcre   
  2. make install  
cd /usr/ports/devel/pcre  make install



安装 Nginx0.7.65

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. cd /usr/ports/www/nginx   
  2. make install  
cd /usr/ports/www/nginx  make install



配置编译参数

引用
[ ] DEBUG                     Enable nginx debugging
[ ] IPV6                      Enable IPv6
[ ] GOOGLE_PERFTOOLS          Enable google perftools module
[X] HTTP_MODULE               Enable HTTP module
[ ] HTTP_ADDITION_MODULE      Enable http_addition module
[X] HTTP_CACHE_MODULE         Enable http_cache module
[ ] HTTP_DAV_MODULE           Enable http_webdav module
[ ] HTTP_FLV_MODULE           Enable http_flv module
[X] HTTP_GZIP_STATIC_MODULE   Enable http_gzip_static module
[ ] HTTP_IMAGE_FILTER_MODULE Enable http_image_filter module
[ ] HTTP_PERL_MODULE          Enable http_perl module
[ ] HTTP_RANDOM_INDEX_MODULE Enable http_random_index module
[ ] HTTP_REALIP_MODULE        Enable http_realip module
[X] HTTP_REWRITE_MODULE       Enable http_rewrite module
[ ] HTTP_SECURE_LINK_MODULE   Enable http_secure_link module
[ ] HTTP_SSL_MODULE           Enable http_ssl module
[X] HTTP_STATUS_MODULE        Enable http_stub_status module
[ ] HTTP_SUB_MODULE           Enable http_sub module
[ ] HTTP_XSLT_MODULE          Enable http_xslt module
[ ] MAIL_MODULE               Enable IMAP4/POP3/SMTP proxy module
[ ] MAIL_IMAP_MODULE          Enable IMAP4 proxy module
[ ] MAIL_POP3_MODULE          Enable POP3 proxy module
[ ] MAIL_SMTP_MODULE          Enable SMTP proxy module
[ ] MAIL_SSL_MODULE           Enable mail_ssl module
[ ] WWW                       Enable html sample files
[ ] HTTP_ACCESSKEY_MODULE     3rd party http_accesskey module
[ ] HTTP_EVAL_MODULE          3rd party eval module
[ ] HTTP_FANCYINDEX_MODULE    3rd party http_fancyindex module
[ ] HTTP_MOGILEFS_MODULE      3rd party mogilefs module
[ ] HTTP_MP4_H264_MODULE      3rd party mp4/h264 module
[ ] HTTP_NOTICE_MODULE        3rd party notice module
[ ] HTTP_REDIS_MODULE         3rd party http_redis module
[ ] HTTP_RESPONSE_MODULE      3rd party http_response module
[ ] HTTP_UPLOAD_MODULE        3rd party upload module
[ ] HTTP_UPLOAD_PROGRESS      3rd party upload_progress module
[ ] HTTP_UPSTREAM_FAIR        3rd party upstream fair module
[ ] HTTP_UPSTREAM_KEEPALIVE   3rd party upstream keepalive module
[ ] HTTP_ZIP_MODULE           3rd party http_zip module
[ ] PASSENGER_MODULE          3rd party passenger modulepkg_add -r -v vim-litepkg_add -r -v vim-lite



启动nginx

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. /usr/local/sbin/nginx  
/usr/local/sbin/nginx



查看端口号及使用进程等

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. lsof -i:80  
  2. mail# lsof -i:80  
  3. COMMAND PID USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME   
  4. nginx   2799 root    6u IPv4 0xc2f34278      0t0 TCP *:http (LISTEN)   
  5. nginx   2800 www    6u IPv4 0xc2f34278      0t0 TCP *:http (LISTEN)  
lsof -i:80  mail# lsof -i:80  COMMAND PID USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME  nginx   2799 root    6u IPv4 0xc2f34278      0t0 TCP *:http (LISTEN)  nginx   2800 www    6u IPv4 0xc2f34278      0t0 TCP *:http (LISTEN)



②安装Git-Server

源码安装Git-Server还是很麻烦的,不过好在FreeBSD下的ports里直接有git,呵呵。

1、用ports安装:

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. cd /usr/ports/devel/git ; make install clean    
cd /usr/ports/devel/git ; make install clean  

                           

2、修改/etc/r c.conf

引用
git_daemon_enable=”YES”



3、新增使用者

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. git  pw useradd git    
git  pw useradd git  



4、启用git daemon

引用
/usr/local/etc/rc.d/git_daemon start



5、安装lsof命令来验证其端口9418

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. pkg_add –r –v lsof ; lsof –i:9418  
pkg_add –r –v lsof ; lsof –i:9418



验证端口

其他升级机制

除了ports之外,还要推荐下Freebsd中用得多的pkg_add,其特色是简单和方便,用ports安装vim老爱出问题,所以我一般直接

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. pkg_add -r -v vim-lite  
pkg_add -r -v vim-lite



发现Freebsd8默认居然没有安装nmap,呵呵,搞定它

Java代码 复制代码 收藏代码FreeBSD 8下如何最有效率的安装软件 - phperwuhan - phperwuhan的博客
  1. pkg_add –r –v  nmap  
pkg_add –r –v  nmap



最后,源码安装在FreeBSD下也是可以的,特别适合编译安装一些有特殊参数要求的软件,基本跟在centos上没什么变化,这个就不多说了。希望大家能从此篇文章熟练掌握到ports的安装技巧,达到简化工作的目的。

  评论这张
 
阅读(456)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017