2008-09-27 38 views
11

Dường như hầu hết các trình cài đặt cho Perl đều tập trung vào việc cài đặt các mô-đun Perl, không phải ứng dụng. Những thứ như ExtUtils :: MakeMaker và Module :: Xây dựng rất thích hợp cho các mô-đun, nhưng yêu cầu một số công việc bổ sung cho Ứng dụng web.Hệ thống tốt nhất để cài đặt ứng dụng web Perl là gì?

Lý tưởng nhất là nó sẽ được tốt đẹp để có thể làm như sau sau khi kiểm tra ra nguồn gốc từ kho:

  • Có phụ thuộc mất tích phát hiện
  • Tải về và cài đặt phụ thuộc từ CPAN
  • Chạy một lệnh để "Xây dựng" nguồn thành trạng thái cuối cùng (thực hiện bất kỳ phân tích cú pháp nguồn hoặc cấu hình nào cần thiết cho môi trường cục bộ).
  • Chạy lệnh để cài đặt các tệp được xây dựng vào các vị trí thích hợp. Không chỉ các mô-đun perl, mà còn các thứ như tệp mẫu (.tt) và các tập lệnh CGI, JS và các tệp hình ảnh có thể truy cập được trên web.
  • Đảm bảo các quyền thích hợp được đặt trên các tệp đã cài đặt (và ngữ cảnh SELinux nếu cần).

Hiện tại chúng tôi có một hệ thống dựa trên Mô-đun :: Xây dựng thực hiện hầu hết việc này. Công việc đã được thực hiện bởi đồng nghiệp của tôi, những người đang học cách sử dụng Module :: Build vào lúc đó và chúng tôi muốn một số lời khuyên về việc tổng quát hóa giải pháp của chúng tôi vì nó khá cụ thể cho ứng dụng ngay bây giờ. Đặc biệt, hệ thống của chúng tôi yêu cầu chúng tôi cài đặt các phụ thuộc bằng tay (mặc dù nó phát hiện chúng).

Có hệ thống cụ thể nào bạn đã sử dụng đã đặc biệt thành công không? Bạn có phải viết trình cài đặt dựa trên Mô-đun :: Xây dựng hoặc ExtUtils :: MakeMaker dành riêng cho ứng dụng của bạn hay là một cái gì đó tổng quát hơn có sẵn?

EDIT: Để trả lời câu hỏi brian của dưới đây:

  • Chúng ta có thể đăng nhập vào các máy
  • Chúng tôi không có quyền truy cập root vào máy
  • Các máy đều (bề ngoài) giống hệt nhau xây dựng của RHEL5 với SELinux đã bật
  • Hiện tại, những người cài đặt máy chỉ là những người lập trình từ nhóm của chúng tôi và nguồn của chúng tôi không có sẵn cho công chúng. Tuy nhiên, nó có thể hiểu được nguồn của chúng tôi cuối cùng có thể được cài đặt trên máy của người khác trong tổ chức của chúng tôi, được cài đặt bởi người lập trình hoặc hệ thống của họ.
  • Chúng tôi cài đặt bằng cách kiểm tra từ kho lưu trữ, mặc dù chúng tôi muốn có tùy chọn sử dụng kho lưu trữ được phân phối (xem bên trên).

Trả lời

6

Những giới hạn của bạn khi cài đặt ứng dụng web là gì? Bạn có thể đăng nhập vào máy không? Tất cả các máy có chạy cùng một thứ không? Mọi người có cài đặt ứng dụng web đồng nghiệp hoặc những người ngẫu nhiên từ công chúng không? Có phải mọi người đang cài đặt sysadmins, lập trình viên, người quản lý web này hay cái gì khác không? Bạn có cài đặt bằng cách phân phối một kho lưu trữ hoặc kiểm tra từ kiểm soát nguồn không?

Đối với hầu hết nội dung của tôi, liên quan đến hệ thống quản trị hệ thống quen thuộc với cài đặt Perl trong môi trường kiểm soát, tôi chỉ sử dụng MakeMaker. Thật dễ dàng để làm cho tất cả những điều bạn liệt kê nếu bạn biết một chút về MakeMaker. Nếu bạn muốn biết thêm về điều đó, hãy hỏi một câu hỏi khác. ;) Tuy nhiên, Module::Build cũng dễ dàng và cách đi nếu bạn không thích sử dụng MakeMaker.

Module::Build sẽ là một cách hay để xử lý nhiều tình huống khác nhau nếu mọi người hơi khiêm tốn về dòng lệnh và cài đặt phần mềm. Bạn sẽ có rất nhiều sự linh hoạt với Module::Build, nhưng cũng có nhiều công việc hơn một chút. Và, công cụ cpan (đi kèm với Perl), có thể cài đặt từ thư mục hiện tại và xử lý các phụ thuộc cho bạn. Chỉ cần yêu cầu cài đặt thư mục hiện tại:

$ cpan . 

Nếu bạn chỉ phải cài đặt trên một platorm, có thể bạn sẽ dễ dàng tạo một gói ở định dạng gốc. Bạn thậm chí có thể có Module::Build làm cho gói đó cho bạn để các nhà phát triển có sự linh hoạt của Module::Build, nhưng trình cài đặt có sự dễ dàng của quá trình bản địa. Gắn bó với Module::Build cũng có nghĩa là bạn có thể tạo các gói khác nhau cho các nền tảng khác nhau từ một công cụ xây dựng duy nhất.

Nếu mọi người cài đặt ứng dụng web thực sự không có ý tưởng về dòng lệnh, CPAN và những thứ khác, có thể bạn sẽ muốn sử dụng trình đóng gói và trình cài đặt không gây sợ hãi hoặc khiến họ suy nghĩ về những gì đang diễn ra bật và có thể tự động báo cáo sự cố cho bạn một cách tự động.

Như Dave đã chỉ ra, sử dụng gương CPAN thật luôn mang đến cho bạn phiên bản mới nhất của mô-đun, nhưng bạn cũng có thể tự tạo gương CPAN giả với chính xác các bản phân phối bạn muốn và cài đặt các công cụ CPAN bình thường cái đó. Đối với khách hàng của chúng tôi, chúng tôi tạo ra "CPAN trên một đĩa CD" (mặc dù các ổ USB hiện đang hoạt động tốt). Với một kịch bản "chạy tôi" đơn giản, mọi thứ được cài đặt chính xác trong các phiên bản mà họ cần. Xem, ví dụ: http://www.slideshare.net/brian_d_foy/mycpan-lapm-september-2007">Thực hiện cuộc trò chuyện CPAN của riêng tôi nếu bạn quan tâm đến điều đó. Một lần nữa, hãy cân nhắc đến khán giả khi bạn nghĩ về điều đó Nó không phải là thứ bạn muốn trao cho công chúng.

Chúc may mắn, :)

3

Tôi khuyên bạn nên xem xét nghiêm túc hệ thống gói như RPM để thực hiện việc này. Ngay cả khi bạn đang chạy trên Windows tôi sẽ xem xét RPM và Cygwin để thực hiện cài đặt. Bạn thậm chí có thể thiết lập một kho lưu trữ yum hoặc apt để phân phối các gói đến các hệ thống từ xa.

Nếu bạn đang tìm kiếm trình cài đặt chung cho khách hàng đang chạy bất kỳ số lượng hệ điều hành và bản phân phối nào, thì vấn đề trở nên khó khăn hơn nhiều.

6

Câu trả lời cho thấy RPM chắc chắn là một câu trả lời hay.Sử dụng trình quản lý gói của hệ thống của bạn chắc chắn có thể làm cho cuộc sống của bạn dễ dàng hơn. Tuy nhiên, nó có thể có nghĩa là bạn cũng cần phải đóng gói một loạt các mô-đun Perl khác.

Bạn cũng có thể xem Shipwright. Đây là một công cụ dựa trên Perl để đóng gói một ứng dụng và tất cả các phụ thuộc mô-đun Perl của nó. Đó là những ngày đầu, nhưng có vẻ đầy hứa hẹn.

Theo như cài đặt phụ thuộc, nó sẽ không khó để chỉ đơn giản là gói lên một bó tarballs và sau đó có bạn Module :: Xây dựng dựa trên giải pháp cài đặt chúng. Bạn nên nhìn vào pip, mà làm cho cài đặt một mô-đun từ một tarball khá tầm thường. Bạn có thể gói này với cơ sở mã của bạn và chỉ cần gọi nó từ trình cài đặt của riêng bạn để xử lý các dep.

Tôi đặt câu hỏi liệu việc dựa vào CPAN có phải là một ý tưởng hay không. Vỏ CPAN luôn tìm nạp phiên bản mới nhất của bản phân phối, thay vì phiên bản cụ thể. Nếu bạn quan tâm đến việc đảm bảo cài đặt có thể lặp lại, thì đó không phải là công cụ phù hợp.

2

Hãy xem PAR.

Jonathan Rockway là một phần nhỏ trong việc sử dụng điều này với Chất xúc tác trong cuốn sách của mình.

Các vấn đề liên quan