Làm thế nào để nâng cấp phần mềm được cài đặt từ nguồn?


10

Tôi cài đặt NGinx từ nguồn vì các gói từ kho ubfox khá cũ. Tôi đã tự hỏi phương pháp tốt nhất để nâng cấp các loại cài đặt này là gì?

Quy trình làm việc hiện tại của tôi liên quan.

  • Đang tải xuống nguồn mới
  • Cài đặt phần mềm với các đường dẫn tương tự.
  • Khởi động lại phần mềm.

Một cái gì đó cho tôi biết đây không phải là con đường tốt nhất.

Gợi ý?

Câu trả lời:


9

Bạn có quyền nghĩ rằng đây không phải là con đường tốt nhất. Tuyến đường này yêu cầu nhiều bước thủ công và rất dễ bị lỗi và không mở rộng tốt.

Khi làm việc với các bản phân phối linux, bạn nên bám sát quản lý gói càng nhiều càng tốt.

Những lợi thế của việc sử dụng quản lý gói:

  • Hỗ trợ phụ thuộc
  • Dễ dàng cài đặt / gỡ bỏ
  • Kiểm kê phần mềm
  • Hỗ trợ nâng cấp / hạ cấp, bao gồm xử lý các tệp cấu hình
  • Gói nguồn về cơ bản ghi lại quá trình xây dựng của bạn và tự động hóa nó cho bạn sau khi được viết.
  • Ký gói
  • và nhiều hơn nữa.

Khi bạn bắt đầu làm việc chỉ từ nguồn, bạn mất tất cả các tính năng tuyệt vời này và mọi thứ bắt đầu trở nên lộn xộn khá nhanh.

Để giải quyết vấn đề cụ thể của bạn, bạn nên kiểm tra kho lưu trữ backport của Ubuntu , có thể họ có phiên bản cập nhật cho NGinx mà bạn có thể sử dụng.

Nếu họ không có phiên bản phù hợp, thì giải pháp tốt nhất sẽ là tự mình tạo một gói ubfox có cổng. Nó thực sự không khó lắm, và nó ít làm việc hơn là biên dịch nó từ nguồn theo cách thủ công mỗi lần. Về cơ bản, việc nhập dữ liệu đòi hỏi phải lấy gói nguồn từ ubfox, thay thế tệp tar.gz cũ mới bằng tệp mới nhất mà bạn muốn và xây dựng lại gói.

Bạn có thể sử dụng hướng dẫn này để giúp bạn backport gói.


8

Tôi thấy khá thuận tiện khi cài đặt phiên bản khác nhau ở các vị trí riêng biệt và chỉ cần liên kết tượng trưng đến phiên bản bạn muốn sử dụng, như:

lrwxr-xr-x  1 root  wheel     7B Jun  7 18:26 /usr/local/foo -> foo-1.0
drwxr-xr-x  2 root  wheel   512B Jun  7 18:26 /usr/local/foo-1.0
drwxr-xr-x  2 root  wheel   512B Jun  7 18:26 /usr/local/foo-1.1

Những lợi ích là:

  • giảm thiểu thời gian ngừng dịch vụ trong quá trình nâng cấp
  • rollback dễ dàng
  • bạn vẫn có thể sử dụng cùng một đường dẫn, như /usr/local/foo/bin/bar

Tất nhiên bạn vẫn phải áp dụng lại bất kỳ thay đổi cấu hình nào bạn đã thực hiện cho phiên bản trước, nhưng để có thể sử dụng một số hệ thống phiên bản (RCS / SVN / GIT) hoặc công cụ quản lý cấu hình như Bcfg2 .

Và, tất nhiên điều này chỉ phù hợp cho một số ít hoặc ít máy chủ lưu trữ.


Đây là những gì tôi làm trong một số trường hợp trong đó các gói xây dựng không phải là một câu trả lời phù hợp, ngoại trừ tôi thường sử dụng / opt thay vì / usr / local.
freiheit

2

Lần tới ... làm thế nào về việc biên dịch nó thành * .rpm hoặc * .deb?


1

Nếu bạn sẽ cài đặt cái này trên một máy duy nhất, thì việc thực hiện nó từ nguồn mỗi lần là vấn đề tốt nhất. Nếu bạn định cài đặt cái này trên một số máy và bạn muốn chắc chắn rằng nó phù hợp, có lẽ nên học cách tạo các gói Debian. Bạn có thể có thể sử dụng bao bì trong Ubuntu làm cơ sở.


1

Không có cách nào hay cả. Lý do mà quản lý gói hiệu quả đã được tạo ra là để giải quyết vấn đề này. Nâng cấp và gỡ cài đặt những thứ được biên dịch mã nguồn là khó.

Tôi đồng ý với Tom và David.

Nếu đây là trường hợp một lần, thì biên dịch lại từ nguồn có lẽ là lựa chọn tốt nhất của bạn. Nếu đó là trên một loạt các máy móc, chắc chắn đã đến lúc chuyển sang quản lý gói được hỗ trợ.


0

Tôi sợ đây là cách duy nhất. nếu bạn có nhiều máy chủ hơn để duy trì - hãy xem xét việc có môi trường thử nghiệm riêng biệt nơi bạn biên dịch và có thể gói kết quả của quá trình biên dịch của bạn.

điều này sẽ hơi chuẩn hóa các thiết lập của bạn và dễ dàng triển khai trên nhiều máy chủ. Ngoài ra, bạn sẽ không cần gcc trên các máy sản xuất [mà nhiều người sẽ coi là lợi ích bảo mật].

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.