1. Introduction à MSYS2
Site officiel de MSYS2 : MSYS2
MSYS2 (Minimal SYStem 2) est une collection de progiciels open source qui intègre un grand nombre de chaînes d'outils, d'outils et de bibliothèques GNU. Il fournit un environnement shell de type Linux qui peut compiler et exécuter de nombreuses applications et outils Linux sur les systèmes Windows.
MSYS2 est basé sur la plateforme MinGW-w64 et fournit un environnement de développement complet, comprenant un compilateur GCC, un débogueur GDB, Make, un système de contrôle de version Git et de nombreux autres outils de développement. En plus des bibliothèques et des outils de développement couramment utilisés, MSYS2 fournit également de nombreuses bibliothèques et outils spécifiquement pour la plate-forme Windows afin de faciliter le travail de développement et de portage multiplateforme des développeurs.
Étant donné que MSYS2 dispose d'une chaîne d'outils et de bibliothèques Linux relativement complètes, il est devenu l'outil de choix pour de nombreux projets de développement et de portage multiplateformes. De plus, en utilisant MSYS2, vous pouvez également facilement créer un environnement de développement logiciel de type Linux dans un système Windows, ce qui permet aux développeurs d'effectuer facilement des travaux de développement et de débogage.
2. Différences et connexions entre MSYS2, Cygwin et MinGW-w64
MSYS2 est une plate-forme qui comprend la chaîne d'outils MinGW-w64, l'ensemble d'outils GNU et certaines bibliothèques open source. Elle fournit un moyen de compiler et d'exécuter des programmes Unix/Linux sous Windows. MSYS2 est similaire à MinGW-w64, mais plus complet et stable que MinGW-w64. Il fournit le gestionnaire de packages Pacman pour faciliter l'installation et la gestion des packages logiciels par les utilisateurs.
MinGW-w64 est un ensemble d'outils de programmation C/C++ sous Windows. Il fournit un ensemble d'outils GNU et un compilateur GCC fonctionnant sous Windows. MinGW-w64 est similaire à MSYS2, mais est principalement utilisé pour compiler des applications natives Windows plutôt que des programmes Unix/Linux. MinGW-w64 peut également être utilisé pour effectuer une compilation croisée afin de produire des exécutables Windows pour d'autres plates-formes.
Cygwin est une couche de compatibilité qui s'exécute sur les plates-formes Windows et fournit des outils et des bibliothèques de développement pour les environnements de type Unix. Cygwin compile les programmes Unix en code natif Windows, puis les exécute sous Windows. Il fournit l'environnement Linux/Unix le plus complet, mais par rapport à MSYS2 et MinGW-w64, les performances de Cygwin sont médiocres.
Par conséquent, MSYS2 convient aux scénarios dans lesquels les programmes Unix/Linux doivent être compilés et exécutés sous Windows, MinGW-w64 convient aux scénarios dans lesquels des applications locales Windows sont compilées et Cygwin convient aux scénarios dans lesquels l'environnement Linux/Unix le plus complet est requis.
3. Téléchargement et installation
1. Téléchargez le package d'installation
Adresse d'hébergement Github : versions · msys2/msys2-installer (github.com)
Dépôt officiel : Index de /distrib/ (msys2.org)
Il existe trois types de packages d'installation :
- msys2-x86_64-*.exe : programme d'installation de l'interface graphique
- msys2-base-x86_64-*.sfx.exe : uniquement les fichiers de l'archive auto-extractible (manque d'intégration Windows comme les raccourcis, l'entrée de désinstallation, mais fonctionne autrement de la même manière)
- msys2-base-x86_64-*.tar.xz : identique à .sfx.exe, mais en tant qu'archive xz
Notez que le programme d'installation téléchargé peut être reconnu comme dangereux par le système, alors n'hésitez pas à le conserver.
2.Installation MSYS2
Il est recommandé d'installer la dernière version de l'interface graphique (MSYS2 nécessite Windows 8.1 64 bits ou plus récent)
Le processus d'installation est relativement simple, je n'entrerai donc pas dans les détails et me concentrerai sur le chemin d'installation.
Exigences relatives au chemin d'installation : le type de volume doit être NTFS, le chemin ne doit contenir que des caractères ascii, sans accents, sans espaces, sans liens symboliques, sans subst ou lecteurs réseau, et ne peut pas être FAT.
(chemin court uniquement ASCII sur un volume NTFS, sans accents, sans espaces, sans liens symboliques, sans subst ou lecteurs réseau, pas de FAT)
De plus, il peut être intercepté par Microsoft Defender SmartScreen ou des produits similaires lors de l'installation. Faites simplement confiance à l'installation.
4. Environnement/Sous-système
Une fois l'installation de MSYS2 terminée, vous pouvez voir que 6 sous-programmes sont installés en même temps :
Vous pouvez les appeler environnements ou sous-systèmes MSYS2.
Les différences entre les environnements résident principalement dans les variables d'environnement, le compilateur/éditeur de liens par défaut, l'architecture, les bibliothèques système utilisées, etc. Si vous n'êtes pas sûr, utilisez UCRT64.
L'environnement MSYS contient des outils basés sur Unix/cygwin, qui se trouvent sous /usr et ont la particularité d'être toujours actifs. Tous les autres environnements héritent de l'environnement MSYS et y ajoutent diverses choses.
Par exemple, dans un environnement UCRT64, la variable $PATH commence par /UCRT64/bin:/usr/bin, donc dans cet environnement vous obtenez tous les outils basés sur UCRT64 ainsi que tous les outils msys.
5. Commandes courantes de Pacman dans MSYS2
MSYS2 utilise Pacman pour la gestion des progiciels (y compris l'installation, la mise à jour, la désinstallation, etc.)
1. Progiciel de mise à jour pacman -Suy
Cette commande mettra à jour les packages principaux et les packages non principaux. Les packages principaux font référence aux packages dont dépend MSYS2 lui-même (tels que : mintty, msys2-runtime, pacman, etc.)
Si les packages principaux et non principaux doivent être mis à jour, cette commande mettra d'abord à jour le package principal, puis mettra à jour le package non principal. Après la mise à jour du package principal, il vous sera demandé de fermer tous les terminaux ouverts, puis d'exécuter à nouveau la commande pacman -Suy avant de mettre à jour le package non principal.
2. pacman -Qs 搜索已安装的软件包
3. pacman -Ss 在所有软件包仓库中搜索
Les packages logiciels installés demanderont [installé]
4. pacman -S installe le progiciel
5. Progiciel de désinstallation pacman -R
pacman -R <name of the package>
Notez que cette commande désinstalle uniquement le package logiciel. Elle ne peut pas désinstaller les packages dépendants lorsque le package logiciel est installé, ni supprimer les fichiers générés lors de l'exécution du logiciel.
6. pacman -Sg répertorie les packages
Répertoriez tous les groupes de packages :
pacman -Sg
Répertoriez tous les packages dans un groupe de packages :
pacman -Sg <group>
7. pacman -Q répertorie les packages installés
Liste des packages installés :
pacman -Q
Répertoriez tous les packages installés à partir du référentiel officiel Arch Linux :
pacman -Qe
8. pacman -Sw télécharge le progiciel mais ne l'installe pas
pacman -Sw <package>
9. pacman -U installe les packages localement
pacman -U <packagefile.tar.zst>
Prend en charge l'installation de deux types de packages d'archives, tar.xz et tar.zst. L'archive peut être téléchargée depuis : Index de / (msys2.org)
Cependant, il convient de noter que cette méthode d'installation locale ne peut pas installer automatiquement les dépendances des progiciels. Vous devez résoudre vous-même les progiciels dépendants.
Vous pouvez afficher les packages logiciels dépendants via pacman -Qi.
10. pacman -Qi Afficher les détails du package
pacman -Qi <package>
Plus d'utilisation de la commande pacman
Peut être consulté via pacman -h
$ pacman -h
usage: pacman <operation> [...]
operations:
pacman {-h --help}
pacman {-V --version}
pacman {-D --database} <options> <package(s)>
pacman {-F --files} [options] [file(s)]
pacman {-Q --query} [options] [package(s)]
pacman {-R --remove} [options] <package(s)>
pacman {-S --sync} [options] [package(s)]
pacman {-T --deptest} [options] [package(s)]
pacman {-U --upgrade} [options] <file(s)>
use 'pacman {-h --help}' with an operation for available options
Utilisez pacman <opération> -h pour afficher l'utilisation plus détaillée d'un paramètre, tel que :
$ pacman -S -h
usage: pacman {-S --sync} [options] [package(s)]
options:
-b, --dbpath <path> set an alternate database location
-c, --clean remove old packages from cache directory (-cc for all)
-d, --nodeps skip dependency version checks (-dd to skip all checks)
-g, --groups view all members of a package group
(-gg to view all groups and members)
-i, --info view package information (-ii for extended information)
-l, --list <repo> view a list of packages in a repo
-p, --print print the targets instead of performing the operation
-q, --quiet show less information for query and search
-r, --root <path> set an alternate installation root
-s, --search <regex> search remote repositories for matching strings
-u, --sysupgrade upgrade installed packages (-uu enables downgrades)
-v, --verbose be verbose
-w, --downloadonly download packages but do not install/upgrade anything
-y, --refresh download fresh package databases from the server
(-yy to force a refresh even if up to date)
--arch <arch> set an alternate architecture
--asdeps install packages as non-explicitly installed
--asexplicit install packages as explicitly installed
--assume-installed <package=version>
add a virtual package to satisfy dependencies
--cachedir <dir> set an alternate package cache location
--color <when> colorize the output
--config <path> set an alternate configuration file
--confirm always ask for confirmation
--dbonly only modify database entries, not package files
--debug display debug messages
--disable-download-timeout
use relaxed timeouts for download
--gpgdir <path> set an alternate home directory for GnuPG
--hookdir <dir> set an alternate hook location
--ignore <pkg> ignore a package upgrade (can be used more than once)
--ignoregroup <grp>
ignore a group upgrade (can be used more than once)
--logfile <path> set an alternate log file
--needed do not reinstall up to date packages
--noconfirm do not ask for any confirmation
--noprogressbar do not show a progress bar when downloading files
--noscriptlet do not execute the install scriptlet if one exists
--overwrite <glob>
overwrite conflicting files (can be used more than once)
--print-format <string>
specify how the targets should be printed
--sysroot operate on a mounted guest system (root-only)
Les références: