我在办公室的 Windows 7 机器上使用以下方式来保持我的“便携性”,当灾难来临时,我需要切换计算机,而我没有时间将所有程序重新安装到新电脑上。
- 我使用的大多数程序都是便携式的,大部分来自 portableapp.com,比如 notepad+、GIMP,甚至 R,我将它们提取出来并存储在“我的文档”文件夹中,其结构类似于将它们安装到拇指驱动器时的默认 portableapp 安装
- 只有少数软件没有便携版本,我会像往常一样安装它们
- 我的所有工作文件都存储在“我的文档”文件夹中
我定期使用 syncback 备份它们,因为该程序可以保留我的备份的版本,并且备份存储在便携式驱动器中。
有一天我需要换电脑,对我来说操作比较简单:我只需将上面提到的两个文件夹移动到新电脑的我的文档文件夹中,在其中安装那几个“非便携式”程序,这就差不多完成了,一些小问题可以通过将便携式应用程序重新安装到驱动器中来解决。总的来说这是一个顺利的过程。
我希望在我的家庭 Linux 桌面(Ubuntu 或 Mint,我仍在决定)中保持相同程度的“可移植性”,也就是说,如果我的 Linux 崩溃并且我需要重新安装它。我所需要做的就是将两个文件夹移回新的 Linux,我的大部分工作几乎就可以再次开始了。但我不知道如何找到可移植应用程序的 Linux 替代品。
作为 Linux 新手,谁能告诉我这在 Linux 上是否可以实现?
答案1
Linux 实际上没有可移植的应用程序本身,[1] 但你可以维护你安装的非默认程序的主要软件包名称列表(你不需要列出任何依赖项;只需列出主软件包)。然后,你可以轻松地重新安装它们。
例如,您可能有这个文件,名为~/installed_apps.txt
:
agave
gimp
openssh-server
qalculate
然后,要重新安装,请执行以下操作(假设基于 Debian 的发行版,例如 Ubuntu 或 Mint):
sudo apt-get install $(cat ~/installed_apps.txt)
这些程序将被下载并重新安装。如果您备份了整个主目录,包括以点开头的文件和目录,那么您还将保留大部分设置。备份/etc
应该可以保留其余大部分设置。
[1]:在很多情况下,你可以自己编译程序,这样它们就可以在很大程度上实现可移植性。然而,这种方法并不实用,因为你会错过包管理的所有巨大优势。
编辑:
假设aptitude
已安装,下面是我编写的脚本,用于列出所有非自动安装的软件包。这是一个有用的工具,但请注意,如果您熟练使用上述方法,您将获得更准确的结果。
#!/bin/bash
aptitude search '?and(?and(?not(?automatic),?installed),?not(?section(libs)))' --display-format '%p'
将其保存在某个位置(例如 ~/bin/list_nonautoinstalled_packages)并使其可执行。然后,您可以使用它来生成已安装的应用程序列表:
~/bin/list_nonautoinstalled_packages > ~/installed_apps.txt
使用此脚本时,我发现最好手动检查输出文件并删除不必要的内容。如果您升级系统,这样做会很有用;依赖项可能会发生变化,因此如果您将依赖项包含在列表中,则只会浪费磁盘空间。