2012-02-28 14 views
16

Có một ứng dụng HTTP như wget/lynx/GET được phân phối theo mặc định trong các hệ điều hành POSIX hoặc * nix có thể được sử dụng cho tính di động tối đa không?Có phải chương trình wget hoặc tương tự luôn có sẵn trên các hệ thống POSIX không?

Tôi biết hầu hết các hệ thống có wget hay lynx cài đặt, nhưng tôi dường như nhớ cài đặt một số hệ thống máy chủ Ubuntu sử dụng cài đặt mặc định và họ đã không phải wget hay lynx cài đặt trong gói cơ bản.

Tôi đang viết một kịch bản lệnh shell cho Linux (và có thể là Mac) để cài đặt một phần mềm vào máy tính. Để tránh phải phân phối một vài tệp lớn, tôi muốn tìm nạp các tệp này từ internet thay vì đóng gói bằng trình cài đặt. Hiện tại, tập lệnh cài đặt sẽ được phân phối trong một tệp được tạo từ Makeself.

Tôi muốn tránh việc cài đặt tập lệnh vượt quá 100 MB mà sẽ là nếu các tệp được đưa vào và cũng có thể không bắt buộc nếu người đó đang nâng cấp hoặc cài đặt lại phần mềm. Có lẽ điều di động nhất để làm là bao gồm các tập tin trong pacakage.

Ngay bây giờ tôi chỉ nghĩ đến việc phải kiểm tra kịch bản cho wget, lynx, và GET, để đó và nó sẽ sử dụng bất cứ một nó có thể để tải về, nhưng tôi có thể tránh điều này hoàn toàn nếu có một cách tôi có thể tải xuống các tệp có thể hoạt động trên tất cả các hệ thống.

EDIT:

Có ai biết nhiều về lwp-yêu cầu (GET) và tính sẵn sàng của nó? Điều này dường như có sẵn trên một số hệ thống tôi đã kiểm tra cho đến nay, và tôi nhớ điều này luôn luôn được khoảng 10 năm trước đây trở lại RedHat.

+1

Bạn cũng có thể sử dụng 'curl' hoặc (ví dụ cực đoan)' netcat' (thường được đặt bí danh là 'nc'). Tuy nhiên, tôi nghĩ 'wget' sẽ là phổ biến nhất. Nếu điều này là không có sẵn, rất có thể là tất cả những người khác sẽ không được tốt –

+0

True 'curl' là một khả năng quá, tôi figured rằng một trong những sẽ ít phổ biến hơn' wget' mặc dù. Tôi không nghĩ về 'nc', vì vậy đó cũng có thể là một khả năng, tôi biết nó đã tồn tại trong một thời gian dài. – drew010

+3

Nhân tiện, bạn cũng có thể [sử dụng chính nó] (http://thesmithfam.org/blog/2006/05/23/bash-socket-programming-with-devtcp-2/) để thực hiện yêu cầu HTTP. Tôi đoán bash thậm chí còn phổ biến hơn wget (mặc dù tính năng cụ thể đó có thể không được kích hoạt phổ biến). –

Trả lời

12

Theo kinh nghiệm của tôi, các công cụ có sẵn về theo thứ tự này:

  • wget
  • curl
  • sftp
  • ftp
  • GET (tôi sử dụng HEAD tất cả các thời gian và thường quên nó chỉ là một công cụ trong bộ phần mềm)
  • tftp
  • nc (không phổ biến như tôi muốn)
  • socat (thậm chí ít phổ biến hơn)

Công cụ bash/dev/tcp có sẵn trên hầu hết các hệ thống tôi đã sử dụng (một số sử dụng dash hoặc pdksh thay), nhưng sử dụng echo với bash, nc hoặc socat sẽ thực hiện theo chiều dài để truy cập HTTP - bạn sẽ phải xử lý tiêu đề bằng cách nào đó, làm giảm sự sang trọng của nó.

+0

Nhiều máy khách 'ftp',' ncftp', 'lftp', v.v., có thể hoặc không thể cài đặt các liên kết tượng trưng' ftp'; Các hệ thống có nguồn gốc Debian ít nhất sẽ điền vào '/ etc/alternatives/ftp' với máy khách' ftp' ưa thích của hệ thống, và '/ usr/bin/ftp' sẽ trỏ đến đó. – sarnold

+1

Tôi đã tìm thấy wget có sẵn trên hầu hết các hệ thống tôi đã sử dụng tuy nhiên curl nói chung luôn luôn là một cái gì đó tôi đã biên soạn bằng tay. Tuy nhiên, vì SFTP dựa trên việc có quyền truy cập SSH, tôi thấy rằng nó thường luôn có sẵn. Vì vậy, tôi xếp hạng cao hơn –

1

Tôi khuyên bạn nên sử dụng ftp hoặc wget, vì chúng là phổ biến nhất trong bản phân phối Linux. Cách thực hành tốt nhất có thể là để kịch bản của bạn xem xét xem một lệnh có sẵn không, nếu không đi đến lệnh tiếp theo.

1

Curl có lẽ còn phổ biến hơn wget. Ít nhất là trong kinh nghiệm của tôi chỉ vì nhiều công cụ khác phụ thuộc vào nó. Nhưng cả hai curl và wget là một cài đặt siêu đơn giản và sẽ có sẵn trên bất kỳ hệ thống.

+0

Tôi đồng ý, nhưng khi nói đến việc được cài đặt sẵn trên một hệ thống, tôi không nghĩ rằng nó thường được cài đặt "ra khỏi hộp". Đặc biệt là khi chúng ta đang nói về distro Linux cũ hơn 5 năm. – drew010

+1

5 năm distro Linux cũ không nên được cài đặt bất cứ nơi nào .. –

+0

Bạn nói đúng, tôi không biết những gì tôi đang suy nghĩ. Tôi không nghĩ rằng nó sẽ xảy ra bất cứ điều gì cũ. Cảm ơn các ý kiến ​​ – drew010

5

danh sách chính thức của POSIX 7 tiện ích

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

Sau đây là không hiện diện trong danh sách:

  • wget
  • curl
  • ftp

Cũng vậy với các LSB trong đó chủ yếu chỉ đảm bảo các tiện ích POSIX.

Nhưng tôi nghĩ rằng POSIX C là đủ để thực hiện hầu hết các chức năng netcat, do đó, nó thực sự là một cơ hội bị bỏ lỡ. Ví dụ: HTTP get Request using C WITHOUT libCurl