是否有一个像wget/lynx/GET
这样的默认分布在POSIX或* nix操作系统中的HTTP客户端,可以用来实现最大的可移植性?
我知道大多数系统都安装了wget
或lynx
,但我似乎记得使用默认设置安装了一些Ubuntu服务器系统,并且它们没有安装在基本软件包中的wget
或lynx
。
我正在为Linux(可能是Mac)编写一个shell脚本来将一段软件安装到计算机上。 为了防止分发一些大文件,我想从互联网上获取这些文件,而不是用安装程序打包。 目前,安装脚本将分布在由Makeself创build的单个文件中。
我想避免安装脚本超过100 MB,如果这些文件被包含在内,并且如果这个人正在升级或重新安装软件,这些文件可能是不需要的。 也许最便携的做法是将文件包含在pacakage中。
现在我只是想按照这个顺序检查wget
, lynx
和GET
,并且会使用它来下载任何一个,但是我可以完全避免这种情况,如果有办法,我可以下载文件将在所有系统上工作。
编辑:
有没有人知道很多关于lwp-request( GET
)及其可用性? 这似乎很容易在我已经检查的几个系统上可用,我记得这个系统总是在10年前回到RedHat。
根据我的经验,工具可以按照这个顺序提供:
wget
curl
sftp
ftp
GET
(我总是使用HEAD
,经常忘记它只是套件中的一个工具) tftp
nc
(不如我所愿) socat
(甚至不太常见) bash
/dev/tcp
工具在我用过的大多数系统上都可用(有些使用dash
或pdksh
代替),但是在bash
, nc
或socat
使用echo
会让HTTP访问变得漫长 -不得不以某种方式处理标题,这将降低其优雅。
POSIX 7公用程序的官方列表
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/contents.html
以下列表不在列表中:
LSB也是如此,它基本上只保证POSIX公用事业。
但是我认为POSIX C足以实现大部分的netcat
功能,所以这是一个错失的机会。
gnu awk(gawk)甚至在非Linux系统上建立了TCP handeling http://www.gnu.org/software/gawk/manual/gawkinet/html_node/
我建议使用ftp或wget,因为它们是Linux发行版中最常见的。 最好的做法可能是让你的脚本查看命令是否可用,如果不是,则转到下一个命令。
卷曲可能比wget更普遍。 至少根据我的经验,仅仅因为更多的其他工具依赖于它。 但是curl和wget都是一个超级简单的安装,并且可以在任何系统上使用。