GnuWin32,Windows下使用Linux命令

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 所在目录)
GnuWin32,Windows下使用Linux命令_第1张图片
安装完成后,会生成一个GetGnuWin32文件夹
GnuWin32,Windows下使用Linux命令_第2张图片

3. 执行download.bat

以管理员身份执行download.bat进行下载Linux命令相关的安装包及文档等。
然后,我这里发现,安装失败了,这个错是GetGnuWin32-0.6.3.exe进行自更新时,下载更新包失败。
GnuWin32,Windows下使用Linux命令_第3张图片
以管理员身份打开一个命令行窗口,然后切换到GetGnuWin32目录,执行命令download.bat -v加上-v参数,使输出日志更详细些。
GnuWin32,Windows下使用Linux命令_第4张图片
然后在输出日志中找到这个地址:
http://getgnuwin32.sourceforge.net/update94d563d1564001.zip
在浏览器地址栏中访问这个地址,可以正常下载(不知道为啥)
将下载的update94d563d1564001.zip解压,然后把解压的内容与GetGnuWin32合并(覆盖原有的文件即可)。
GnuWin32,Windows下使用Linux命令_第5张图片
然后在管理员命令行窗口,执行命令download.bat -v -d命令,-d参数跳过GetGnuWin32更新。
GnuWin32,Windows下使用Linux命令_第6张图片
你以为到这就结束了???也许吧。。。但是我这里,使用 iweb、voxel 这两个镜像站点,根本下载不了,再等下去也是失败,CTRL+C 结束掉。

重新执行命令download.bat -v -d master,其中master是镜像站点 ,多个镜像站点可以用空格隔开,如 master jaist ncu(这里建议使用master即可,貌似它会自动分配适合的站点)
GnuWin32,Windows下使用Linux命令_第7张图片
然后可能是一个漫长的等待,十几分钟到数小时不等,下载的包在packages目录下
GnuWin32,Windows下使用Linux命令_第8张图片
然后你发现了没,新的问题来了,下载的包名,有的是*.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,Windows下使用Linux命令_第9张图片
注意看安装完成后的提示信息,作者说了,GnuWin32已经停更好几年了,里边的一些包可能已过时,如果需要最新的包,使用MSYS MINGW或Cygwin代替,我好想又发现"新大陆"了。。。

install.bat命令执行完后,将生成gnuwin32目录,如下:
GnuWin32,Windows下使用Linux命令_第10张图片

5. 配置环境变量

将生成的gnuwin32目录下的bin,添加到系统的环境变量(Path)。
GnuWin32,Windows下使用Linux命令_第11张图片

6. 测试效果

GnuWin32,Windows下使用Linux命令_第12张图片
完美 ؏؏☝ᖗ乛◡乛ᖘ☝؏؏

7. 总结

  1. 在执行download.bat时,遇到几个问题:
    1)在下载GetGnuWin32更新包时,下载失败。
    2)使用默认配置的镜像iwebvoxel 无法下载GnuWin32的包。
    通过使用download.bat -v -d master 方式指定master镜像并跳过更新,最终可成功下载包。
    3)下载的包,部分包后缀为.zip@viasf=1,然后写了个批处理,批量将错误的后缀,改为.zip后缀。
  2. 实际上我在下载时,还是有很多包下载失败了,下载失败的包会在 packages/downfail.txt 文件中列出。下载失败的包,我试了几个,手动在 GnuWin Files 下载,也还是失败。。。
  3. GnuWin32已停更多年,里边的包,很多也过时了,所以,某些命令如果你需要较新的版本,作者建议你使用 MSYS2MinGWCygwin,其实我觉得如果可以,建议你去 GNU 下载源码,然后自己使用工具编译成Windows下可执行的exe程序,这样就能保证是最新版本了。

最后想说的是,这400多个包,真的没必要都下载,有些命令,可能我这辈子都不一定会用到,O(∩_∩)O哈哈~。

TODO:接下来,我将抽空研究一下 MSYS2MinGWCygwin



参考资料:
https://gnuwin32.sourceforge.net/
GetGnuWin32 – Maintaining a Gnuwin32 Package archive
GNU 软件
GetGnuwin32使用
https://sourceforge.net/projects/gnuwin32/
https://sourceforge.net/projects/getgnuwin32/

你可能感兴趣的:(Windows,Linux,gnu,windows,linux)