2024年3月15日发(作者:)
FreeBSD笔记┊ 使用ports来管理软件包
2009-10-17 16:31:13
Linux/unix上的软件包真是五花八门,不太统一。按软件包有redhat下的rpm,ubu
ntu的dpkg管理ded包,还有源码编译,pl,py格式的;网络安装有redhat下的yum,
ubuntu下的apt-get,suse听说又是另外一套(这个我没用过),现在freebsd下管理网
络软件包主要是ports。
今天主要就来学习一下ports的管理。
1、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
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从网上下载软件包自动安装,那么从那里下载呢?这就需要一个源地址管理,跟u
buntu上的/etc/文件一样,freebsd用的文件是/etc/,我们来编辑这
个文件,加入下列几行,国内比较块的源:
[root@bsd01 ~]# ee /etc/
MASTER_SITE_OVERRIDE?=
/${DIST_SUBDIR}/
/${DIST_SUBDIR}/
ftp:///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命令。这样就会清除apa
che22的软件包,以及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也有查询,我不会用?)。


发布评论