什么是 Ports 系统
简单的讲,一个 port 就是一个被移植到了 FreeBSD 上的软件。所有这些软件的集合,加上 FreeBSD 处理这些软件的各种工具,就是 Ports 系统。
Ports 系统有什么用
每一个被移植到 FreeBSD 上的软件(就是 Port),都能通过 Ports 系统中的工具方便有序的安装,升级,卸载。而且符合 FreeBSD 系统对应用软件施加的各种规范。免去了你到处寻找软件,自己编译,安装,升级的麻烦。借助这些 ports 维护者的努力,你也不用担心这些软件与系统不兼容导致无法安装升级等等。
怎么安装 Ports 系统
有三种方法来安装 Ports 系统:
1,安装系统时选择安装 Ports 系统
最简单的方法,但是也有缺点。因为 Ports 系统总是随时更新的。因此你从安装光盘上安装的 Ports 系统肯定不是最新的了。
2,使用 portsnap 安装/同步 ports 系统
推荐的方法。使用portsnap不需要事先安装 ports tree,并且能够在任何时候恢复到已知的最新状态(即使手工对ports tree进行了修改)。
使用 portsnap 分成两个步骤:下载压缩的 portsnap 快照,和更新现有系统。下载或更新 portsnap 快照的方法是 portsnap fetch;首次安装,或希望将 ports tree 恢复到快照的样子,应使用 portsnap extract;之后更新系统中的 ports tree,则可以通过 portsnap update 来完成。对于服务器而言,推荐在 crontab 中增加在每天3点执行 portsnap cron,以减少使用时所需要的下载时间。
首次下载 portsnap 快照时,需要下载一个大约50MB的快照基础文件。在中国大陆,由于网络状况的原因,这可能需要较长时间。可以考虑用 portsnap fetch -s portsnap.cn.freebsd.org 做首次下载;之后的下载,还是推荐使用正常的 portsnap fetch。
可以使用下面步骤完成上述情况
1,首先设置一个比较快的portsnap服务器,如果系统默认的地址你的访问速度也很快,可以不修改
#vi /etc/portsnap.conf
设置SERVERNAME=portsnap.cn.freebsd.org
可以设置相对你速度快点的服务器的地址
2,执行命令
#portsnap fetch extract 这里直接下载ports并且解压
这样就完成了下载ports系统以及解压到/usr下面了
3.设置最快的ports镜像
用ports安装软件的时候,如果没有设置相对于你来说最快的ports服务器地址,那就会默认的 ftp://ftp.freebsd.org/pub/FreeBSD/ports/distfiles/,这个地址对于很多地方来说是很慢的。
修改 /etc/make.conf 加入以下代码
MASTER_SITE_OVERRIDE=
ftp://ftp.freebsdchina.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}
ftp://ftp.tw.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}
如果你有最快的地址,可以加到上面去,下载就会块了
3 使用 csup/cvsup 安装/同步 Ports 系统
这种方法已经不再推荐使用。
不管事先你有没有安装 Ports 系统,你都可以使用 csup/cvsup (推荐使用 csup,这是基本系统中自己带的)来安装/同步最新的 Ports 系统。把 /usr/share/examples/cvsup/ports-supfile 拷贝到一个地方(比如 /home/user/tmp/ports-supfile),然后作适当的修改(比如修改要连接的服务器)。最后使用如下命令来安装/同步:
csup -L 2 /home/user/tmp/ports-supfile
Ports 树的目录结构
假设你的 ports 树安装在默认位置 /usr/ports。
文件:
目录:
除开以上文件和目录,其他所有的目录都是 ports。一个 port 的目录结构:
/usr/ports/分类/名称
比如 firefox 被分类在 www。因此 firefox 在 ports 树中的位置就是:
/usr/ports/www/firefox
使用 Ports 系统
1 查询
比如,你想知道 ports 中是否有 pidgin 这个软件,那么可以这样:
同样也可以使用
/usr/ports/README 中还有更多的例子可以参考。
2 安装
非常简单。比如你要安装 firefox,那么作为超级用户 root:
3 卸载
要卸载 firefox 的话:
4 升级
要升级 firefox:
定制 Ports 系统
1 自己设定 Ports 树的位置
当你把 Ports 树放在非默认位置(/usr/ports)的时候,就需要修改一些环境变量让 Ports 中的工具知道你的修改。这个变量就是 PORTSDIR。比如,你把 Ports 树放在了 /opt/ports,那么 在 sh/bash 中,执行如下命令:
在 csh 中,你需要执行如下命令:
妥贴的办法是把这个环境变量放到超级用户 root 的 dot.cshrc 文件(/root/.cshrc)里面。又或者你想让普通用户也能用到这个环境变量,可以考虑放到 /etc/profile 或者 /etc/csh.cshrc 里面。
注意!如果你使用 portsnap 命令来同步 Ports 树,而你的 Ports 树不在默认位置,请在 /etc/portsnap.conf 中也设定你的 Ports 树的位置。
注意!如果你使用 csup/cvsup 同步 Ports 树,而你的 Ports 树不在默认位置,请在你的 ports-supfile 中也设定你的 Ports 树的位置。
2 自己设定 dist 文件的位置
所谓 dist 文件,就是 port 的源码。一般情况下,这些源码都是用 tar 打包然后用 bzip2 压缩的。默认的位置是在 $PORTSDIR/distfiles。但是,你也可以把这些 dist 文件放到另外的地方。需要设定的环境变量就是 DISTDIR。你可以根据上面的例子来设定这个环境变量。
常用的 Ports 管理工具
portsnap
这是推荐的升级 Ports 系统树的工具。
portupgrade
相当好用的升级 Ports 中软件的 Ruby 工具。支持从源码/包升级。
pkg 工具
FreeBSD 基本系统中自带的包管理工具。方便实用。都是 pkg_* 类型的系统命令,比如 pkg_add, pkg_delete 之类的。
通过PORTS安装软件的几个常用命令
1.怎样找到我想安装的包路径:
2.仅仅下载源码包,而不安装:
3.预先知道需要那些包,才能安装这个软件:
4.把软件装到指定的目录:
5.仅仅下载包,解包,而不安装:
6.用PORTS制作一个定制二进制包:
7.强制安装:
8.初始化一个port
新手必杀技ports命令
#删除所有软件,我刚用freebsd三个月的时候老使这个,删了安接着删.....费时费力哦,不推荐
#别忘了使用ports安装软件前要升级ports系统啊,我现在天天用上边命令的脚本
#要是你没装cvsup,那就去装:
cd /usr/ports/net/cvsup-without-gui/ && make install
cd /usr/ports/sysutils/portupgrade
make install
#安装这个软件是新手省事而又带来新麻烦的好东西,尽管会带来一些新麻烦,但是还是推荐毕竟麻烦数量少了很多
rm -r /usr/ports
#损招、阴招,现在想不起来当初为什么要用这个命令,不推荐啊不推荐~~
#你要是用了找不到ports了,简单再用cvsup -g -L 2 -h cvsup.tw.freebsd.org /usr/share/examples/cvsup/ports-supfile命令就行了,费时费力
pkgdb -F
portversion | grep "<"
portupgrade -a
#安装了portupgrade套件之后可以使用的命令,好用啊推荐
pkg_info
#看看你都装什么软件了
portsclean -C
#不明原因就是编译不过八成因为这个,平常也请多用,能清理ports内的临时文件
#安装portupgrade套件之后才能使用
新手必杀技ports命令
cd /usr/ports
make deinstall
#删除所有软件,我刚用freebsd三个月的时候老使这个,删了安接着删.....费时费力哦,不推荐
cvsup -g -L 2 -h cvsup.tw.freebsd.org /usr/share/examples/cvsup/ports-supfile
cd /usr/ports
make fetchindex
#别忘了使用ports安装软件前要升级ports系统啊,我现在天天用上边命令的脚本
#要是你没装cvsup,那就去装cd /usr/ports/net/cvsup-without-gui/ && make install
cd /usr/ports/sysutils/portupgrade
make install
#安装这个软件是新手省事而又带来新麻烦的好东西,尽管会带来一些新麻烦,但是还是推荐毕竟麻烦数量少了很多
rm -r /usr/ports
#损招、阴招,现在想不起来当初为什么要用这个命令,不推荐啊不推荐~~
#你要是用了找不到ports了,简单再用cvsup -g -L 2 -h cvsup.tw.freebsd.org /usr/share/examples/cvsup/ports-supfile命令就行了,费时费力
pkgdb -F
portversion | grep "<"
portupgrade -a
#安装了portupgrade套件之后可以使用的命令,好用啊推荐
pkg_info
#看看你都装什么软件了
portsclean -C
#不明原因就是编译不过八成因为这个,平常也请多用,能清理ports内的临时文件
#安装portupgrade套件之后才能使用