package-managers - 是否有 pkgsrc 命令来“冻结”所有已安装的软件包?
问题描述
我不知道我所说的“冻结”是否有一个特定的术语。我正在寻找的是一个与 pkgsrc 对应的命令:
pip freeze
Python 存储库的命令brew bundle dump
来自 Homebrew的命令
我背后的动机是轻松地将我的系统从一台机器迁移到另一台机器。
解决方案
有几种方法可以解决这个问题,其中任何排列也可能有效,具体取决于您要执行的操作。
以下建议基于我在 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
有几种方法可以做到这一点,包括但不一定限于:
- 编写一个
# pkgin -y install
适用于所有包的脚本或命令Packages.list
- 在文本编辑器中,
Packages.list
从垂直列表变为水平列表。您可以手动或通过 RegEx 执行此操作。这是一个如何在 Sublime Text 中执行此操作的示例。然后将该文本复制并粘贴到末尾# pkgin -y install
- 编写一个执行此操作的单行命令。我确定那些存在;我只是不知道如何自己写一个
4:从导入包设置OldMachine
您必须手动查找您自定义的所有 .conf(或类似)文件,然后将它们传输到它们在NewMachine
文件系统上的匹配位置,确保每个文件的内容不引用无效的位置/设置/等等 上NewMachine
目标
本节有可能的目标,然后是上述任务的适当组合以实现这些目标:
A1:您只想安装所有相同软件包的最新版本(推荐)
任务 1 和 3
A2:你想做A1+导入设置
任务 1、3 和 4
B1:您想安装特定分支版本的包
任务 1 - 3
B2:你想做B1+导入设置
任务 1 - 4
推荐阅读
- visual-studio-code - 在 VS Code 中禁用“资源管理器中文件操作的撤消命令”功能
- javascript - 在没有jQuery的情况下选择具有特定背景颜色的元素
- android - Android 中的 App-Linking、assetlinks.json、IIS,无法正常工作
- python - UnicodeDecodeError:“utf-8”编解码器无法解码位置 108 中的字节 0xd1:无效的继续字节
- python - 来自多个是或否数据框列的汇总矩阵
- sql - 基于两列的任意排序
- c++ - 在 Visual Studio c++ 项目中将 Eigen 外部库放在哪里?
- javascript - How to ensure wasm memory is freed when using it from JavaScript
- python - 遇到此错误“simplejson.errors.JSONDecodeError:预期值:第 1 行第 1 列(字符 0)”
- rest - 如果会话令牌仍在使用中,它们是否应该不会过期?