Являются ли wget или подобные программы всегда доступными для POSIX-систем?
Существует ли HTTP-клиент, такой как wget/lynx/GET
, который по умолчанию распределяется в операционных системах POSIX или * nix, которые могут использоваться для максимальной переносимости?
Я знаю, что в большинстве систем установлены wget
или lynx
, но, похоже, я помню, что устанавливал некоторые серверные системы Ubuntu с использованием настроек по умолчанию, и у них не было ни wget
, либо lynx
, установленных в базовом пакете.
Я пишу оболочку script для Linux (и, вероятно, Mac) для установки на компьютер части программного обеспечения. Чтобы не распространять несколько больших файлов, я хотел бы извлечь эти файлы из Интернета вместо того, чтобы упаковывать их вместе с установщиком. В настоящее время установка script должна быть распределена в одном файле, созданном из Makeself.
Я бы хотел, чтобы установка script составляла более 100 МБ, что было бы, если бы файлы были включены, а также они могут не потребоваться, если человек обновляет или переустанавливает программное обеспечение. Может быть, самая портативная вещь, которую нужно сделать, это включить файлы в pacakage.
Сейчас я просто думаю о том, чтобы проверить script на wget
, lynx
и GET
в этом порядке, и он будет использовать то, что может загрузить, но я мог бы избежать этого вообще если бы я мог загрузить файлы, которые будут работать во всех системах.
EDIT:
Знает ли кто-нибудь о lwp-request (GET
) и его доступности? Кажется, это легко доступно на нескольких из систем, которые я проверил до сих пор, и я помню, что это всегда было около 10 лет назад, возвращаясь к RedHat.
Ответы
Ответ 1
По моему опыту, инструменты доступны в следующем порядке:
-
wget
-
curl
-
sftp
-
ftp
-
GET
(я все время использую HEAD
и часто забываю, что это всего лишь один инструмент в пакете)
-
tftp
-
nc
(не так часто, как я желаю)
-
socat
(еще менее распространенный)
Инструмент bash
/dev/tcp
доступен для большинства систем, которые я использовал (вместо них использовались dash
или pdksh
), но с помощью echo
с bash
, nc
или socat
идет длинный путь для доступа HTTP - вам придется каким-то образом обрабатывать заголовки, что снижает его элегантность.
Ответ 2
Официальный список утилит POSIX 7
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/contents.html
В списке нет следующих элементов:
То же самое относится к LSB, который по существу гарантирует только утилиты POSIX.
Но я действительно думаю, что POSIX C достаточно для реализации большей части функциональности netcat
, поэтому это действительно упущенная возможность.
Ответ 3
gnu awk (gawk) построил обработку TCP даже в системах без linux http://www.gnu.org/software/gawk/manual/gawkinet/html_node/
Ответ 4
Я предлагаю использовать ftp или wget, поскольку они наиболее распространены в дистрибутивах Linux. Лучшая практика может заключаться в том, чтобы ваш script посмотреть, доступна ли команда, если не перейти к следующей команде.
Ответ 5
Curl, вероятно, даже чаще, чем wget. По крайней мере, по моему опыту, только потому, что от него зависят другие инструменты. Но оба curl и wget - это супер простая установка и будут доступны в любой системе.