在 Ubuntu 中,我可以使用以下 wget 标志来获取 debian,即
wget --content-disposition https://packagecloud.io/xxxxx/download.deb
dpkg -i ...
在 Alpine 中,wget 抱怨--content-disposition
无效:
wget: unrecognized option: content-disposition
BusyBox v1.29.3 (2019-01-24 07:45:07 UTC) multi-call binary.
Usage: wget [-c|--continue] [--spider] [-q|--quiet] [-O|--output-document FILE]
[--header 'header: value'] [-Y|--proxy on/off] [-P DIR]
[-S|--server-response] [-U|--user-agent AGENT] [-T SEC] URL...
Retrieve files via HTTP or FTP
--spider Only check URL existence: $? is 0 if exists
-c Continue retrieval of aborted transfer
-q Quiet
-P DIR Save to DIR (default .)
-S Show server response
-T SEC Network read timeout is SEC seconds
-O FILE Save to FILE ('-' for stdout)
-U STR Use STR for User-Agent header
-Y on/off Use proxy
在 alpine 中,我需要下载不同的“wget”吗?
答案1
在Alpine Linux中,很多常见的shell工具都被BusyBox替代了。通过检查以下命令的输出,您可以看到 wget 的情况就是如此:
ls -lah $(which wget)
在我面前的 Alpine 安装中,这是一个符号链接/bin/busybox
在 BusyBox 中,wget
没有选项--content-disposition
:
# wget --help
BusyBox v1.29.3 (2019-01-24 07:45:07 UTC) multi-call binary.
Usage: wget [-c|--continue] [--spider] [-q|--quiet] [-O|--output-document FILE]
[--header 'header: value'] [-Y|--proxy on/off] [-P DIR]
[-S|--server-response] [-U|--user-agent AGENT] [-T SEC] URL...
Retrieve files via HTTP or FTP
--spider Only check URL existence: $? is 0 if exists
-c Continue retrieval of aborted transfer
-q Quiet
-P DIR Save to DIR (default .)
-S Show server response
-T SEC Network read timeout is SEC seconds
-O FILE Save to FILE ('-' for stdout)
-U STR Use STR for User-Agent header
-Y on/off Use proxy
您还会发现 GNUwget
在官方 Alpine 存储库中可用,因此要获取完整版本非常简单:
apk update
apk add wget
然后你就wget
安装了 GNU,它的行为应该更像你使用过的其他系统上的行为:
# wget --help | grep -A1 content-disposition
--content-disposition honor the Content-Disposition header when
choosing local file names (EXPERIMENTAL)