是否可以列出所有已安装的软件包版本,以便将它们安装到另一个系统上?
我知道可以使用以下命令列出版本
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
因为这些是信息行,会变成垃圾行。我也没有将添加到命令-y
中apt-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
希望这可以帮助!