Cách thực hành tốt nhất để giữ cho máy chủ linux ub Ubuntu luôn cập nhật (xây dựng gói, nâng cấp, thay thế alt)


8

Chúng tôi đang chạy một máy chủ sản xuất dựa trên Ubuntu 9.10 Karmic Koala , kernel gần như đã được cập nhật (2.6,38.2-grsec-xxxx-grs-ipv6-64) nhưng kho lưu trữ gói karmic hiện đã lỗi thời, ví dụ. Nginx là 0,7,62 - thực sự có lỗi - trong khi ổn định mới nhất là 1.0.x !!

Ngoài ra, Karmic mới đi đến cuối cuộc đời.

Câu hỏi này: Thực hành tốt nhất để giữ cho các gói UNIX được cập nhật? trông tương tự nhưng thực sự chỉ bao gồm một số gợi ý về người quản lý gói; không phải tất cả những gì tôi cần!

vì vậy các tùy chọn mà tôi thấy là:

  1. Nhận một máy mới, cài đặt nó từ đầu, di chuyển
  2. nâng cấp phân phối
  3. sử dụng một kho lưu trữ khác ( launchpad / ppa / backport / ghim )
  4. xây dựng của riêng bạn

Những nhược điểm của 1. là khá rõ ràng.

Mặc dù vậy, tôi không dám thực hiện một lộ trình nâng cấp xa, vì thời gian chết và hậu quả thảm khốc có thể xảy ra là không thể dự đoán được cho một máy chủ sản xuất, và hiện tại chủ yếu là xây dựng lại các gói yêu cầu của riêng tôi. Nhưng tôi chắc chắn rằng tôi có thể thiếu một số.

Tôi không thực sự rõ ràng những rủi ro (tính ổn định / khả năng tương thích) của việc sử dụng backport ubfox là gì, ngoài ra không có gì chính thức được cung cấp cho 9,10 nữa. Launchpad là các bản dựng riêng lẻ, câu hỏi tương tự - làm thế nào tốt hơn là biên dịch của riêng bạn.

Các gói xây dựng có vẻ ổn, nhưng: 1. đôi khi tôi gặp khó khăn khi sao chép các tùy chọn ./có thể sử dụng lại các tệp cấu hình hiện tại của mình 1. Tôi chắc chắn có hàng tấn gói và phụ thuộc hiện đã lỗi thời và có thể là nguồn lỗi

Cuối cùng ... còn những gói 'cũ' trong một bản phân phối gần đây thì sao? Tôi đoán không có cách nào khác ngoài việc tự xây dựng lại chúng? Là sự kết hợp của 2. và 4. cuối cùng là con đường tốt nhất?

Có sự đồng thuận khách quan nào về cách tốt nhất để làm điều này không, hoặc lý do tại sao một số lựa chọn của tôi là tốt / không tốt?

Nếu thực sự không có, tôi sẽ chấp nhận rằng câu hỏi được đóng lại trước khi tạo ra một chuỗi bất tận!


1
Đó là vì lý do mà bạn hiện đang gặp phải rằng chỉ nên sử dụng phiên bản LTS cho máy chủ. Để trả lời câu hỏi của bạn, cho đến khi bạn có thể làm # 1 hoặc # 2, bạn sẽ bị kẹt với # 4. Tôi có thể thấy # 3 bắt đầu thất bại thường xuyên vì thời gian trôi qua nhiều hơn vì không phụ thuộc.
daemonofchaos

thực sự @KayakJim, mặc dù chúng ta nên tìm ra nó vào thời điểm đó - nhưng khi tải máy chủ ở mức bảo trì thấp sẽ có thể chấp nhận được, chúng tôi đã không nghĩ đủ xa. bài học kinh nghiệm (hy vọng).
Stefano

Câu trả lời:


4

Duy trì phân phối của riêng bạn là rất nhiều công việc. Ngay cả khi bạn duy trì các bản sao lưu, bạn sẽ sớm bị khắc phục bởi các vấn đề bảo mật và phải kéo các thư viện cấp thấp để tiếp tục cập nhật phần mềm của mình, điều này có thể phá vỡ những thứ khác (tôi duy trì các máy chủ chạy các bản phát hành 6 năm tuổi, đó là không vui).

Nâng cấp nói chung là một giải pháp tốt. do-release-upgradeđược thực hiện tốt, và bạn sẽ có thể nâng cấp mà không gặp sự cố (đặc biệt nếu bạn chỉ sử dụng các gói chính thức).

Giải pháp yêu thích của tôi mặc dù có thể là đường dẫn cài đặt lại. Cụ thể hơn, các máy chủ của bạn nên được quản lý bằng hệ thống quản lý cấu hình như Puppet, Cfengine hoặc Chef. Nếu tất cả các nhu cầu cấu hình / gói của bạn được chỉ định bằng cách sử dụng một công cụ như vậy và dữ liệu của bạn được an toàn trên một phân vùng riêng biệt, việc cài đặt lại nhanh chóng sẽ dễ dàng hơn nhiều. Bạn chỉ cần cài đặt một bản phân phối mới mà không xóa các phân vùng dữ liệu, sau đó chạy công cụ quản lý cấu hình để đặt lại các gói / cấu hình của bạn. Tôi tin rằng đây là cách sạch nhất để làm, đặc biệt nếu bạn có nhiều máy chủ để quản lý.

Nếu bạn đang sử dụng các gói không chính thức, bạn có thể muốn xác định chúng trước khi nâng cấp / cài đặt lại. kiểm tra bảo trì có thể giúp bạn xác định các gói không được Ubuntu bảo trì chính thức:

$ bzr branch lp:ubuntu-maintenance-check
$ cd ubuntu-maintenance-check
$ ./maintenance-check -f n

Nếu bạn muốn cài đặt lại, bạn cũng có thể xuất danh sách các gói đã cài đặt:

$ dpkg --get-selections > myinstall.txt

và cơ sở dữ liệu gỡ lỗi của bạn:

$ debconf-get-selections > debconf.txt # from the debconf-utils package

Lưu ý, vì bạn hiện đang sử dụng Karmic, việc nâng cấp lên Lucid có thể không quá bạo lực, đây là bản phát hành LTS, vẫn được hỗ trợ cho đến năm 2015 cho các gói máy chủ chính. Điều này sẽ cho bạn đủ thời gian để thiết lập cài đặt tự động khả thi cho tương lai.

Khi bạn hỏi về các gói Launchpad, tôi cho rằng bạn có nghĩa là PPA. Có hàng tấn PPA khác nhau. Một số là thử nghiệm, một số là ổn định. Một số được duy trì bởi các nhà phát triển Ubuntu chính thức, một số được duy trì bởi những người hầu như không biết cách thực hiện một gói đúng cách. Nói chung, thật khó để nói rằng các gói bạn tìm thấy trên PPA là tốt, không có quy tắc chung. Gợi ý tốt nhất trong trường hợp này có thể là nhìn vào chủ sở hữu của PPA để có ý tưởng về chất lượng có thể của các gói của họ.


tất nhiên chúng tôi không nghĩ về con rối & đồng. tại thời điểm đó Nhưng thực sự bạn đã đưa ra một quan điểm rất hay rằng, chúng ta nên đi theo con đường cài đặt lại, tốt hơn hết là chuẩn bị một bản cài đặt dễ sao chép. Tái bút "đặc biệt là nếu bạn chỉ sử dụng các gói chính thức" tất nhiên là không, thật không may!
Stefano

Sau đó, bước đầu tiên bạn có thể muốn thực hiện là xác định các gói không chính thức. maintenance-checkcó thể giúp bạn với điều đó (xem chỉnh sửa của tôi).
ℝaphink

Câu trả lời được chọn cho các mẹo bổ sung, bao gồm sử dụng hệ thống quản lý conf và kiểm tra bảo trì và về PPA. Mặc dù vậy, tôi mới nhận ra rằng, sau khi xem xét các kho lưu trữ mới nhất, các gói đó không phải lúc nào cũng được cập nhật, vd. ngay cả trong phiên bản 11.04 nginx là OLD (0.8.54-4) và họ sẽ không bao giờ chuyển sang 1.0.x trong bản phân phối đó. Có lời khuyên nào cho những tình huống đó không?
Stefano

1
@Stefano: Ubuntu sử dụng loại chính sách tương tự như Debian, đó là phần mềm không được nâng cấp trong kho chính sau khi phát hành (chính xác là sau khi đóng băng tính năng). Điều này thực sự có thể dẫn đến các phiên bản phần mềm cũ trong một bản phát hành vẫn được duy trì (đặc biệt là nếu phần mềm phát hành nhanh). Bạn có thể sử dụng backport để có phiên bản mới, nhưng có thể bạn sẽ mất đi sự ổn định và cập nhật bảo mật. Không có giải pháp hoàn hảo cho việc này, trừ khi bạn sẵn sàng duy trì các bản sao của chính mình, như tôi đã nói trước đây, khá tốn kém.
ℝaphink

2

Nếu máy chủ không được tiếp xúc với thế giới và bạn hoàn toàn tin tưởng người dùng của mình (nói chung đó không phải là một ý tưởng hay), thì nếu nó hoạt động, bạn có thể rời khỏi nó.

Nếu nó tiếp xúc với thế giới bên ngoài và / hoặc bạn giải trí ý tưởng người dùng hợp pháp chơi với nó một cách bất hợp pháp, thì bạn hoàn toàn cần sửa chữa và vá lỗi cho phần mềm đã cài đặt của mình.

Trong trường hợp này, bạn có hai tùy chọn:

  1. Chạy bản phân phối được hỗ trợ và nhận các bản cập nhật cho phần mềm của bạn hoặc

  2. Backport tất cả các bản sửa lỗi cho bản phân phối không được hỗ trợ của bạn, mà nói thẳng ra, có vẻ không khả thi.

Tôi không phải là người dùng Ubuntu, vì vậy tôi không thể nhận xét về tính đầy đủ của các bản vá mà bạn có được thông qua tùy chọn 3 của mình, nhưng nếu bạn có bất kỳ nghi ngờ gì, tôi cho rằng bạn sẽ không có phạm vi bảo hiểm đầy đủ.

Giải pháp tốt nhất là chuyển sang phiên bản LTS của Ubuntu, sẽ cung cấp cho bạn hỗ trợ cho các phiên bản gói nhất định trong một thời gian tới. Trong thời gian, một số gói sẽ bị lỗi thời, nhưng môi trường của bạn sẽ có các bản vá bảo mật và sẽ ổn định (không có phiên bản gói nào bị lỗi). Từ kinh nghiệm của tôi, sự ổn định của một môi trường làm việc đã biết thường có giá trị hơn các tính năng mới.

Dường như, vị trí hiện tại của bạn không thể duy trì được, và bạn phải di chuyển. Cách an toàn duy nhất là lấy máy thứ hai (hoặc máy ảo) và kiểm tra di chuyển cho đến khi bạn có quy trình thành công lặp lại, sau đó áp dụng nó cho máy sản xuất. Nếu bạn sử dụng các bản sao lưu của mình để thực hiện di chuyển thử nghiệm, bạn cũng sẽ có cơ hội tốt để kiểm tra các quy trình sao lưu của mình.


cảm ơn @ Pawel-Brodacki. Các máy chủ chắc chắn được tiếp xúc! Tôi hiểu quan điểm của bạn về tính ổn định đối với các tính năng .. vấn đề là, sự ổn định thường đi kèm với các bước phiên bản chính. Ví dụ. sê-ri 1.0. * sê-ri ổn định hơn sê-ri 0.8 bao gồm ngay cả trong lần mới nhất. Bất kỳ đề nghị về điều đó?
Stefano

1
Nếu hiện tại nó đủ tốt, thì áp dụng quy tắc "nếu nó không bị hỏng, đừng sửa nó". Sau đó, tính toán kinh doanh: tính ổn định được thêm vào sẽ giúp bạn tiết kiệm nhiều hơn chi phí để bạn tự duy trì một bộ các gói. Nếu đó chỉ là nginx, hoặc nginx và một số ít thư viện, thì bạn tự biên dịch, thử nghiệm và triển khai là điều có thể làm được. Tuy nhiên, trong trường hợp đó, sẽ rất thận trọng khi theo sát sự phát triển của các gói để nhanh chóng đóng bất kỳ lỗi nào được phát hiện.
Paweł Brodacki

2

Cách thực sự duy nhất về phía trước là nâng cấp phân phối. Tôi có thể hiểu bạn đang lo lắng về điều đó, vì bây giờ bạn sẽ nhảy một vài bản phát hành phía trước (11.04 vừa được phát hành).

Tôi khuyên bạn nên tạo một bản sao của các ổ đĩa trong máy này và sau đó sử dụng một máy tính riêng để chạy với các bản sao và sử dụng nó để thực hiện một loạt các nâng cấp thử nghiệm. Ghi chú tất cả các vấn đề gặp phải và lặp lại cho đến khi bạn có một quy trình rõ ràng cho tất cả chúng. Sau đó áp dụng điều này cho máy chủ trực tiếp của bạn.

Nếu bạn không đủ khả năng cho bất kỳ thời gian chết, thì di chuyển là lối thoát duy nhất của bạn. Hãy quên đi việc ghim và backport, điều đó sẽ chỉ giúp bạn sống trong một khoảng thời gian giới hạn. Và tùy chọn "roll your own" thậm chí không đáng để xem xét. Chỉ đáng 2 xu của tôi.

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.