ports套件的安装

本文介绍了 FreeBSD 的 ports 套件安装方法及管理命令,包括如何安装 ports、设置源地址、安装和卸载软件等。还详细讲解了使用 cvsup 和 portsnap 更新 ports 目录树的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ports套件的安装和简单介绍 [1]. 安装 ports安装在"FreeBSD笔记┊ FreeBSD7.0安装篇之一:系统安装"第6步讲到了,如果你当时没有选择启用ports的话,那么需要在root下输入"sysinstall"来安装它:输入sysinstall --> 选择Configure --> Distributions --> ports,然后安装即可。 [2]. ports路径 ports的默认路径是/usr/ports,这个ports的根目录,下面有很多的文件夹及子文件夹,组成一个树状目录,包含大量ports下的软件: 这些即是套件的软件分类和名称,比如mail代表邮件服务软件;games则是一些游戏;www里面是一些web服务软件;databases则是数据库软件…… [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”即可。 [root@bsd01 ~]# cd /usr/ports/www/apache22 [root@bsd01 /usr/ports/www/apache22] make install clean 而/usr/ports/distfiles是存放软件包的文件夹,ports就会先检查/usr/ports/distfiles目录内有没有这个软件包,如果没有它就会自动从网上下载安装。 [3]. 源地址 ports从网上下载软件包自动安装,那么从那里下载呢?这就需要一个源地址管理,跟ubuntu上的/etc/source.list文件一样,freebsd用的文件是/etc/make.conf,我们来编辑这个文件,加入下列几行,国内比较块的源: [root@bsd01 ~]# 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}/ / 有新的服务器加入就直接往后面加就可以了,格式就是“源地址+/${DIST_SUBDIR}/ /”。但是不要同时存在2个“MASTER_SITE_OVERRIDE?”,否则第二个就不起效了。 2、ports管理软件常用命令 [1]. 安装软件下面以安装rpm为例: [root@bsd01 ~]# cd /usr/ports/archivers/rpm [root@bsd01 /usr/ports/archivers/rpm]# make install clean 如果想清除www内所有的暂存文件,就cd到/usr/ports/www内。如果想清除所有的暂存文件,就cd到/usr/ports根目录: [root@bsd01 ~]# cd /usr/ports [root@bsd01 /usr/ports]# make clean cmake clean只是清除暂存文件,并不是清除distfiles里面的软件包。什么是暂存文件?其实主要是编译过程产生的一些临时文件,其实也是软件目录内的work文件夹,而执行make clean会把当前软件目录内的work文件夹删除。如果想删除distfile连文件夹内软件包怎么做呢? [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根目录。 [2]. 卸载软件卸载软件用make deinstall: [root@bsd01 ~]# cd /usr/ports/www/apache22 [root@bsd01 /usr/ports/www/apache22]# make deinstall [3]. 查询可用ports安装的软件我一直想,freebsd的ports直接在系统内占用资源空间组成树目录是好还是不好呢?如果要是从能查询这一点讲就比apt-get好一些了,以前用apt-get安装软件的时候,要是遇到一些稍微不规范一点的软件,就很难知道名字了,经常要用正则表达式来测试软件名是什么。而现在在freebsd里面可以直接在ports树目录内查询可用的软件了(也许ubuntu的apt-get也有查询,我不会用?)。 [root@bsd01 ~]# cd /usr/ports [root@bsd01 /usr/ports]# make search key=apache 不过这种会找出很多,看的眼花,但是我们注意到有一个细节,就是Port和Path2个关键字,一个代表名字,一个代表路径,我们就可以改善+过滤: [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的管道真是好东西,可以自己发挥一下: [root@bsd01 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]. 查询已安装的软件怎么像Linux中用“rpm -qa | grep samba”来查询某个软件是否安装了呢(这里以samba为例)?ports用“pkg_info”: [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 3、使用cvsup来更新ports树目录既然ports的树目录全部下载到本地,那么freeBSD有新的软件包了或者添置了新的软件,本地目录树就不会更新。所以我们在一段时间需要更新本地目录树。下面来学习使用cvsup来更新本地目录树: [1]. 安装cvsup 如果你在命令下输入:cvsup,提示command not found,则说明cvsup没有被安装。我们就用ports来安装cvsup,cvsup位于/usr/ports/net目录下。并且有2个软件包,一个叫cvsup,一个叫cvsup-without-gui。cvsup-without-gui是纯命令模式的cvsup,在终端下一般用这个,那么我们就安装它好了: [root@bsd01 ~] cd /usr/ports/net [root@bsd01 net]# ls -d cvsup* cvsup cvsup-mirror cvsup-without-gui cvsupchk [root@bsd01 net]# cd cvsup-without-gui [root@bsd01 cvsup-without-gui]# make install clean 这样就可以安装cvsup了。 [2]. 配置文件:ports-subfile cvsup安装后,可以进/usr/share/examples/cvsup查看相关配置文件: [root@bsd01 ~]# cd /usr/share/examples/cvsup [root@bsd01 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@bsd01 cvsup]# cp ports-supfile /etc [root@bsd01 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”这样需要更新的文件夹前面的“#”注释去掉。 [3]. 开始更新开始更新就比较简单了,只要一个命令即可: [root@bsd01 ~]# cvsup -g -L 2 /etc/ports-supfile 不过如果你是“ports-all”的话,要很长时间哦,大约需要1个小时,甚至更长。所以,下面我们来介绍一种在freebsd中更加方便、快捷的更新ports的方法。 4、使用portsnap来更新ports目录树 portsnap是freebsd6以后才有的,他是以压缩包的形式,先把最新的压缩包形式的ports快照下载到/var/db/portsnap文件夹,然后再更新到/usr/ports中。 freebsd6以后的系统,portsnap是不需要手工安装的,已经默认直接在系统中了,所以可以直接使用portsnap命令来更新ports目录树。当然ports中也有这个软件包: [root@bsd01 /var/db]# cd /usr/ports [root@bsd01 /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/ [1]. 配置portsnap:我们使用portsnap,首先要设置一下它的配置文件,位于/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 [2]. 首次使用portsnap:在你的freebsd首次使用portsnap必须执行下面2步: [root@bsd01 ~]# portsnap fetch [root@bsd01 ~]# portsnap extract *这2步可以合成使用: [root@bsd01 ~]# portsnap fetch extract *portsnap fecth是从网上获取portsnap快照的最新压缩包,听闻这个压缩包官方没小时更新一次。 *portsnap extract 则是把这个压缩包创立到/usr/ports。哪怕你以前已经手工安装了ports,他也会重新创立一次。 [3]. 以后使用portsnap更新ports:以后更新,只需要执行下面2步: [root@bsd01 ~]# portsnap fetch [root@bsd01 ~]# portsnap update *这2步可以合成使用: [root@bsd01 ~]# portsnap fetch update portsnap第一次运行extract命令时,可能需要一段时间,以后更新使用update的时候,速度就块很多了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值