1. 前言
昨天我写了一篇 UnxUtils工具包,Windows下使用Linux命令 的文章,今天无意间又发现了 GnuWin32 ,它提供Win32版本的GNU工具(Linux下的命令基本都有)。
 你可以在 GnuWin32 Files 手动下载你想要的命令安装包。
 你也可以通过 GetGnuWin32 自动下载和安装最新的二进制和文档 GnuWin32 的包。
接下来就总结如何使用 GetGnuWin32 下载和安装 GnuWin32 中的包(遇到了几个问题,给出了解决方案)
2. 下载并安装GetGnuWin32.exe程序
 
下载地址:https://sourceforge.net/projects/getgnuwin32/files/getgnuwin32/0.6.30/
找到GetGnuWin32-0.6.3.exe <–点击下载
下载完成后,点击GetGnuWin32-0.6.3.exe进行安装,在选择安装路径的时候,保持默认目录(即 GetGnuWin32-0.6.3.exe 所在目录)
 
 安装完成后,会生成一个GetGnuWin32文件夹
 
3. 执行download.bat
 
以管理员身份执行download.bat进行下载Linux命令相关的安装包及文档等。
 然后,我这里发现,安装失败了,这个错是GetGnuWin32-0.6.3.exe进行自更新时,下载更新包失败。
 
 以管理员身份打开一个命令行窗口,然后切换到GetGnuWin32目录,执行命令download.bat -v加上-v参数,使输出日志更详细些。
 
 然后在输出日志中找到这个地址:
 http://getgnuwin32.sourceforge.net/update94d563d1564001.zip
 在浏览器地址栏中访问这个地址,可以正常下载(不知道为啥)
 将下载的update94d563d1564001.zip解压,然后把解压的内容与GetGnuWin32合并(覆盖原有的文件即可)。
 
 然后在管理员命令行窗口,执行命令download.bat -v -d命令,-d参数跳过GetGnuWin32更新。
 
 你以为到这就结束了???也许吧。。。但是我这里,使用 iweb、voxel 这两个镜像站点,根本下载不了,再等下去也是失败,CTRL+C 结束掉。
重新执行命令download.bat -v -d master,其中master是镜像站点 ,多个镜像站点可以用空格隔开,如 master jaist ncu(这里建议使用master即可,貌似它会自动分配适合的站点)
 
 然后可能是一个漫长的等待,十几分钟到数小时不等,下载的包在packages目录下
 
 然后你发现了没,新的问题来了,下载的包名,有的是*.zip@viasf=1,在测试过程中发现,还有可能出现*.zip@viasf=1.1,比如我使用download.bat -v -d master jaist进行下载时,就会同时出现 *.zip@viasf=1、*.zip@viasf=1.1 (可能跟使用了多个镜像站点有关,具体不清楚)
 这里写了一个bat批处理,来批量修改后缀为.zip
@echo off
set oldExt_1=.zip@viasf^=1
set oldExt_2=.zip@viasf^=1.1
set newExt=.zip
REM 将".zip@viasf=1.1"后缀的文件删除,如果有的话
for /f "delims=" %%f in ('dir /b "*%oldExt_2%"') do (
	del "%%f"
)
REM 将".zip@viasf=1"后缀的文件更改为".zip"后缀
for /f "delims=" %%f in ('dir /b "*%oldExt_1%"') do (
    ren "%%f" "%%~nf%newExt%"
)
echo Done!
pause
待所有安装包下载完成后,然后将该脚本,放到packages目录,双击运行即可。
4. 执行install.bat
 
在GetGnuWin32目录,运行install.bat,将解压上述下载的Linux相关命令
 
 注意看安装完成后的提示信息,作者说了,GnuWin32已经停更好几年了,里边的一些包可能已过时,如果需要最新的包,使用MSYS MINGW或Cygwin代替,我好想又发现"新大陆"了。。。
install.bat命令执行完后,将生成gnuwin32目录,如下:
 
5. 配置环境变量
将生成的gnuwin32目录下的bin,添加到系统的环境变量(Path)。
 
6. 测试效果

 完美 ؏؏☝ᖗ乛◡乛ᖘ☝؏؏
7. 总结
- 在执行download.bat时,遇到几个问题:
 1)在下载GetGnuWin32更新包时,下载失败。
 2)使用默认配置的镜像iweb、voxel无法下载GnuWin32的包。
 通过使用download.bat -v -d master方式指定master镜像并跳过更新,最终可成功下载包。
 3)下载的包,部分包后缀为.zip@viasf=1,然后写了个批处理,批量将错误的后缀,改为.zip后缀。
- 实际上我在下载时,还是有很多包下载失败了,下载失败的包会在 packages/downfail.txt文件中列出。下载失败的包,我试了几个,手动在 GnuWin Files 下载,也还是失败。。。
- GnuWin32已停更多年,里边的包,很多也过时了,所以,某些命令如果你需要较新的版本,作者建议你使用- MSYS2、- MinGW、- Cygwin,其实我觉得如果可以,建议你去 GNU 下载源码,然后自己使用工具编译成Windows下可执行的exe程序,这样就能保证是最新版本了。
最后想说的是,这400多个包,真的没必要都下载,有些命令,可能我这辈子都不一定会用到,O(∩_∩)O哈哈~。
TODO:接下来,我将抽空研究一下 MSYS2、MinGW、Cygwin
参考资料:
 https://gnuwin32.sourceforge.net/
 GetGnuWin32 – Maintaining a Gnuwin32 Package archive
 GNU 软件
 GetGnuwin32使用
 https://sourceforge.net/projects/gnuwin32/
 https://sourceforge.net/projects/getgnuwin32/



















