是否有 "freeze" 所有已安装软件包的 pkgsrc 命令?
Is there a pkgsrc command to "freeze" all installed packages?
我不知道 "freezing" 的意思是否有特定的术语。我正在寻找的是一个与 pkgsrc 对应的命令:
- Python 个存储库的
pip freeze
命令
- 来自 Homebrew 的
brew bundle dump
命令
我的动机是轻松地将我的系统从一台机器迁移到另一台机器。
有多种方法可以解决这个问题,其中的任何组合也可能有效,具体取决于您要执行的操作。
以下建议基于我在 OpenIndiana 中对 pkgsrc 的使用,因此请记住,如果您使用不同的 OS,事情 可能 会有所不同。
让我们定义 2 个术语:
OldMachine
= 您要迁移的机器
NewMachine
= 您要迁移到的机器
开始之前,请看一下 pkgin
(pkgsrc 的包管理器)documentation;你需要熟悉它。
任务
本部分列出了可能的任务,这些任务可能相关也可能不相关,具体取决于您的目标(见下文)。
1: 生成 OldMachine
上已安装软件包的列表
# pkgin list
我相信您可以通过以下方式将输出保存到文本文件:
# pkgin list >> /Path/To/List/Of/Packages.list
不用担心 .list
扩展;任何文本编辑器仍会读取该文件。
2:Bootstrap OldMachine
在 NewMachine
上的 pkgsrc 分支
检查您的 OS-specific pkgsrc 文档,了解如何确定您所在的分支以及如何 bootstrap 该分支。例如,here's Illumos'.
3:在 NewMachine
上安装生成的软件包列表
有多种方法可以做到这一点,包括但不一定限于:
- 编写脚本或命令,对
Packages.list
中的所有包执行 # pkgin -y install
- 在文本编辑器中,将
Packages.list
从垂直列表转换为水平列表。您可以手动或通过 RegEx 执行此操作。这是有关如何在 Sublime Text 中执行此操作的 example。然后将该文本复制并粘贴到 # pkgin -y install
的末尾
- 写一个单行命令来完成它。我确定那些存在;就是不知道怎么自己写一个
4:从 OldMachine
导入包设置
您必须手动找到您自定义的所有 .conf(或类似)文件,然后将它们传输到 NewMachine
文件系统上的匹配位置,确保每个文件的内容不要引用无效 locations/settings/etc。在 NewMachine
目标
这部分有可能的目标,然后通过适当组合上述任务来实现它们:
A1:您想简单地安装所有相同软件包的最新版本(推荐)
任务 1 和 3
A2:你想做A1+导入设置
任务 1、3 和 4
B1:您想安装软件包的特定分支版本
任务 1 - 3
B2:您想做 B1 + 导入设置
任务 1 - 4
我不知道 "freezing" 的意思是否有特定的术语。我正在寻找的是一个与 pkgsrc 对应的命令:
- Python 个存储库的
pip freeze
命令 - 来自 Homebrew 的
brew bundle dump
命令
我的动机是轻松地将我的系统从一台机器迁移到另一台机器。
有多种方法可以解决这个问题,其中的任何组合也可能有效,具体取决于您要执行的操作。
以下建议基于我在 OpenIndiana 中对 pkgsrc 的使用,因此请记住,如果您使用不同的 OS,事情 可能 会有所不同。
让我们定义 2 个术语:
OldMachine
= 您要迁移的机器
NewMachine
= 您要迁移到的机器
开始之前,请看一下 pkgin
(pkgsrc 的包管理器)documentation;你需要熟悉它。
任务
本部分列出了可能的任务,这些任务可能相关也可能不相关,具体取决于您的目标(见下文)。
1: 生成 OldMachine
上已安装软件包的列表
# pkgin list
我相信您可以通过以下方式将输出保存到文本文件:
# pkgin list >> /Path/To/List/Of/Packages.list
不用担心 .list
扩展;任何文本编辑器仍会读取该文件。
2:Bootstrap OldMachine
在 NewMachine
上的 pkgsrc 分支
检查您的 OS-specific pkgsrc 文档,了解如何确定您所在的分支以及如何 bootstrap 该分支。例如,here's Illumos'.
3:在 NewMachine
上安装生成的软件包列表
有多种方法可以做到这一点,包括但不一定限于:
- 编写脚本或命令,对
Packages.list
中的所有包执行 - 在文本编辑器中,将
Packages.list
从垂直列表转换为水平列表。您可以手动或通过 RegEx 执行此操作。这是有关如何在 Sublime Text 中执行此操作的 example。然后将该文本复制并粘贴到# pkgin -y install
的末尾
- 写一个单行命令来完成它。我确定那些存在;就是不知道怎么自己写一个
# pkgin -y install
4:从 OldMachine
导入包设置
您必须手动找到您自定义的所有 .conf(或类似)文件,然后将它们传输到 NewMachine
文件系统上的匹配位置,确保每个文件的内容不要引用无效 locations/settings/etc。在 NewMachine
目标
这部分有可能的目标,然后通过适当组合上述任务来实现它们:
A1:您想简单地安装所有相同软件包的最新版本(推荐)
任务 1 和 3
A2:你想做A1+导入设置
任务 1、3 和 4
B1:您想安装软件包的特定分支版本
任务 1 - 3
B2:您想做 B1 + 导入设置
任务 1 - 4