portmaster是一个用来升级ports的工具,它并不依赖于其他的数据库去追踪你已经安装的软件,而仅仅利用现有的ports架构,比如是/var/db/pkg
portmaster的特点是通过port的依赖追踪而保持你的port随时更新到最新,这能够允许你去安全的更新某一特定的port而不必不得不更新基于这个port的其他软件,当然,在极少的情况下,你有重新编译那些依赖于你更新port的软件的需求,因此你可以用-r选项来完成。
portmaster默认更新那些你在命令中指定的port,portmaster会去查询是否存在软件的最新版本,然后通过make config命令遍历指定的port和它所依赖port的编译选项,假如你从来没有安装过port或者更改了编译选项,将会有编译选项窗口来提示选择编译选项,当然,如果你想要默认提示所有的选项,可以使用—force-dialog选项
当portmaster在遍历port的依赖关系的时候,假如你没有使用—packages*选项,portmaster会在后台默认启动一个make checksum进程去检查和验证已经下载和软件包,如果你在此时按了ctrl+c,会默认终止这个检查
下面介绍一些常用的选项:
--force-config //为所有的ports执行make config,会覆盖-G选项 -G //阻止make config,也就是使用默认选项 -B //不为已经安装的ports做备份 -b //为已经安装的ports做备份 --update-if-newer //当软件已经是最新了,就不再重新安装,只在命令行后跟软件包才执行 -P //使用package来安装,假如没有合适的package,也可以用ports替换 -PP //只使用package安装,假如没有合适的,就放弃安装或者升级 -a //检查所有的ports,假如有必要就执行升级 -l //根据ports的分类列出所以已经安装的port --index //只使用INDEX-[7-9]去检查port是否已经是最新了 --no-confirm //在将要执行升级或者安装之前,不询问用户,直接执行 --package-build //使用package来安装编译过程的一些依赖 --delete-build-only //当一个port安装完之后,删除只在编译过程中使用依赖ports
举个例子:假如我想更新或者新安装nginx,然后使用package安装编译过去依赖的包,并且在编译完成之后删除它们
portmaster --packages-build delete-build nginx
假如我要更新所有的包