2017-07-12 13 views
2

Étant un noob dans Linux j'ai commencé à installer des paquets gauche et droite, avec brew et apt-get sur Mint.Comment faire pour supprimer les paquets en double entre brew et apt-get

Maintenant que je suis à court espace os, j'ai commencé à parcourir ces paquets et remarquées beaucoup de doublons (gcc, ag, etc ....)

Comment supprimer les doublons de manière efficace sans nuire à des applications qui ont des dépendances sur ces applications et gardent les dernières versions?

+0

Si vous avez installé des paquets grâce à la gestion des paquets, les anciennes versions devraient être supprimés automatiquement. –

+0

Bien sûr, mais comment savoir quels sont les doublons entre homebrew et apt-get. Chacun est installé dans son propre répertoire. – SFbay007

Répondre

0

Il n'y a aucun moyen automatique pour ce faire, mais vous pouvez lister les paquets installés par homebrew avec:

brew list 

puis la liste des paquets installés par Mint avec:

dpkg-query -l 

certains paquets auront petites différences dans leurs noms mais vous les reconnaîtrez. Vous pouvez ensuite supprimer les paquets de homebrew avec:

brew remove <package> 

et supprimer des paquets de menthe avec:

sudo apt-get remove <package> 

que les paquets installés méfiez-vous de homebrew sont généralement plus récents que les paquets installés à partir de Mint.

1

1) Vous produisez tous les paquets que vous installez à partir du brassage.

brew list >> brewList.txt 

2) Vous affichez tous les paquets que vous avez installés depuis apt-get.

dpkg-query -l >> dpkgList.txt 

3) Vous sortie tous les noms de paquetages recoupé de dpkgList.txt et brewList.txt

grep -Fx -f brew.txt dpkg.txt >> intersectedList.txt 

4) Maintenant, retirez tous recoupé des paquets de apt-get ou infusion. Note: Je supprime des paquets d'apt-get ici.

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`* 

*/ 

Ainsi, le tout script bash qui vérifie également chaque commande est couru correctement comme ci-dessous:

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 
+0

Bien mais il y a deux problèmes: 1) les paquets n'ont pas forcément le même nom en Mint et en homebrew par exemple: 'node' dans homebrew correspond' nodejs' en Mint. 2) Certains logiciels sont installés et supprimés par '' brew cask'', par exemple: 'jdk',' wireshark'. –

+0

@OrtomalaLokni, j'ai mis à jour ma réponse. –