作为Linux中的菜鸟,我开始在Mint上使用brew和apt-get左右安装软件包。
现在我正在运行os空间,我开始浏览这些包并注意到许多重复项(gcc,ag,....等)
如何在不损害依赖于这些应用程序并保留最新版本的应用程序的情况下,以有效的方式删除重复项?
答案 0 :(得分:1)
1)您输出从brew安装的所有软件包。
brew list >> brewList.txt
2)输出从apt-get安装的所有软件包。
dpkg-query -l >> dpkgList.txt
3)从dpkgList.txt和brewList.txt输出所有相交的包名称
grep -Fx -f brew.txt dpkg.txt >> intersectedList.txt
4)现在,从apt-get或brew中删除所有相交的包。注意:我要从apt-get这里删除软件包。
sudo apt-get remove `cat intersectedList.txt`
/* if the package name has the same prefix, then you can use
sudo apt-get remove `cat intersectedList.txt`*
*/
因此,整个bash脚本也检查每个命令正确运行如下:
brew list >> brewList.txt
if [ $? -eq 0 ]; then
dpkg-query -l >> dpkgList.txt
if [ $? -eq 0 ]; then
grep -Fx -f brew.txt dpkg.txt >> intersectedList.txt
if [ $? -eq 0 ]; then
sudo apt-get remove `cat intersectedList.txt` /* you can place * after ` symbol, if you want to remove node (or nodejs) */
if [ $? -eq 0 ]; then
echo OK
else
echo "Task not completed!"
fi
else
echo "grep -Fx -f brew.txt dpkg.txt error!"
fi
else
echo "dpkg-query error!"
fi
else
echo "brew list!"
fi
答案 1 :(得分:0)
没有自动方法可以执行此操作,但您可以通过自制软件列出已安装的软件包:
brew list
然后通过Mint列出已安装的软件包:
dpkg-query -l
某些软件包的名称差别很小,但您会认出它们。然后,您可以使用以下命令从自制程序中删除软件包:
brew remove <package>
并从Mint中删除包:
sudo apt-get remove <package>
请注意,从自制软件安装的软件包通常比从Mint安装的软件包更新。