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/