介绍
FreeBSD 的二进制包管理器 pkg 可用于轻松管理预编译的应用程序,即 FreeBSD 类似的 Debian 和 RPM 包的安装。 与 FreeBSD 上的其他常见软件安装方法相比,使用 Ports Collection 编译 port 使用包提供了更简单、更快的替代方案,在许多情况下工作。
在本教程中,我们将向您展示如何在FreeBSD 10.1上管理软件包。
<$>[注] 注: 截至 2022 年 7 月 1 日,DigitalOcean 不再支持通过控制面板或 API 创建新的 FreeBSD Droplets。
前提条件
要使用本教程中的命令,你必须有 root 访问 FreeBSD 服务器. 也就是说,你必须能够通过 sudo 命令登录作为 root 服务器或其他具有超级用户权限的用户。
如何使用Pkg安装新包
如果您知道您要安装的软件包的名称,您可以使用pkg
命令来安装它:
1sudo pkg install package_name
您还可以指定多个包来安装,以空间分开,如下:
1sudo pkg install package1 package2 ...
举个例子,让我们安装 Nginx,一个流行的网页服务器,用pkg
:
1sudo pkg install nginx
运行此命令将启动您指定的包的安装。 首先,您的系统将检查包库目录的更新。 如果它已经完全更新,然后搜索指定的包。
在这种情况下,只会安装nginx
包,请用y
回复提示,以确认:
1New packages to be INSTALLED:
2 nginx: 1.6.2_1,2
3
4The process will require 654 KB more space.
5244 KB to be downloaded.
6
7Proceed with this action? [y/N]: y
确认包的安装后,列出的包(s)将下载并安装在系统上. 一些包会显示重要的安装后信息或有关使用应用程序的说明,安装后,请确保遵循任何安装后的注释。
如果你正在使用默认壳,‘tcsh’或‘csh’,你应该用这个命令重建你的‘PATH’中的二进制列表:
1rehash
重要的是要注意的是,在安装后,具有 services 功能的应用程序不会自动启动,也不会作为服务启用。
如何运行服务
在FreeBSD上,与软件包一起安装的服务提供在 /usr/local/etc/rc.d 中的服务初始化脚本.在作为服务运行的 Nginx 示例中,启动脚本被称为
nginx`. 请注意,在运行命令时,您应该代替相应的服务脚本名称,而不是突出的 "nginx」。
如果您试图启动未启用服务,请尝试使用服务
命令在安装后立即启动软件:
1sudo service nginx start
该服务不会启动,您会遇到一个看起来如下的消息:
1Cannot 'start' nginx. Set nginx_enable to YES in /etc/rc.conf or use 'onestart' instead of 'start'.
要启用该服务,请遵循消息中的指示,并将下列行添加到 /etc/rc.conf
:
1nginx_enable="YES"
您可以在编辑器中打开 /etc/rc.conf' 并添加行,或者使用
sysrc' 实用程序以此方式更新文件:
1sudo sysrc nginx_enable=yes
它将在系统启动时启动,您可以使用之前尝试的开始
子命令:
1sudo service nginx start
如果你想运行该服务一次,而不启用它,你可以使用启动
子命令。以这种方式启动服务将立即运行启动脚本,但它不会在系统启动时启动。
1sudo service nginx onestart
使用开始
子命令是有用的,如果你想在启用服务之前测试你的服务的配置。
如何使用Pkg查看包装信息
要查看有关安装的包的信息,您可以使用pkg info
命令,如下:
1pkg info package_name
这将打印有关指定的软件包的各种信息,包括软件的描述、它所编译的选项以及它所依赖的库列表。
如何使用Pkg升级安装的包
您可以使用此命令安装系统的安装包的最新可用版本:
1sudo pkg upgrade
运行此命令将将安装的软件包与存储库目录中的版本进行比较,并打印可以更新到更新的软件包列表:
1Updating FreeBSD repository catalogue...
2FreeBSD repository is up-to-date.
3All repositories are up-to-date.
4Checking for upgrades (2 candidates): 100%
5Processing candidates (2 candidates): 100%
6The following 2 packages will be affected (of 0 checked):
7
8Installed packages to be UPGRADED:
9 python27: 2.7.8_6 -> 2.7.9
10 perl5: 5.18.4_10 -> 5.18.4_11
11
12The process will require 2 MB more space.
1323 MB to be downloaded.
14
15Proceed with this action? [y/N]: y
用y
响应请求继续升级列出的包。
如何用Pkg删除包裹
如果您知道要删除的包的名称,您可以使用pkg
命令来删除它:
1sudo pkg delete package_name
您还可以指定要删除的多个包,以空格分开,如下:
1sudo pkg delete package1 package2 ...
让我们删除我们之前安装的 Nginx 包:
1sudo pkg delete nginx
您将看到一个消息,如下,与确认提示:
1Checking integrity... done (0 conflicting)
2Deinstallation has been requested for the following 1 packages (of 0 packages in the universe):
3
4Installed packages to be REMOVED:
5 nginx-1.6.2_1,2
6
7The operation will free 654 KB.
8
9Proceed with deinstalling packages? [y/N]: y
用y
响应提示,以确认删除包操作。
如何消除未使用的依赖性
如果您删除安装依赖程序的包,则依赖程序仍将安装. 若要删除不再需要任何已安装程序的包,请运行以下命令:
1sudo pkg autoremove
将被删除的包列表将被打印,然后是提示,如果您想要删除列出的包,请回答y
。
如何找到Pkg的包裹
要找到存储库中可用的二进制包,请使用pkg search
命令。
包装名称
最基本的搜索方式是按包名称进行搜索. 如果您想要按包名称进行搜索,请使用以下命令:
1pkg search package_name
例如,要搜索名称中包含nginx
的包,请使用以下命令:
1pkg search nginx
这将打印一份包列表,包括版本号,名称中包含nginx
:
1nginx-1.6.2_1,2
2nginx-devel-1.7.8
3p5-Nginx-ReadBody-0.07_1
4p5-Nginx-Simple-0.07_1
5p5-Test-Nginx-0.24
如果您想阅读列出的包的详细信息,请使用-f
选项如下:
1pkg search -f package_name
这将打印与指定的包名称匹配的每个包的包信息。
根据描述
如果您不确定您要安装的软件包的名称,您也可以通过指定 -D
选项来搜索存储库中可用的软件包的描述。
1pkg search -D pattern
例如,要搜索描述中包含java
的所有包,请使用这样的命令:
1pkg search -D java
这将打印所有可用的包的名称,并在描述字段中输入指定的模式,以及描述。
如何了解更多关于使用Pkg的信息
Pkg是一个非常灵活的实用程序,可以以许多方式使用,这些方法不包括在本教程中。
要打印可用的选项和子命令,请使用此命令:
1pkg help
要阅读各种子命令的男人页面,请使用pkg 帮助
并指定您想要了解的命令,如下:
1pkg help subcommand
例如,如果您想了解有关使用pkg 搜索
的更多信息,请输入以下命令:
1pkg help search
这将引出一个男人页面,详细说明如何使用pkg搜索
。
结论
您现在应该知道足够的关于使用pkg
来管理您的FreeBSD服务器上的二进制包。
如果您想了解更多有关在您的 FreeBSD 服务器上管理软件的信息,请务必阅读 port 和本教程: 如何在 FreeBSD 10.1 上安装和管理端口。