Les programmes WGET ou similaires sont-ils toujours disponibles sur les systèmes POSIX?

StackOverflow https://stackoverflow.com/questions/9490872

Question

Y a-t-il un client HTTP comme wget/lynx/GET qui est distribué par défaut dans les systèmes d'exploitation POSIX ou * NIX qui pourraient être utilisés pour une portabilité maximale?

Je sais que la plupart des systèmes ont wget ou lynx Installé, mais je semble que je me souviens avoir installé certains systèmes de serveur Ubuntu en utilisant des paramètres par défaut et ils n'avaient ni l'un ni l'autre wget ou lynx installé dans le package de base.

J'écris un script shell pour Linux (et probablement Mac) pour installer un logiciel sur l'ordinateur. Pour éviter d'avoir à distribuer quelques fichiers volumineux, je voudrais récupérer ces fichiers à partir d'Internet au lieu d'emballer avec l'installateur. Actuellement, le script d'installation doit être distribué dans un seul fichier créé à partir de Se faire.

Je voudrais éviter que le script d'installation soit supérieur à 100 Mo, ce qui serait si les fichiers étaient inclus, et ils peuvent également ne pas être nécessaires si la personne améliore ou réinstalle le logiciel. Peut-être que la chose la plus portable à faire est d'inclure les fichiers dans le Pacakage.

En ce moment, je pense juste à faire vérifier le script pour wget, lynx, et GET, dans cet ordre et il utilisera celui qu'il peut pour télécharger, mais je pourrais éviter cela s'il y avait un moyen de télécharger les fichiers qui fonctionneraient sur tous les systèmes.

ÉDITER:

Quelqu'un en sait-il beaucoup sur LWP-Request (GET) et sa disponibilité? Cela semble être facilement disponible sur plusieurs des systèmes que j'ai vérifiés jusqu'à présent, et je me souviens qu'il y a toujours environ 10 ans, pour retourner à Redhat.

Était-ce utile?

La solution

EDIT en 2019-11-04: Je réécrit ma réponse pour refléter l'importance de veiller à ce qu'un transfert ne soit pas falsifié pendant le vol. Je vais laisser ma réponse originale sous la règle.

Je suggère d'utiliser rsync plus de ssh pour transférer vos fichiers. rsyncL'interface peut sembler écrasante, mais la plupart des utilisateurs peuvent choisir rsync -avzP, et si vous avez besoin de plus de flexibilité, RSYNC peut s'adapter. Utilisant ssh fournira l'intégrité, l'authenticité et la confidentialité à votre connexion.

curl est la norme de facto pour les transferts HTTP; Si http ou https ordinaire sont préférés, curl ou des outils basés sur curl sont probablement un bon choix.


D'après mon expérience, des outils sont disponibles dans cet ordre:

  • wget
  • curl
  • sftp
  • ftp
  • GET (J'utilise HEAD Tout le temps et oubliez souvent que ce n'est qu'un outil de la suite)
  • tftp
  • nc (pas aussi courant que je le souhaite)
  • socat (encore moins courant)

La bash /dev/tcp L'outil est disponible sur la plupart des systèmes que j'ai utilisés (certains utilisés dash ou pdksh à la place), mais en utilisant echo avec bash, nc, ou socat va à long terme pour l'accès http - vous devrez gérer les en-têtes en quelque sorte, ce qui réduit son élégance.

Autres conseils

Liste officielle des utilitaires POSIX 7

http://pubs.opengroup.org/onlinepubs/9699919799/utitilities/contents.html

Voici ne pas Présent dans la liste:

  • wget
  • boucle
  • FTP

Il en va de même pour le LSB qui ne garantit essentiellement que les services publics POSIX.

Mais je pense que le POSIX C est suffisant pour mettre en œuvre la plupart netcat fonctionnalité, c'est donc vraiment une opportunité manquée. Par exemple: Http reçoit une demande en utilisant c sans libcurl

GNU AWK (GAWK) a intégré à TCP Handeling même sur les systèmes non Linux http://www.gnu.org/software/gawk/manual/gawkinet/html_node/

Curl est probablement encore plus courant que WGET. Au moins dans mon expérience simplement parce que davantage d'autres outils en dépendent. Mais Curl et WGET sont une installation super simple et seront disponibles sur n'importe quel système.

Je suggère d'utiliser FTP ou WGET, car ils sont les plus courants dans les distributions Linux. La meilleure pratique pourrait être de demander à votre script de voir si une commande est disponible, sinon à la commande suivante.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top