리눅스 우분투 서버를 최신 상태로 유지하는 가장 좋은 방법은 무엇입니까 (빌드 패키지, dist-upgrade, alt repos…)


8

우리는에 따라 프로덕션 서버 실행하는 우분투 9.10 카르마 코알라 , 커널은 거의 - - 날짜 (2.6.38.2-grsec-XXXX-GRS-ipv6-64)에 불과하다 카르마 패키지 저장소 예를 들어, 지금은 말도 안되게 오래된된다. Nginx는 0.7.62입니다-정말 버그가 있습니다-최신 안정은 1.0.x입니다!

또한 Karmic은 수명이 다했습니다.

이 질문 : UNIX 패키지를 최신 상태로 유지하기위한 모범 사례? 비슷해 보이지만 실제로는 패키지 관리자에 대한 제안 만 포함합니다. 내가 필요한 것은 전혀 없습니다!

내가 볼 수있는 옵션은 다음과 같습니다.

  1. 새 머신을 가져 와서 처음부터 설치, 마이그레이션
  2. 배포 업그레이드
  3. 다른 저장소를 사용하십시오 ( launchpad / ppa / backport / pinning )
  4. 자신의 것을 구축

1의 단점은 분명합니다.

다운 타임 및 가능한 치명적인 결과는 프로덕션 서버에 대해 예측하기가 불가능하고 현재 대부분 자체 필수 패키지를 재 구축하고 있기 때문에 dist-upgrade 경로를 감히하지 않습니다. 그러나 나는 일부가 빠져있을 것이라고 확신합니다.

우분투 백 포트 사용의 위험 (안정성 / 호환성)이 무엇인지는 분명하지 않으며, 더 이상 9.10에 공식적으로 제공되는 것은 없습니다. 런치 패드는 개별 빌드이며 비슷한 질문입니다. 직접 컴파일하는 것보다이 방법이 더 좋습니다.

패키지 빌드는 훌륭해 보이지만 : 1. 때때로 기존 구성 파일을 재사용하기 위해 올바른 ./configure 옵션을 재생산하는 데 문제가 있습니다. 버그

마지막으로 ... 최근 배포에서 '오래된'패키지는 어떻습니까? 나는 그들 자신을 재건하는 것 외에 다른 방법이 없다고 생각합니까? 2와 4의 조합이 마침내 가장 좋은 경로입니까?

이 작업을 수행하는 가장 좋은 방법 또는 일부 옵션이 양호하거나 좋지 않은 이유에 대한 객관적인 합의가 있습니까?

정말로 없다면, 나는 끝없는 스레드를 만들기 전에 질문이 닫히는 것을 받아 들일 것입니다!


1
현재 LTS 버전 만 서버에 사용해야하는 이유가 있습니다. 귀하의 질문에 대한 답변으로, # 1 또는 # 2를 수행 할 수있을 때까지 # 4가 붙어 있습니다. 종속성을 사용할 수 없기 때문에 더 많은 시간이지나면서 # 3이 자주 실패하는 것을 볼 수 있습니다.
daemonofchaos

실제로 @KayakJim, 우리는 당시에 알아 냈어야했지만 서버 부하가 적 으면 유지 보수가 충분하지 않았으므로 충분히 앞서 생각하지 못했습니다. 교훈은 (희망적으로) 배웠다.
Stefano

답변:


4

자신의 배포판을 유지하는 것은 많은 작업입니다. 백 포트를 유지 관리하더라도 보안 문제로 인해 곧 압도 당할 것이며 소프트웨어를 계속 업데이트하기 위해 저수준 라이브러리를 가져와야합니다. 재미 없어).

업그레이드는 일반적으로 좋은 솔루션입니다. do-release-upgrade잘 만들어졌으며 문제없이 업그레이드 할 수 있어야합니다 (특히 공식 패키지 만 사용한 경우).

내가 가장 좋아하는 솔루션은 재설치 경로 일 수 있습니다. 보다 구체적으로 Puppet, Cfengine 또는 Chef와 같은 구성 관리 시스템을 사용하여 서버를 관리해야합니다. 이러한 도구를 사용하여 모든 구성 / 패키지 요구 사항을 지정하고 별도의 파티션에서 데이터를 안전하게 보호하는 경우 훨씬 쉽게 다시 설치할 수 있습니다. 데이터 파티션을 지우지 않고 새 배포를 설치 한 다음 구성 관리 도구를 실행하여 패키지 / 구성을 재설정하면됩니다. 특히 관리 할 서버가 여러 개인 경우 이것이 가장 깨끗한 방법이라고 생각합니다.

비공식 패키지를 사용하는 경우 업그레이드 / 다시 설치하기 전에 식별 할 수 있습니다. 유지 관리 검사 는 Ubuntu에서 공식적으로 유지 관리하지 않는 패키지를 식별하는 데 도움이 될 수 있습니다.

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

다시 설치하려는 경우 설치된 패키지 목록을 내보낼 수도 있습니다.

$ dpkg --get-selections > myinstall.txt

그리고 debconf 데이터베이스 :

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

참고로, 현재 Karmic을 사용하고 있기 때문에 LTS 릴리스 인 Lucid로 업그레이드하기에는 너무 폭력적이지 않을 수 있습니다. 주 서버 패키지는 2015 년까지 지원됩니다. 따라서 향후 자동 설치를 실행할 수있는 충분한 시간을 확보해야합니다.

런치 패드 패키지에 대해 물어 보면 PPA를 의미한다고 가정합니다. 다양한 PPA가 있습니다. 일부는 실험적이며 일부는 안정적입니다. 일부는 공식 우분투 개발자가 관리하고 일부는 패키지를 올바르게 수행하는 방법을 거의 모르는 사람들이 관리합니다. PPA에서 찾은 패키지가 좋다면 일반적으로 말하기는 어렵지만 일반적인 규칙은 없습니다. 이 경우 가장 좋은 힌트는 PPA 소유자를보고 패키지의 가능한 품질에 대한 아이디어를 얻는 것입니다.


물론 우리는 꼭두각시와 공동에 대해 생각하지 않았습니다. 당시에. 그러나 실제로 우리는 다시 설치 경로로 가면 복제하기 쉬운 설치를 올바르게 준비하는 것이 좋습니다. 추신. "특히 공식 패키지 만 사용했다면"물론 안타깝게도!
Stefano

그런 다음 첫 번째 단계는 비공식 패키지를 식별하는 것입니다. maintenance-check그것에 도움이 될 수 있습니다 (내 편집 참조).
ℝaphink

conf 관리 시스템 사용 및 유지 관리 확인 및 PPA에 대한 추가 팁에 대한 선택 답변. 최신 저장소를 살펴본 후 패키지가 항상 최신 상태가 아님을 깨달았습니다. 11.04에서도 nginx 버전은 OLD (0.8.54-4)이며 해당 배포에서 1.0.x로 이동하지 않습니다. 그러한 상황에 대한 조언이 있습니까?
Stefano

1
@Stefano : Ubuntu는 데비안과 동일한 종류의 정책을 사용합니다. 즉, 소프트웨어는 출시 후 (기능이 고정 된 후 정밀한 후) 기본 리포지토리에서 소프트웨어가 업그레이드되지 않습니다. 이는 실제로 유지 관리되는 릴리스 (특히 소프트웨어가 빠른 릴리스 인 경우)에서 이전 버전의 소프트웨어로 이어질 수 있습니다. 백 포트를 사용하여 새 버전을 얻을 수 있지만 안정성 및 보안 업데이트가 손실 될 수 있습니다. 앞에서 언급했듯이 비용이 많이 드는 자체 백 포트를 기꺼이 유지하지 않는 한 완벽한 솔루션은 없습니다.
ℝaphink

2

서버가 전 세계에 노출되어 있지 않고 사용자를 절대적으로 신뢰하는 경우 (일반적으로 좋은 생각이 아님) 작동하는 경우 그대로두면됩니다.

그것이 어떤 방식 으로든 외부 세계에 노출되거나 합법적 인 사용자가 불법적으로 게임을한다는 아이디어를 즐긴다면, 설치된 소프트웨어에 대한 수정 및 패치가 절대적으로 필요합니다.

이 경우 두 가지 옵션이 있습니다.

  1. 지원되는 배포를 실행하고 소프트웨어를 업데이트하거나

  2. 솔직히 말해서, 지원되지 않는 배포판에 대한 모든 수정본을 백 포트하십시오.

나는 우분투 사용자가 아니므로 옵션 3을 통해 얻을 수있는 패치의 완성에 대해서는 언급 할 수 없지만 확실하지 않으면 완전한 적용 범위를 갖지 못할 것이라고 가정합니다.

가장 좋은 해결책은 우분투의 LTS 버전으로 옮기는 것입니다. 그러면 우연히 주어진 패키지 버전을 지원할 것입니다. 시간이 지남에 따라 일부 패키지는 오래되었지만 환경에 보안 패치가 있으며 안정적입니다 (패키지 버전 충돌이없는 경우). 경험상 알려진 작업 환경의 안정성은 일반적으로 새로운 기능보다 더 중요합니다.

현재 위치를 유지 관리 할 수 ​​없으므로 이동해야합니다. 유일한 안전한 방법은 두 번째 머신 (또는 가상 머신)을 확보하고 반복 가능한 성공적인 절차가 완료 될 때까지 마이그레이션을 테스트 한 다음 프로덕션 머신에 적용하는 것입니다. 백업을 사용하여 테스트 마이그레이션을 수행하는 경우 백업 절차도 테스트 할 수 있습니다.


감사합니다 @ Pawel-Brodacki. 서버가 확실히 노출되었습니다! 기능보다 안정성에 대한 귀하의 요점을 이해합니다. 문제는 종종 안정성이 주요 버전 단계와 함께 제공된다는 것입니다. 예 : nginx 1.0. * 시리즈는 최신 natty에 포함 된 0.8 시리즈보다 안정적입니다. 그것에 대한 제안?
스테파노

1
현재 상태가 충분하면 "파손되지 않은 경우 수정하지 마십시오"규칙이 적용됩니다. 그 후 비즈니스 계산 : 안정성이 추가되어 패키지 세트를 직접 유지 관리하는 데 드는 비용보다 더 많은 비용을 절약 할 수 있습니다. 그것이 단지 nginx이거나 nginx이고 소수의 라이브러리라면 직접 컴파일하고 테스트하고 배포하는 것이 가능합니다. 그러나이 경우 발견 된 모든 버그를 신속하게 닫기 위해 패키지 개발을 면밀히 따르는 것이 좋습니다.
Paweł Brodacki 님이

2

앞으로 나아갈 수있는 유일한 방법은 배포판 업그레이드입니다. 나는 당신이 그것에 대해 긴장하고 있음을 이해할 수 있습니다. 이제 당신은 몇 가지 릴리스를 앞으로 나아갈 것입니다 (11.04가 릴리스되었습니다).

이 시스템에서 드라이브 복제본을 만든 다음 별도의 컴퓨터를 사용하여 복제본을 실행하고 일련의 테스트 업그레이드를 수행하는 것이 좋습니다. 발생한 모든 문제를 기록하고 모든 절차가 명확해질 때까지 반복하십시오. 그런 다음 이것을 라이브 서버에 적용하십시오.

가동 중지 시간을 감당할 수없는 경우 마이그레이션이 유일한 방법입니다. 고정 및 백 포트는 잊어 버려 제한된 기간 동안 만 살아있게하십시오. 그리고 "자신의 롤"옵션도 고려할 가치가 없습니다. 내 두 동전 만 가치가있어

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.