MSYS2 快速使用版本

一、两个核心目录区分(原有内容整理)

1. D:\msys64\usr\bin MSYS POSIX 模拟层工具

  • 对应包:无 mingw-w64-x86_64- 前缀,如 openbsd-netcat、bash、ls、pacman、msys-git

  • 依赖:必须依赖同目录 msys-2.0.dll,模拟 Linux POSIX 环境

  • 运行限制:

    1. MSYS2 MSYS 终端完美运行,完整支持 Linux 语法:/ 路径、管道、信号、nc -u UDP 参数
    2. CMD/PowerShell 直接运行会丢失 DLL,强行加入 PATH 虽能启动,但存在大量兼容 bug
  • 存放内容:系统底层命令、bash、包管理器 pacman、类 Unix 工具

2. D:\msys64\mingw64\bin MinGW64 Windows 原生程序

  • 对应包:前缀 mingw-w64-x86_64-,如 mingw-w64-x86_64-gccmingw-w64-x86_64-cmake
  • 依赖:仅 Windows 系统自带 DLL,无 MSYS 运行库依赖
  • 运行限制:CMD、PowerShell、任意 Windows 终端直接运行
  • 存放内容:C/C++ 编译器、编译工具链、Windows 适配第三方程序

核心记忆规则

  1. 包名带 mingw-w64-x86_64- → 程序输出到 mingw64/bin,Windows 原生终端可用

  2. 包名无 mingw 前缀 → 程序输出到 usr/bin,仅推荐 MSYS2 内部终端使用

  3. 不建议将 D:\msys64\usr\bin 加入系统全局 PATH

    • 冲突:find/sort/ls 覆盖 Windows 原生命令,批处理失效
    • 兼容差:CMD 运行 POSIX 工具易卡死、参数异常
    • 环境污染:干扰 Java/Python/Node 等其他开发环境
  • 临时使用折中方案(仅当前 CMD 窗口生效,关闭失效)

cmd

ini 复制代码
set PATH=%PATH%;D:\msys64\usr\bin

实操示例:openbsd-netcat 端口监听工具

  1. 安装(打开 MSYS2 MSYS 终端执行)

bash

运行

复制代码
pacman -S openbsd-netcat

安装路径:D:\msys64\usr\bin\nc.exe

  1. 校验安装

bash

运行

bash 复制代码
# 查询是否已安装
pacman -Qs openbsd-netcat
# 列出该包所有文件,确认exe路径
pacman -Ql openbsd-netcat
  1. MSYS 终端监听端口命令

bash

运行

yaml 复制代码
# TCP监听8888
nc -lv 8888
# UDP监听8888
nc -lvu 8888

踩坑补充

  1. MSYS2 官方仓库无 mingw-w64-x86_64-nmap,无法安装 mingw 版 ncat

  2. CMD 原生 TCP/UDP 工具替代方案

    • 临时加载 usr/bin 的 nc.exe
    • 官网下载独立便携 ncat 单文件
  3. 增强替代工具 socat

bash

运行

perl 复制代码
pacman -S socat
# TCP监听
socat TCP-LISTEN:8888,fork -
# UDP监听
socat UDP-LISTEN:8888,fork -

二、pacman 包管理器全套常用命令(新增)

1. 源更新 / 系统升级(必做操作)

bash

运行

bash 复制代码
# 同步软件库索引 + 更新所有已安装包(日常第一条执行)
pacman -Syu

# 静默升级,自动确认所有选择
pacman -Syu --noconfirm

2. 软件安装

bash

运行

bash 复制代码
# 基础安装,交互式确认
pacman -S 包名
# 示例:安装msys版nc
pacman -S openbsd-netcat

# 静默安装,自动确认
pacman -S openbsd-netcat --noconfirm

# 强制覆盖文件(安装文件缺失/损坏时修复)
pacman -S openbsd-netcat --overwrite "*"

# 同时安装多个包
pacman -S gcc make vim
# 安装mingw64编译工具
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake

3. 软件卸载(分两种卸载模式)

bash

运行

bash 复制代码
# 仅卸载程序本体,保留依赖、配置文件
pacman -R 包名
pacman -R openbsd-netcat

# 彻底卸载:程序 + 不再使用的依赖(推荐日常使用)
pacman -Rs openbsd-netcat

# 完全清理:程序+依赖+配置文件
pacman -Rns openbsd-netcat

# 静默卸载,无需确认
pacman -Rns openbsd-netcat --noconfirm

4. 查找、搜索软件包

bash

运行

r 复制代码
# 在线仓库搜索包(模糊匹配,最常用)
pacman -Ss netcat

# 仅搜索已本地安装的包
pacman -Qs netcat

# 查找哪个包提供某个exe文件(已知程序找所属包)
pacman -F nc.exe

# 列出一个包安装的全部文件路径
pacman -Ql openbsd-netcat

# 查看已安装包详细信息(版本、描述、大小)
pacman -Qi openbsd-netcat

# 查看未安装包的线上详情
pacman -Si openbsd-netcat

5. 清理缓存(减少磁盘占用)

bash

运行

bash 复制代码
# 删除所有旧版本安装包缓存
pacman -Scc

# 只删除当前未安装软件的缓存包(安全推荐)
pacman -Sc

6. 修复损坏、缺失文件

bash

运行

makefile 复制代码
# 重装所有已安装包,校验文件完整性
pacman -Syu pacman -S $(pacman -Qq) --overwrite "*"

三、MSYS2 内置文件查找 / 系统命令(Linux 风格)

1. 查找文件

bash

运行

bash 复制代码
# 全局查找 nc.exe
find / -name "nc.exe"

# 只在usr/bin目录快速查找
find /usr/bin -name "nc.exe"

# 模糊匹配查找所有netcat相关文件
find / -name "*netcat*"

2. 定位程序路径

bash

运行

bash 复制代码
# 查看nc命令对应exe完整路径
which nc

# 查看二进制文件详细信息
whereis nc

3. 目录查看、基础文件操作

bash

运行

bash 复制代码
ls /usr/bin          # 列出MSYS工具目录
ls /mingw64/bin      # 列出mingw原生程序目录
pwd                  # 查看当前路径
rm 文件名            # 删除文件
mkdir 文件夹名       # 新建文件夹
cp 源 目标           # 复制文件
mv 源 目标           # 移动/重命名

四、总结

  1. 目录区分总结
  • mingw64/bin:mingw 前缀包生成,Windows CMD/PowerShell 原生运行,无 dll 依赖;
  • usr/bin:无前缀系统工具,仅 MSYS 终端适配,禁止全局加入 PATH。
  1. pacman 核心记忆
  • -S 安装、-R 卸载、-Ss 搜线上包、-Qs 查本地包、-Ql 看安装文件;
  • 卸载优先使用 pacman -Rs,清理缓存用 pacman -Sc
  1. 端口模拟工具选择
  • MSYS 终端:nc / socat,完整支持 TCP/UDP;
  • Windows 原生终端:下载独立 ncat 便携版,规避 MSYS DLL 依赖问题。
相关推荐
Csvn1 小时前
Docker 进阶 — 网络模型、数据持久化与多阶段构建
后端
用户4279254051711 小时前
《微博开放平台官方CLI开源了:70+API一行搞定,AI Agent原生支持》
后端
Csvn1 小时前
文本处理三剑客 — grep、sed、awk 实战精讲
后端
sarasuki1 小时前
JavaScript的对象、new的机制与原型包装类
javascript·后端
某鹏1 小时前
java伪共享问题的稳定解法
后端
fliter1 小时前
Rust 不是手动内存管理:它是声明式内存管理
后端
AI人工智能_电脑小能手1 小时前
【大白话说Java面试题 第125题】【并发篇】第25题:说说 Java 线程的中断机制
java·后端·面试
fliter2 小时前
Box 里到底装了什么:从 Go interface 到 Rust trait object
后端
Java内核笔记2 小时前
Spring Security 源码解析(六)无状态 JWT 实践:Session 共享与自定义过滤器
java·后端