如何使用Pkg在FreeBSD10.1上管理软件包
介绍
FreeBSD 的二进制包管理器 pkg 可用于轻松管理预编译应用程序、FreeBSD 等效 Debian 和 RPM 包的安装。 与 FreeBSD 上其他流行的软件安装方法相比,使用 Ports Collection 编译 ports 时,使用包提供了一种更简单、更快速的替代方法,适用于许多情况。 然而,包不如端口灵活,因为包安装无法自定义——如果您需要自定义软件安装的编译选项,请使用 ports 而不是包。
在本教程中,我们将向您展示如何在 FreeBSD 10.1 上管理软件包。 这包括安装和删除软件包以及其他相关任务。
先决条件
要使用本教程中的命令,您必须对 FreeBSD 服务器具有 root 访问权限。 也就是说,您必须能够通过 sudo 命令以 root 或其他具有超级用户权限的用户身份登录服务器。 如果您计划使用 root,您可以省略示例命令的 sudo
部分。
如何使用 Pkg 安装新软件包
如果您知道要安装的软件包的名称,则可以使用 pkg
命令进行安装,如下所示:
sudo pkg install package_name
您还可以指定要安装的多个包,以空格分隔,如下所示:
sudo pkg install package1 package2 ...
举个例子,让我们用 pkg
安装一个流行的 Web 服务器 Nginx:
sudo pkg install nginx
运行此命令将启动您指定的软件包的安装。 首先,您的系统将检查包存储库目录更新。 如果它已经完全更新,则搜索指定的包。 如果找到该包,则会列出该包及其所依赖的包。 然后会出现一个确认提示。
在这种情况下,只会安装 nginx
包。 使用 y
响应提示以确认:
New packages to be INSTALLED: nginx: 1.6.2_1,2 The process will require 654 KB more space. 244 KB to be downloaded. Proceed with this action? [y/N]: y
确认包安装后,列出的包将被下载并安装在系统上。 某些软件包会在安装后显示重要的安装后信息或有关应用程序使用的说明——请务必遵循任何安装后说明。
如果您使用默认 shell,tcsh
或 csh
,您应该使用以下命令重建 PATH
中的二进制文件列表:
rehash
还需要注意的是,services 应用程序在安装后不会自动启动,也不会作为服务启用。 现在让我们看看如何运行服务。
如何运行服务
在 FreeBSD 上,与软件包一起安装的服务在 /usr/local/etc/rc.d
中提供了一个服务初始化脚本。 在作为服务运行的 Nginx 示例中,启动脚本称为 nginx
。 请注意,在运行命令时,您应该替换适当的服务脚本名称,而不是突出显示的“nginx”。
为了演示如果您尝试启动未启用的服务会发生什么,请尝试使用 service
命令在安装后立即启动您的软件:
sudo service nginx start
该服务将无法启动,您将遇到如下所示的消息:
Cannot 'start' nginx. Set nginx_enable to YES in /etc/rc.conf or use 'onestart' instead of 'start'.
要启用该服务,请按照消息中的说明,将以下行添加到 /etc/rc.conf
:
nginx_enable="YES"
您可以在编辑器中打开 /etc/rc.conf
并添加该行,或者使用 sysrc
实用程序更新文件,如下所示:
sudo sysrc nginx_enable=yes
现在该服务已启用。 它会在您的系统启动时启动,您可以使用之前尝试的 start
子命令:
sudo service nginx start
如果你想运行一次服务而不启用它,你可以使用 onestart
子命令。 以这种方式启动服务将立即运行启动脚本,但不会在系统启动时启动。 现在就试试:
sudo service nginx onestart
如果您想在启用服务之前测试其配置,则使用 onestart
子命令很有用。
如何使用 Pkg 查看包信息
要查看有关 已安装 软件包的信息,您可以使用 pkg info
命令,如下所示:
pkg info package_name
这将打印有关指定包的各种信息,包括软件描述、编译时使用的选项以及它所依赖的库列表。
如何使用 Pkg 升级已安装的软件包
您可以使用以下命令安装系统已安装软件包的最新可用版本:
sudo pkg upgrade
运行此命令会将您安装的软件包与存储库目录中的版本进行比较,并打印可以更新到较新版本的软件包列表:
Updating FreeBSD repository catalogue... FreeBSD repository is up-to-date. All repositories are up-to-date. Checking for upgrades (2 candidates): 100% Processing candidates (2 candidates): 100% The following 2 packages will be affected (of 0 checked): Installed packages to be UPGRADED: python27: 2.7.8_6 -> 2.7.9 perl5: 5.18.4_10 -> 5.18.4_11 The process will require 2 MB more space. 23 MB to be downloaded. Proceed with this action? [y/N]: y
使用 y
响应提示以继续升级列出的软件包。
如何使用 Pkg 删除包
如果您知道要删除的包的名称,可以使用 pkg
命令将其删除,如下所示:
sudo pkg delete package_name
您还可以指定要删除的多个包,以空格分隔,如下所示:
sudo pkg delete package1 package2 ...
让我们删除我们之前安装的 Nginx 包:
sudo pkg delete nginx
您将看到如下消息,并带有确认提示:
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: nginx-1.6.2_1,2 The operation will free 654 KB. Proceed with deinstalling packages? [y/N]: y
使用 y
响应提示以确认包删除操作。
如何删除未使用的依赖项
如果您删除安装了依赖项的包,仍将安装依赖项。 要删除任何已安装软件包不再需要的软件包,请运行以下命令:
sudo pkg autoremove
将打印将被删除的软件包列表,然后出现提示。 如果要删除列出的软件包,请对确认提示响应 y
。
如何使用 Pkg 查找包
要查找存储库中可用的二进制包,请使用 pkg search
命令。
按包名称
最基本的搜索方式是通过包名。 如果要搜索包名称,请使用如下命令:
pkg search package_name
例如,要搜索名称中带有“nginx”的包,请使用以下命令:
pkg search nginx
这将打印名称中带有“nginx”的软件包列表,包括版本号:
nginx-1.6.2_1,2 nginx-devel-1.7.8 p5-Nginx-ReadBody-0.07_1 p5-Nginx-Simple-0.07_1 p5-Test-Nginx-0.24
如果您想阅读有关列出的包的详细包信息,请使用 -f
选项,如下所示:
pkg search -f package_name
这将打印与指定包名称匹配的每个包的包信息。
按描述
如果您不确定要安装的软件包的名称,您还可以通过指定 -D
选项来搜索存储库中可用软件包的描述。 默认情况下,模式匹配不区分大小写:
pkg search -D pattern
例如,要搜索描述中包含“java”的所有包,请使用如下命令:
pkg search -D java
这将在描述字段中打印具有指定模式的所有可用包的名称以及描述。
如何了解有关使用 Pkg 的更多信息
Pkg 是一个非常灵活的实用程序,可以以本教程未涵盖的多种方式使用。 幸运的是,它提供了一种简单的方法来查找可用的选项和子命令以及它们的作用。
要打印可用的选项和子命令,请使用以下命令:
pkg help
要阅读各种子命令的手册页,请使用 pkg help
并指定要了解的命令,如下所示:
pkg help subcommand
例如,如果您想了解有关使用 pkg search
的更多信息,请输入以下命令:
pkg help search
这将打开一个手册页,详细说明如何使用 pkg search
。
结论
您现在应该足够了解如何使用 pkg
来管理 FreeBSD 服务器上的二进制包。
如果您想了解有关在 FreeBSD 服务器上管理软件的更多信息,请务必阅读本教程的 端口 :如何在 FreeBSD 10.1 上安装和管理端口。