第二十八章 DragonFlyBSD
第五节 通过源代码 ports 方式安装软件
注意
ports 和 pkg 可以同时使用,大部分人也是这么用的。但是要注意 pkg 的源必须是 latest,否则会存在一些依赖上比如 lib 库上的问题。latest 的源也比主线上的 ports 要出来的晚(是从中编译出来的),因此即使是 latset 源也可能会出现上述问题,总之有问题出现时就卸载那个 pkg 安装的包,重新使用 ports 编译即可。

FreeBSD ports 基本用法

首先获取 portsnap

# portsnap fetch extract

使用 whereis 查询软件路径

# whereis python
输出 python: /usr/ports/lang/python

如何安装 python3:

1
# cd /usr/ports/lang/python
2
# make BATCH=yes clean
Copied!
其中 BATCH=yes 的意思是使用默认配置

FreeBSD ports 多线程编译(推荐)

Linux 如 gentoo 上一般是直接 -jx 或者 jx+1, x 为核心数。
FreeBSD ports 多线程编译
1
FORCE_MAKE_JOBS=yes
2
MAKE_JOBS_NUMBER=4
Copied!
写入 /etc/make.conf 没有就新建。
4 是处理器核心数(还是线程数?),不知道就别改。英特尔的处理器搜索 CPU型号+ARK 转跳英特尔官网可查询线程数。

如何使用多线程下载:

# pkg install axel #下载多线程下载工具#
新建或者编辑 # ee /etc/make.conf 文件,写入以下两行:
1
FETCH_CMD=axel
2
FETCH_BEFORE_ARGS= -n 10 -a
3
FETCH_AFTER_ARGS=
4
DISABLE_SIZE=yes
Copied!

进阶

如果不选择 BATCH=yes 的方法手动配置依赖:
看看 python 的 ports 在哪:
1
# whereis python
2
# python: /usr/ports/lang/python
Copied!
安装python3:
# cd /usr/ports/lang/python
如何设置全部所需的依赖:
# make config-recursive
如何删除当前 port 的配置文件:
# make rmconfig
如何一次性下载所有需要的软件包:
# make BATCH=yes fetch-recursive
升级 ports collection
# portsnap fetch extract
ports 编译的软件也可以转换为 pkg 包
# pkg create nginx

FreeBSD 包升级管理工具

首先更新 Ports 树
1
# portsnap fetch update
Copied!
然后列出过时 Ports 组件
1
# pkg_version -l '<'
Copied!
下边分别列出 2 种 FreeBSD 手册中提及的升级工具:
一、portupgrade
1
# cd /usr/ports/ports-mgmt/portupgrade && make install clean
2
# portupgrade -ai #自动升级所有软件
3
# portupgrade -R screen #升级单个软件
Copied!
二、portmaster (推荐)
1
# cd /usr/ports/ports-mgmt/portmaster && make install clean
2
# portmaster -ai #自动升级所有软件
3
# portmaster screen #升级单个软件
4
# portmaster -a -m "BATCH=yes" #或者-D -G –no-confirm 都可以免除确认
Copied!