列出所有软件包版本并在另一个系统上安装这些精确版本?

列出所有软件包版本并在另一个系统上安装这些精确版本?

是否可以列出所有已安装的软件包版本,以便将它们安装到另一个系统上?

我知道可以使用以下命令列出版本

dpkg -l > versions.txt

但是有没有一种简单的方法可以在另一个系统上使用输出?

dpkg --get-selections

没有列出版本。

(如果操作系统版本很重要,我使用的是 14.04)

答案1

一种方法是使用安装命令创建一个列表文件。以下命令将创建一个文件,其中包含指示要apt-get安装哪个版本的应用程序的命令:

dpkg -l | tail -n +6 | awk '{print $2"="$3}' | while read pkg; do echo "sudo apt-get install $pkg" >> install_pkg; done

我在上面放置了一个命令来跳过的前 6 行,dpkg -l因为这些是信息行,会变成垃圾行。我也没有将添加到命令-yapt-get,这样它就不会自动安装您不想安装的应用程序。我可以把这留给你。当我测试这是否有效时,我在命令中-s的后面添加了模拟安装apt-get,它似乎已经起作用了。

该命令将创建一个文件,其中包含要安装的软件包名称和版本(我截取了一个长列表):

sudo apt-get install y-ppa-manager=2017.06.13-1~webupd8~0
sudo apt-get install yad=0.39.0-1~webupd8~xenial0
sudo apt-get install yelp=3.20.1-1ubuntu1~xenial1
sudo apt-get install yelp-xsl=3.20.1-1~ubuntu16.04.1~xenial1
sudo apt-get install youtube-screenlet=0.3.2+++~trusty1
sudo apt-get install zeitgeist=0.9.16-0ubuntu4
sudo apt-get install zeitgeist-core=0.9.16-0ubuntu4
sudo apt-get install zeitgeist-datahub=0.9.16-0ubuntu4
sudo apt-get install zenity=3.20.0-1~ubuntu16.04.1
sudo apt-get install zenity-common=3.20.0-1~ubuntu16.04.1
sudo apt-get install zip=3.0-11
sudo apt-get install zlib1g:amd64=1:1.2.8.dfsg-2ubuntu4.1
sudo apt-get install zlib1g:i386=1:1.2.8.dfsg-2ubuntu4.1
sudo apt-get install zlib1g-dev:amd64=1:1.2.8.dfsg-2ubuntu4.1
sudo apt-get install zsync=0.6.2-1ubuntu1

然后,您要做的就是将install_pkg创建的文件复制到另一个系统,假设另一个系统上的所有 PPA 都与您所使用的系统匹配,然后运行以下命令来开始安装:

sh ./install_pkg

希望这可以帮助!

相关内容