首页 > 解决方案 > 是否有 pkg​​src 命令来“冻结”所有已安装的软件包?

问题描述

我不知道我所说的“冻结”是否有一个特定的术语。我正在寻找的是一个与 pkgsrc 对应的命令:

我背后的动机是轻松地将我的系统从一台机器迁移到另一台机器。

标签: package-managers

解决方案


有几种方法可以解决这个问题,其中任何排列也可能有效,具体取决于您要执行的操作。

以下建议基于我在 OpenIndiana 中对 pkgsrc 的使用,因此请记住,如果您使用不同的操作系统,情况可能会有所不同。

让我们定义两个术语:

OldMachine= 您要从中迁移的机器

NewMachine= 您要迁移到的机器

在开始之前,请查看pkgin(pkgsrc 的包管理器)文档;你需要熟悉它。

任务

本节列出了可能相关或不相关的任务列表,具体取决于您的目标(见下文。)

1:生成已安装包的列表OldMachine

# pkgin list

我相信您可以通过以下方式将输出保存到文本文件中:

# pkgin list >> /Path/To/List/Of/Packages.list

不用担心.list扩展;任何文本编辑器仍将读取该文件。

2: BootstrapOldMachine的 pkgsrc 分支NewMachine

检查您的操作系统特定的 pkgsrc 文档,了解如何确定您所在的分支以及如何引导该分支。例如,这里是 Illumos'

3:安装生成的包列表NewMachine

有几种方法可以做到这一点,包括但不一定限于:

  1. 编写一个# pkgin -y install适用于所有包的脚本或命令Packages.list
  2. 在文本编辑器中,Packages.list从垂直列表变为水平列表。您可以手动或通过 RegEx 执行此操作。这是一个如何在 Sublime Text 中执行此操作的示例。然后将该文本复制并粘贴到末尾# pkgin -y install
  3. 编写一个执行此操作的单行命令。我确定那些存在;我只是不知道如何自己写一个

4:从导入包设置OldMachine

您必须手动查找您自定义的所有 .conf(或类似)文件,然后将它们传输到它们在NewMachine文件系统上的匹配位置,确保每个文件的内容不引用无效的位置/设置/等等 上NewMachine

目标

本节有可能的目标,然后是上述任务的适当组合以实现这些目标:

A1:您只想安装所有相同软件包的最新版本(推荐)

任务 1 和 3

A2:你想做A1+导入设置

任务 1、3 和 4

B1:您想安装特定分支版本的包

任务 1 - 3

B2:你想做B1+导入设置

任务 1 - 4


推荐阅读