MSYS2

简介

MSYS2 是MSYS的一个升级版,准确的说是集成了pacman和Mingw-w64的Cygwin升级版, 提供了bash shell等linux环境、版本控制软件(git/hg)和MinGW-w64 工具链。与MSYS最大的区别是移植了 Arch Linux的软件包管理系统 Pacman(其实是与Cygwin的区别)。

优点

  • 安装方便
  • 源速度还可以(修改下载镜像)
  • 自带软件和库较全且很新(对比mingw万年perl 5.8)
  • 自带pacman管理,可以使用pkgtool来makepkg,,完美集成arch折腾之魂
  • 使用mingw-w64工具链,可以编译32位或64位代码(需要之后装)
  • 中文支持好,可以直接输入和浏览中文目录

其他选择

  • MinGW:较小,运行速度快,但只能编译32位,gcc有低版本(可以配合mingw-w64,编译64位程序),中文支持差
  • Cygwin:较大,运行速度慢,网络不好的情况下安装成问题
  • TDM-GCC:不带bash等完整的环境,仅用于编译

安装

MSYS2里选择32位或64位程序下载,一路next就行了,然后请参照配置部分

如果不想折腾且是64位的系统的,可以在我的百度网盘上下载,直接解压到根目录,无需安装

使用时,进入mingw64_shell.bat 或者 mingw32_shell.bat 编译64位或者32位程序

下载安装后请首先更新程序,然后安装编译环境,默认不带编译器等工具链。

配置

换源

默认的源在有些地方速度还可以,教育网内速度一般,可以添加其他镜像提高速度,下面列举了已知的速度还可以源,请大家自己按照现有网速排序,现在有些开源镜像添加了msys2的源,感谢各个开源镜像站点!

编辑安装目录下 \etc\pacman.d\ 文件夹下 mirrorlist.msys 等三个文件,如下所示:

mirrorlist.msys
##
## MSYS2 repository mirrorlist
## Changed on 2014-11-15
##
##中国科学技术大学开源软件镜像
Server = http://mirrors.ustc.edu.cn/msys2/REPOS/MSYS2/$arch
##北京理工大学镜像
Server = http://mirror.bit.edu.cn/msys2/REPOS/MSYS2/$arch
##日本北陆先端科学技术大学院大学 sourceforge 镜像
Server = http://jaist.dl.sourceforge.net/project/msys2/REPOS/MSYS2/$arch
##The UK Mirror Service Sourceforge mirror
Server = http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/m/ms/msys2/REPOS/MSYS2/$arch
## Primary
Server = ftp://148.251.42.38/MSYS2/$arch
## Sourceforge.net
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MSYS2/$arch
mirrorlist.mingw64
##
## 64-bit Mingw-w64 repository mirrorlist
## Changed on 2014-11-15
##
##中国科学技术大学开源软件镜像
Server = http://mirrors.ustc.edu.cn/msys2/REPOS/MINGW/x86_64
##北京理工大学镜像
Server = http://mirror.bit.edu.cn/msys2/REPOS/MINGW/x86_64
##日本北陆先端科学技术大学院大学 sourceforge 镜像
Server = http://jaist.dl.sourceforge.net/project/msys2/REPOS/MINGW/x86_64
##The UK Mirror Service Sourceforge mirror
Server = http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/m/ms/msys2/REPOS/MINGW/x86_64
## Primary
Server = ftp://148.251.42.38/MINGW/x86_64
## Sourceforge.net
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/x86_64
mirrorlist.mingw32
##
## 32-bit Mingw-w64 repository mirrorlist
## Changed on 2014-11-15
##
##中国科学技术大学开源软件镜像
Server = http://mirrors.ustc.edu.cn/msys2/REPOS/MINGW/i686
##北京理工大学镜像
Server = http://mirror.bit.edu.cn/msys2/REPOS/MINGW/i686
##日本北陆先端科学技术大学院大学 sourceforge 镜像
Server = http://jaist.dl.sourceforge.net/project/msys2/REPOS/MINGW/i686
##The UK Mirror Service Sourceforge mirror
Server = http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/m/ms/msys2/REPOS/MINGW/i686
## Primary
Server = ftp://148.251.42.38/MINGW/i686
## Sourceforge.net
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/i686

更新

换源后,运行 pacman -Syu 更新所有工具,重启msys2(关了重开bat)即可

安装工具链

运行 pacman -S mingw-w64-x86_64-toolchain mingw-w64-i686-toolchain base-devel 选择需要的数字,使用空格隔开,按照提示即可.

或者分别安装mingw-w64make等工具

#安装32位
pacman -S  mingw-w64-i686-gcc  mingw-w64-i686-gcc-fortran  make
#安装64位
pacman -S  mingw-w64-w64-x86-gcc  mingw-w64-w64-x86-gcc-fortran  make

安装后需要启动对应的脚本,例如需要编译32位程序,启动 mingw32_shell.bat ,使用 msys2_shell.bat 无法启动 gcc等程序。

使用

pacman使用

参照Archlinux wiki

以下介绍常用的命令:

主要命令:

列出所有安装包
pacman -Sl
搜索安装包
pacman -Ss 安装包名称
pacman -Sl | grep 安装包名称
卸载安装包
#删除单个软件包,保留其全部已经安装的依赖关系
pacman -R 安装包名称
#删除指定软件包,及其所有没有被其他已安装软件包使用的依赖关系:
pacman -Rs 安装包名称
#要删除软件包和所有依赖这个软件包的程序:
pacman -Rsc 安装包名称
查看安装包
pacman -Q 安装包名称
清理缓存
#仅在确定当前安装的软件包足够稳定且不需要降级时才执行清理。旧版本的软件包能系统更新崩溃时派上用场
pacman -Sc
#清理所有缓存,但这样 pacman 在重装软件包时就只能重新下载了。除非空间不足,否则不应这么做
pacman -Scc
升级
#1.更新软件包数据库
pacman -Sy
#2.检测MSYS2 核心库是否需要更新
pacman -S --needed filesystem msys2-runtime bash libreadline libiconv libarchive libgpgme libcurl pacman ncurses libintl
#3.如果上步更新了,重启bash
#4.升级系统
pacman -Su
本地库使用pacman管理

MSYS2集成了Arch的 makepkg 等工具,可以使用 makepkg-mingw 制作包,使用pacman管理本地库.流程如下:

cd ~
#建立packages文件夹
mkdir packages
#进入文件夹
cd packages
mkdir ${package-name}
cd ${package-name}
#新建PKGBUILD文件,请参照 /usr/share/pacman/PKGBUILD.proto 文件
makepkg-mingw
#安装
pacman -U ${package-name}*.pkg.tar.xz