如何将已安装的软件包和设置从一个发行版转移到另一个发行版?


16

几个月以来,我一直在探索通过VirtualBox学习和了解Linux系统,并决定将其作为我的主要操作系统并将其安装在硬盘上。当我将其直接安装到HDD上时,我想带一些文件,软件包和设置(例如对.bashrc的更改),该怎么办?另外,现在我正在运行Ubuntu,如果我决定切换到类似的Debian或RPM,基于RHEL的发行版将是同一过程吗?如果有什么需要考虑的?


Ubuntu是Debian的衍生产品。所有的Debian衍生版本都非常相似,因为软件包中的所有名称都相同,软件包管理,配置等也非常相似。但是,Red Hat发行版(如Fedora,CentOS等)在软件包管理等方面并不太相似,尽管它们基本上是相同的软件。不过,您应该能够在大多数情况下将设置/配置等从Debian系列的操作系统复制到RH系列的操作系统。
Faheem Mitha 2015年

Answers:


32

包管理是分发之间的主要区别之一。在不相关的发行版之间,您将无法自动执行任何操作。不同的发行版将软件分解为不同的程序包并使用不同的名称。

在运行相同发行版的相同版本的计算机之间,可以通过复制已安装软件包的列表来实现相似的安装。在使用的系统apt(例如Debian和派生类(Ubuntu,Mint等)上,请使用apt-clone。请参阅如何将已安装的软件包选择从一个Debian系统复制到另一个?(Debian Wheezy)的确切命令。简而言之,在旧机器上:

sudo apt-get install apt-clone
apt-clone clone foo

复制foo.apt-clone.tar.gz到新机器并运行

sudo apt-get install apt-clone
sudo apt-clone restore foo.apt-clone.tar.gz

apt-clone可能在相关发行版(例如Debian和Ubuntu)之间工作。在这种情况下使用restore-new-distro代替restore。如果失败,则使用手工方法dpkg --get-selectionsapt-mark,和小提琴与包列表,直到容易满足。

对于您自己的设置,它更简单:只需从您的主目录复制点文件。通常,请配置与您帐户中的硬件无关的东西,而不是系统范围的东西。这样可以很容易地将它们复制到另一台计算机上。


与下面的第二个答案相比,该方法的优点是该方法更快,因为可以跳过慢速的互联网并可以使用更快的USB 3。可能还有其他优势???
WinEunuuchs2Unix

@ WinEunuuchs2Unix软件包列表只有几千字节。通过Internet传输所需的时间少于找到USB加密狗的时间,更不用说安装它并选择要复制的文件了,等等。
吉尔斯(Gillles)“所以-别再作恶了”

@吉尔斯傻了我。我以为foo.apt-clone.tar.gz是安装了所有二进制文件的压缩焦油球。没意识到这仅仅是安装的软件包列表。它也包括保留的版本号吗?
WinEunuuchs2Unix

很多错误.... version mismatch: libgl1-mesa-dri, libmirprotobuf3, xserver-xorg-legacy, libgbm1, libmirclient9, xserver-common, libxatracker2, gnome-software, libmircommon7, libwayland-client0, mesa-vdpau-drivers, adobe-flash-properties-gtk, libwayland-server0, xserver-xorg-core, conky-all, libgles2-mesa, libmircore1, libosmesa6, x11proto-core-dev, dkms, libgl1-mesa-glx, adobe-flashplugin, libegl1-mesa, gnome-software-common, libglapi-mesa, libwayland-cursor0, ubuntu-software, libwayland-egl1-mesa Note that you can use --with-dpkg-repack to include those packges in the clone file.
WinEunuuchs2Unix

@ WinEunuuchs2Unix我认为apt-clone包括所有dpkg状态,包括持有的软件包。请注意,如果要克隆完整的安装,则完全不同:apt-clone的意义在于,当计算机2和程序包镜像之间的带宽大于计算机1和计算机2之间的带宽时(或者,您不想在设置机器2时让机器1太忙)。当源计算机上的所有软件包版本均可安装时,Apt-clone效果最佳。
吉尔斯(Gillles)“所以-别再作恶了”

10

如果您住在Debian家族中,可以,可以很容易地转移他们。只需列出当前安装的软件包,将它们保存到文件中,然后阅读该文件以重新安装它们:

  1. 将已安装的软件包保存在文件中installed

    dpkg -l | grep ^ii | awk '{print $2}' > installed
    
  2. 在新安装的基于Debian的发行版中,安装保存的软件包:

    sudo apt-get install $(cat installed)
    

或者,您可以为此使用GUI工具。薄荷有一个很好的名字叫做mintbackup

mintbackup屏幕截图

然后,从新安装中:

mintbackup的另一个屏幕截图


dpkg --get-selections | awk '$2 == "install" {print $1}' > instlpkg等效吗?此外,如何在RHEL / Fedora / CentOS上使用yum install Alien?
Sergiy Kolodyazhnyy 2015年

1
不要只是复制选择,复制自动安装的软件包列表,否则会变得混乱。还有apt-clone现在,它自动执行此。参见unix.stackexchange.com/questions/191662/…–
吉尔斯(Gilles)'SO-不再是邪恶的'

同样,复制持有的包裹也将很有帮助。即,保持Conky 1.9的状态,以便Conky 1.10不会使事情变糟。答案的一部分将在AskUbuntu线程中
WinEunuuchs2Unix

1
这个答案比最受好评的答案要快,并且没有像apt-clone上面这样的大量错误消息。这些错误的1/3张贴在上面的评论中。
WinEunuuchs2Unix

看起来不错,但是可以在Ubuntu 18.04中使用mintbackup吗?
WebComer

1

设置通常存储在中/etc/etckeeper可以很方便。它的主要目的是/etc/变成一个git存储库,但如果我理解得很好,它也可以过滤掉一些您不想复制的部分。因此,如果您熟悉git,最好etckeeper将更改合并到新安装中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.