通过源代码 ports 方式安装软件

发布于 2024-10-27 14:33:24 字数 2363 浏览 5 评论 0

注意

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:

# cd /usr/ports/lang/python
# make BATCH=yes clean

其中 BATCH=yes 的意思是使用默认配置

FreeBSD ports 多线程编译(推荐)

Linux 如 gentoo 上一般是直接 -jx 或者 jx+1 , x 为核心数。

FreeBSD ports 多线程编译

FORCE_MAKE_JOBS=yes
MAKE_JOBS_NUMBER=4

写入 /etc/make.conf 没有就新建。

4 是处理器核心数(还是线程数?),不知道就别改。英特尔的处理器搜索 CPU 型号+ARK 转跳英特尔官网可查询线程数。

如何使用多线程下载:

# pkg install axel #下载多线程下载工具#

新建或者编辑 # ee /etc/make.conf 文件,写入以下两行:

FETCH_CMD=axel
FETCH_BEFORE_ARGS= -n 10 -a
FETCH_AFTER_ARGS=
DISABLE_SIZE=yes

进阶

如果不选择 BATCH=yes 的方法手动配置依赖:

看看 python 的 ports 在哪:

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

安装 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 树

# portsnap fetch update

然后列出过时 Ports 组件

# pkg_version -l '<'

下边分别列出 2 种 FreeBSD 手册中提及的升级工具:

一、portupgrade

# cd /usr/ports/ports-mgmt/portupgrade && make install clean
# portupgrade -ai #自动升级所有软件
# portupgrade -R screen #升级单个软件

二、portmaster (推荐)

# cd /usr/ports/ports-mgmt/portmaster && make install clean
# portmaster -ai #自动升级所有软件
# portmaster screen #升级单个软件
# portmaster -a -m "BATCH=yes" #或者-D -G –no-confirm 都可以免除确认

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

猫瑾少女

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

lorenzathorton8

文章 0 评论 0

Zero

文章 0 评论 0

萧瑟寒风

文章 0 评论 0

mylayout

文章 0 评论 0

tkewei

文章 0 评论 0

17818769742

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文