Cygwin 版本的 Curl 安装,提取,使用笔记
Cygwin 版本的 Curl 使其恢复 HTTPS 请求功能
Cygwin 版本的 Curl 依赖的 DLL 清单
提取 Cygwin 版本的 Curl 工具
提取方法1(笨办法)
提取方法2(推荐方法)
精简 Cygwin
可精简工具包列表(个人笔记)
手动卸载工具包步骤
正常卸载工具包步骤
安装 Cygwin 工具包 步骤
1.本地检索 工具包
2.在线检索 工具包
安装 Cygwin 步骤
Cygwin 版本的 Curl 依赖的 DLL 清单
提取 Cygwin 版本的 Curl 工具
提取方法1(笨办法)
提取方法2(推荐方法)
精简 Cygwin
可精简工具包列表(个人笔记)
手动卸载工具包步骤
正常卸载工具包步骤
安装 Cygwin 工具包 步骤
1.本地检索 工具包
2.在线检索 工具包
安装 Cygwin 步骤
Cygwin 版本的 Curl 安装,提取,使用笔记 Cygwin 版本的 Curl 使其恢复 HTTPS 请求功能
假如仅把依赖的DLL复制出来,正常HTTP请求是没问题的.也能正确上传中文到PHP服务器不乱码.
但是无法正确访问HTTPS服务器.提示以下错误:
>curl https://baidu.com
curl: (77) error setting certificate verify locations:
CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
假如仅把依赖的DLL复制出来,正常HTTP请求是没问题的.也能正确上传中文到PHP服务器不乱码.
但是无法正确访问HTTPS服务器.提示以下错误:
>curl https://baidu.com
curl: (77) error setting certificate verify locations:
CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
于是使用排除法一个文件夹一个文件夹的排除,删除.最终确定了一下文件夹结构及其文件是必须的:
├─bin
│ curl.exe
│ cygcom_err-2.dll
│ cygcrypto-1.0.0.dll
│ cygcurl-4.dll
│ cygexpat-1.dll
│ cyggcc_s-seh-1.dll
│ cyggssapi_krb5-2.dll
│ cygiconv-2.dll
│ cygidn-11.dll
│ cygintl-8.dll
│ cygk5crypto-3.dll
│ cygkrb5-3.dll
│ cygkrb5support-0.dll
│ cyglber-2-4-2.dll
│ cygldap-2-4-2.dll
│ cygmetalink-3.dll
│ cygnghttp2-14.dll
│ cygpsl-5.dll
│ cygsasl2-3.dll
│ cygssh2-1.dll
│ cygssl-1.0.0.dll
│ cygunistring-2.dll
│ cygwin1.dll
│ cygz.dll
├─etc
│ └─pki
│ ├─ca-trust
│ │ └─extracted
│ │ └─pem
│ │ tls-ca-bundle.pem
│ └─tls
│ cert.pem(必须是系统属性 attrib +s)
│ certs(必须是系统属性 attrib +s)
└─usr
└─ssl
└─certs
ca-bundle.crt(必须是系统属性 attrib +s)
ca-bundle.trust.crt(必须是系统属性 attrib +s)
Cygwin 版本的 Curl 依赖的 DLL 清单
- cygcom_err-2.dll
- cygcrypto-1.0.0.dll
- cygcurl-4.dll
- cygexpat-1.dll
- cyggcc_s-seh-1.dll
- cyggssapi_krb5-2.dll
- cygiconv-2.dll
- cygidn-11.dll
- cygintl-8.dll
- cygk5crypto-3.dll
- cygkrb5-3.dll
- cygkrb5support-0.dll
- cyglber-2-4-2.dll
- cygldap-2-4-2.dll
- cygmetalink-3.dll
- cygnghttp2-14.dll
- cygpsl-5.dll
- cygsasl2-3.dll
- cygssh2-1.dll
- cygssl-1.0.0.dll
- cygunistring-2.dll
- cygwin1.dll
- cygz.dll
提取 Cygwin 版本的 Curl 工具
提取方法1(笨办法)
- 把
\cygwin64\bin
目录里的 curl.exe 复制到 新文件夹. - 在 新文件夹 运行 curl ,此时会提示缺少 XXX.dll ,然后把缺少的 dll 复制到新文件夹.
- 循环 步骤2 直到能正常运行 curl 为止.
提取方法2(推荐方法)
- 下载软件
Dependency Walker
- 用该软件打开 curl 程序
- 再 File - Save As - 保存类型 - .txt
- 用
高级文本编辑器
打开保存的文本 - 提取所有在
\cygwin64\bin
目录的DLL路径字符串
- 用
Excel软件
把重复的路径字符串
清除掉. - 再在
高级文本编辑器
里在 所有路径字符串
前面加上COPY /Y
字符串 并全部复制 - 再在
新文件夹
里空白处 按住 Shift 打开 右键菜单 - 在此处打开命令窗口 - 粘帖 - Enter - 搞定所有DLL!
精简 Cygwin
可精简工具包列表(个人笔记)
- gawk: GNU awk, a pattern scanning and processing language
- groff: GNU roff formatter
- libdb5.3: Oracle Berkeley D (runtime)
手动卸载工具包步骤
鉴于使用setup工具无法正常卸载某些工具包(如某些核心工具包),于是只好手动删除相关文件来卸载了.
此步骤要能脚本化才方便.否则要删除文件多的话,手工比对非常麻烦.
初期可用 BeyondCompare 软件的文件夹比对功能来删除.
- 进入 缓存文件夹(Local Package Directory)
如: 缓存文件夹\网址\x86_64\release - 找到需要卸载的工具包
如: gawk\gawk-4.1.4-1.tar.xz - 根据.tar.xz包里的文件夹结构,去删除 Cygwin安装文件夹(Root Directory)对应的文件即可.
正常卸载工具包步骤
- 参照 安装 Cygwin 工具包 步骤 到达 Select Packages 步骤
- 单击待精简工具包New状态 Keep 为 Uninstall 即可卸载.
安装 Cygwin 工具包 步骤
1.本地检索 工具包
理论上 使用 Install From Local Directory 也是可行的,因为记录所有可安装的工具数据库文件 setup.ini已经下载完毕.但是实际使用时却无法正确读取出可安装的列表供检索.只能走在线检索了.
经过摸索,终于发现可以直接本地检索的方法了!
- 和 “安装 Cygwin 步骤” 一样
- 但是选择 Install From Local Directory
- 到达 Select Packages 步骤
- 此时选择 View 为 Full
- 然后回退到上一步
- 再进入 Select Packages 步骤
- 此时就发现滚动条明显变长了.说明成功列举出所有可供安装的工具包列表了.
猜测是 setup 的一个Bug? 或者是一个未声明的”优化”,第一遍只显示”已安装的工具包”,第二遍才显示所有可供安装的工具包列表?
2.在线检索 工具包
- 打开 setup-x86_64.exe
- 和 “安装 Cygwin 步骤” 一样到达 Select Packages 步骤
- 检索 想要安装的工具名称 即可.
安装 Cygwin 步骤
- 打开官网 安装指南 界面
- 下载最新安装包 setup-x86_64.exe
- 打开 Cygwin下载镜像列表网站 选择最近的国家.
如中国的:http://mirrors.ustc.edu.cn/cygwin/
,http://mirrors.neusoft.edu.cn/cygwin/
- 选择 Install From Internet
- 在 Cygwin Setup - Choose Download Site 时 添加选择的镜像网址.
- 在 Cygwin Setup - Select Packages 时 先不选择任何包
- 即可得到一个干净的单纯的 Cygwin 环境了.