Comment on page
4.4.使用 pkg 进行二进制包管理
注意在引导过程成功之前,需要一个可用的互联网连接。
# pkg
输出应该类似于以下内容:
The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]
每个 pkg 命令参数都在特定于命令的手册页中有文档。
要阅读
pkg install
的手册页,例如,请运行以下命令:# pkg help install
Quarterly,季度
分支为用户提供了更可预测和稳定的 Ports 和软件包安装和升级体验。这主要通过仅允许非功能更新来实现。季度分支旨在接收安全修复(可能是版本更新,或提交的后退),错误修复和符合或框架更改的 Port。季度分支是每个(年度)季度在一月、四月、七月和十月初始时从 HEAD 切出的。分支的名称根据它们创建的年份(YYYY)和季度(Q1-4)进行命名。例如,2023 年 1 月创建的季度分支被命名为 2023Q1。而 Latest
分支为用户提供了软件包的最新版本。# mkdir -p /usr/local/etc/pkg/repos
# echo 'FreeBSD: { url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest" }' > /usr/local/etc/pkg/repos/FreeBSD.conf
然后运行此命令以更新最新分支的本地软件包存储库目录:
# pkg update -f
注意FreeBSD 不需要有pkg.conf
文件。许多安装过程没有pkg.conf
或只有空的pkg.conf
(除了注释行)也运行良好。
文件中以“#”开头的行是注释,将被忽略。
文件识别以下类型的选项 - 布尔、字符串和列表选项。
如果在配置文件中指定以下值之一——YES、TRUE 和 ON,则将布尔选项标记为启用。
# pkg search nginx
输出应该类似于以下内容:
modsecurity3-nginx-1.0.3 Instruction detection and prevention engine / nginx Wrapper
nginx-1.22.1_2,3 Robust and small WWW server
nginx-devel-1.23.2_4 Robust and small WWW server
nginx-full-1.22.1_1,3 Robust and small WWW server (full package)
nginx-lite-1.22.1,3 Robust and small WWW server (lite package)
nginx-naxsi-1.22.1,3 Robust and small WWW server (plus NAXSI)
nginx-prometheus-exporter-0.10.0_7 Prometheus exporter for NGINX and NGINX Plus stats
nginx-ultimate-bad-bot-blocker-4.2020.03.2005_1 Nginx bad bot and other things blocker
nginx-vts-exporter-0.10.7_7 Server that scraps NGINX vts stats and export them via HTTP
p5-Nginx-ReadBody-0.07_1 Nginx embeded perl module to read and evaluate a request body
p5-Nginx-Simple-0.07_1 Perl 5 module for easy to use interface for Nginx Perl Module
p5-Test-Nginx-0.30 Testing modules for Nginx C module development
py39-certbot-nginx-2.0.0 NGINX plugin for Certbot
rubygem-passenger-nginx-6.0.15 Modules for running Ruby on Rails and Rack applications
# pkg install curl
输出应该类似于以下内容:
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
The following 9 package(s) will be affected (of 0 checked):
New packages to be INSTALLED:
ca_root_nss: 3.83
curl: 7.86.0
gettext-runtime: 0.21
indexinfo: 0.3.1
libidn2: 2.3.3
libnghttp2: 1.48.0
libpsl: 0.21.1_4
libssh2: 1.10.0.3
libunistring: 1.0
Number of packages to be installed: 9
The process will require 11 MiB more space.
3 MiB to be downloaded
Proceed with this action? [y/N]
可以在已安装软件包列表中看到新安装的软件包和作为依赖关系安装的任何其他软件包:
# pkg info
输出应该类似于以下内容:
ca_root_nss-3.83 Root certificate bundle from the Mozilla Project
curl-7.86.0 Command line tool and library for transferring data with URLs
gettext-runtime-0.21.1 GNU gettext runtime libraries and programs
indexinfo-0.3.1 Utility to regenerate the GNU info page index
libidn2-2.3.3 Implementation of IDNA2008 internationalized domain names
libnghttp2-1.48.0 HTTP/2.0 C Library
libpsl-0.21.1_6 C library to handle the Public Suffix List
libssh2-1.10.0.3 Library implementing the SSH2 protocol
libunistring-1.0 Unicode string library
pkg-1.18.4 Package manager
# pkg fetch -d -o /usr/home/user/packages/ nginx-lite
-d
:用于获取所有依赖项-o
:用于指定下载目录
输出应该类似于以下内容:
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
The following packages will be fetched:
New packages to be FETCHED:
nginx-lite: 1.22.1,3 (342 KiB: 22.20% of the 2 MiB to download)
pcre: 8.45_3 (1 MiB: 77.80% of the 2 MiB to download)
Number of packages to be fetched: 2
The process will require 2 MiB more space.
2 MiB to be downloaded.
Proceed with fetching packages? [y/N]:
# cd /usr/home/user/packages/
# pkg install nginx-lite-1.22.1,3.pkg
例如,要查看安装的 pkg 版本,运行:
# pkg info pkg
输出应该类似于以下内容:
pkg-1.19.0
Name : pkg
Version : 1.19.0
Installed on : Sat Dec 17 11:05:28 2022 CET
Origin : ports-mgmt/pkg
Architecture : FreeBSD:13:amd64
Prefix : /usr/local
Categories : ports-mgmt
Licenses : BSD2CLAUSE
Maintainer : [email protected]
WWW : https://github.com/freebsd/pkg
Comment : Package manager
Options :
DOCS : on
Shared Libs provided:
libpkg.so.4
Annotations :
FreeBSD_version: 1301000
repo_type : binary
repository : FreeBSD
Flat size : 33.2MiB
Description :
Package management tool
WWW: https://github.com/freebsd/pkg
# pkg upgrade
此命令将比较安装版本与存储库目录中可用版本,并从存储库中升级它们。
# pkg audit -F
输出应该类似于以下内容:
Fetching vuln.xml.xz: 100% 976 KiB 499.5kB/s 00:02
chromium-108.0.5359.98 is vulnerable:
chromium -- multiple vulnerabilities
CVE: CVE-2022-4440
CVE: CVE-2022-4439
CVE: CVE-2022-4438
CVE: CVE-2022-4437
CVE: CVE-2022-4436
WWW: https://vuxml.FreeBSD.org/freebsd/83eb9374-7b97-11ed-be8f-3065ec8fd3ec.html
例如:
# pkg delete curl
输出应该类似于以下内容:
Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 1 packages (of 0 packages in the universe):
Installed packages to be REMOVED:
curl :7.86.0
Number of packages to be removed: 1
The operation will free 4 MiB.
Proceed with deinstallation packages? [y/N]: y
[1/1] Deinstalling curl-7.86.0...
[1/1] Deleting files for curl-7.86.0: 100%
# pkg autoremove
输出应该类似于以下内容:
Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 1 packages:
Installed packages to be REMOVED:
ca_root_nss-3.83
Number of packages to be removed: 1
The operation will free 723 KiB.
Proceed with deinstalling packages? [y/N]:
作为依赖关系安装的软件包称为 automatic 软件包。非自动软件包,即明确安装而不是依赖于其他软件包的软件包,可 以使用以下命令列出:
# pkg prime-list
输出应该类似于以下内容:
nginx
openvpn
sudo
pkg prime-list
是在 /usr/local/etc/pkg.conf
中声明的别名命令。还有许多其他可以用来查询系统的软件包数据库的命令。例如,命令 pkg prime-origins
可用于获取上述列表的原始 Ports 目录:# pkg prime-origins
输出应该类似于以下内容:
www/nginx
security/openvpn
security/sudo
将已安装的软件包标记为自动可以使用以下命令:
# pkg set -A 1 devel/cmake
一旦软件包是叶子软件包并标记为自动,它就会被
pkg autoremove
选中。将已安装的软件包标记为 非 自动可以使用以下命令:
# pkg set -A 0 devel/cmake
默认情况下,pkg 将二进制软件包存储在由 pkg.conf(5) 中的
PKG_CACHEDIR
定义的缓存目录中。仅保留最新安装软件包的副本。旧版本的 pkg 保留了所有先前的软件包。要删除这些过时的二进制软件包,请运行:# pkg clean
可以通过运行以下命令清除整个缓存:
# pkg clean -a
pkg-lock(8) 用于锁定软件包,防止重新安装、修改或删除。pkg-unlock(8) 解锁指定的软件包。这两个变体仅对当前已安装的软件包产生影响。因此,使用此机制无法阻止通过此机制更新已锁定的软件包来安装新软件包。
例如,锁定
nginx-lite
:# pkg lock nginx-lite
解锁
nginx-lite
:# pkg unlock nginx-lite
FreeBSD Ports Collection 中的软件可能会发生主版本号更改。为了解决这个问题,pkg 有一个内置的命令来更新软件包起源。例如,如果 lang/python3 重命名为 lang/python311,以便 lang/python3 现在可以表示版本
3.11
,那么可以运行:# pkg set -o lang/python3:lang/python311
# pkg set -o lang/ruby31:lang/ruby32
注意更改软件包起源时,有必要重新安装依赖于具有修改起源的软件包的软件包。要强制重新安装依赖软件包,请运行:
># pkg install -Rf lang/ruby32
>```