(공식) 리포지토리에서 CentOS 패키지 버전 또는 최신 안정 버전의 패키지를 사용해야합니까?


9

이것은 공개적인 질문이지만이 주제에 대해 건설적이고 유용한 토론을하고 싶습니다.

질문을 명확히하기 위해 : CentOS 7 (또는 그 문제에 대한 다른 Linux 배포판 / 버전)을 실행하는 서버에서 Base / EPEL 저장소의 패키지 버전을 사용하는 것이 가장 좋습니까? 아니면 최신 안정 버전을 얻는 것이 좋습니다 패키지 사이트를 형성합니까? 이 경우에는 nginx, MariaDB 및 PHP 7과 같은 패키지를보다 구체적으로 언급하고 있습니다. 예를 들어 EPEL 버전 1.6.3보다 nginx 1.8.0을 설치하는 장단점은 무엇입니까? 어느 쪽의 성능 차이나 보안 위험이 있습니까?

모든 토론과 경험을 환영합니다. 자료와 사실을 인용하십시오.


4
OS 제공 패키지 를 통해 설치하는 것을 피하고 싶습니다 . 먼저 배포판 공급자가 구성 파일 위치 등을 사용자 정의한 경우 어떻게해야하는지 모릅니다. 예를 들어 배포판 1.6.3에 nginx 1.8.0을 설치 한 다음 배포판을 설치하면 어떻게됩니까? 1.9.9로 점프? 커스텀 설치는 어떻게 되나요? 일반적으로 서버 수명 동안 사용자 정의 된 OS 설치를 유지하려는 경우를 제외하고 는 OS가 제공하는 어떤 것도 조이지 마십시오 . 이후 버전의 OS 제공 응용 프로그램의 경우에는 이와 유사하게 설치하십시오 . /usr/local
Andrew Henle

좋은 지적입니다. 제 레토르트는 다음과 같습니다. 예를 들어 nginx, 최신 안정 버전은 1.8.0이고 최신 레거시 버전은 1.6.3입니다. 배포판 버전 1.6.3에서 보안 결함이 발견되면 어떻게 될까요? ?
GiggleSquid

5
Red Hat : 보안 취약점이 발견되면 잠재적 인 보안 위험을 제한하기 위해 영향을받는 소프트웨어를 업데이트해야합니다. 소프트웨어가 현재 지원되는 Red Hat Enterprise Linux 배포판 내의 패키지의 일부인 경우, Red Hat, Inc.는 가능한 빨리 취약점을 해결하는 업데이트 된 패키지를 출시하기 위해 노력하고 있습니다. ... (계속)
Andrew Henle

5
특정 보안 취약점에 대한 공지에는 종종 패치 (또는 문제를 해결하는 소스 코드)가 수반됩니다. 그런 다음이 패치는 Red Hat Enterprise Linux 패키지에 적용되고 Red Hat 품질 보증 팀이 테스트 한 후 정오표로 릴리스됩니다 . ... 당신이 수반하는 모든 것에 가입 할 계획입니까?
Andrew Henle

답변:


9

일반적으로 시스템 기본 패키지를 사용하려고 매우 노력합니다.

그러나 이것은 때때로 불가능합니다. 교육받은 선택을하려면 다음과 같은 질문에 답해야합니다.

  1. 배포판 패키지가 필요한 기능을 제공합니까? 그렇다면 다른 패키지를 검색 할 필요조차 없습니다 . 시스템 리포지토리에서 제공하는 패키지를 사용하십시오.
  2. 공식적인 지원이 필요하거나 특정 정책을 준수 했습니까? 그렇다면 비공식 저장소를 사용할 수 없습니다 . 이 경우 소프트웨어 프로젝트에 잘못된 배포를 사용하고있을 수 있습니다.
  3. 이전 질문에 대한 대답이 "아니오"인 경우 최신 소프트웨어 버전을 검색해야합니다. 필수 패키지 가있는 잘 알려진 저장소 가 있습니까? 그렇다면 사용하십시오.
  4. 평판이 좋은 특정 리포지토리가 없으면 업스트림 소프트웨어를 사용해야했습니다. 이 경우 일반 tar.gz (또는 이와 유사한 것) 대신 패키지 소프트웨어 (예 : RPM, DEB, ecc) 를 사용하기 위해 매우 열심히 노력 하십시오.

3
추가 할 수있는 또 다른 사항 : 단점. 당신 하는가 고용주는 (해당되는 경우)가 지원을 지불하고 특히, 당신이 회사의 시스템이 일을 거 알아? 무엇보다도 회사가 지원되는 배포를 사용하는 법적 이유 가있을 수 있으며 , 사용자 데이터를 보호해야하는 경우 회사를 롤업하면 책임 문제가 발생할 수 있습니다. 보안 수정 사항을 놓쳐서 지원되지 않는 홈 설치 패키지가 사용자 데이터를 유출하는 경우, 더 이상 Red Hat을 가리키고 "우리는 OS를 실행 중이며 최신 상태로 유지하기 위해 비용을 지불했습니다."라고 말할 수 없습니다.
Andrew Henle

6

Matthew Ife와 shodanshok의 답변은 일반적으로 문제를 다루고 있지만, 내가 관리하는 이러한 종류의 시스템이기 때문에 문제를 맥락에 두어 특정 문제를 해결하고 싶습니다.

PHP / MySQL 웹앱을 배포하기위한 현재 빌드는 다음과 같습니다.

먼저 왜 특정 배포 또는 패키지 세트를 선택하는지 생각해 봅시다. 최신 기능보다 안정성을 중시하거나 안정성보다 최신 기능을 중시합니다. 소프트웨어를 안정화하는 데 버그를 수정하는 데 시간이 걸리고 새로운 기능을 추가하면 버그가 생겨 불안정성이 발생하므로 일반적으로 동일한 배포판에 둘 다 가질 수는 없습니다.

일반적으로 응용 프로그램이 실행되는 운영 체제는 최대한 안정적이지만 현대적인 기능 세트를 원합니다. 따라서 지금은 다소 오래된 CentOS 6보다 CentOS 7을 선택하고 작동 하지만 지원 기간 이 오래 걸리지 않으므로 새 프로젝트에 사용하지 않습니다. .

그러나 CentOS에 포함 된 nginx 버전이 너무 오래되어 필요한 기능과 버그 수정이 없다는 문제가 발생했습니다 . 따라서 대체 패키지를 검색하여 nginx.org가 자체 패키지를 배포한다는 것을 알았습니다. 나는 거의 즉시 그들에게로 전환하여 장거리에 걸쳐 완벽하게 안정적인 것을 발견했습니다.

그렇다면 PHP가 있습니다. CentOS와 함께 제공되는 PHP 버전은 유일하게 얻을 수있는 유일한 버전이며 보안 업데이트 만받을 것입니다. 새로운 기능이나 버그 수정이 없습니다. 따라서 업스트림을 지원하지 않으면 패키지를 사용하면 최신 PHP 웹 응용 프로그램을 실행할 수 없게됩니다. 따라서 이것도 교체해야합니다.

오랜 경험에서 필자는 실행 한 웹 응용 프로그램도 업데이트되고 해당 버그 수정이 필요하므로 PHP를 사용하여 버그 수정 릴리스를 추적하는 것이 가장 좋은 방법이라는 것을 알게되었습니다. 그래서 많은 다른 PHP 패키지 세트를 평가 한 후, 나는 레미의 pacakges에 정착했다. Remi는 Red Hat 직원이되었으며 RHEL / CentOS의 PHP 패키지를 담당합니다. 그래서 나는 그의 패키지가 고품질이 될 것이라는 것을 알고 있습니다. 그것들은 시스템 패키지를 대체 할 수 있으며 완벽하게 작동합니다.

마지막으로 MariaDB에 도달합니다. 여기에 시스템 패키지를 유지하고 아무런 영향을받지 않도록 선택할 수 있습니다 . CentOS와 함께 제공되는 5.5 버전에서 제공되지 않는 TokuDB 및 기타 일부 성능 향상을 이용하기 위해 MariaDB의 10.0 패키지로 전환하기로 결정했습니다.


전반적으로 기본 시스템의 안정성이 필요하지만 웹 응용 프로그램은 LOB (Line of Business) 소프트웨어보다 훨씬 빠르게 변경되므로 서버를 유지해야합니다. 따라서 패키지를 업그레이드하면 추가 관리 오버 헤드 (일명)가 거의 없어 명확한 이점을 얻을 수있는 목표 지점을 선택했습니다.


5

짧은 대답은 항상 시스템 리포지토리에서 제공하는 것을 사용하는 것입니다. 어떤 리포지토리도 설치하는지 주의 하십시오 . 일부는 평범하지 않습니다.

최신 버전으로 시스템 패키지를 작성해서는 안되며 Redhat은 매우 신중하게 설계 및 조정되어 있으며 이상한 버그 나 문제가 발생할 수 있습니다.

고려해야 할 몇 가지 사항은 다음과 같습니다.

  1. 일부 리포지토리는 단순히 잘못 유지 관리됩니다. 패키지에 대한 보안 수정 사항으로 업데이트하지 않습니다.
  2. 사람들은 잘못된 RPM을 작성하는 경향이 있으며 구성 파일을 구성 파일로 표시하지 않으므로 업데이트 할 때마다 구성을 덮어 쓰므로 문제가 발생할 수 있습니다. 나는 전에이 문제를 보았다.
  3. 그들은 의존성을 제대로 선언하지 못합니다. php패키지가 시스템에 배치되었지만 pear문제를 일으킨 패키지를 업데이트하지 않은 이전에도 이것을 보았습니다 .
  4. 모두 동일한 패키지 이름을 제공하는 여러 저장소를 설치하면 시스템에 예기치 않은 종속성 문제가 발생할 수 있습니다.
  5. 일부 패키지는 다른 패키지가 의존하거나 존재하는 시스템 구성 파일을 덮어 쓰거나 다시 씁니다. 이로 인해 예상하지 못한 다른 패키지에 문제가 발생할 수 있습니다.

소스에서 패키지를 빌드 하지 말고 패키지 위에 설치하십시오. 이로 인해 시스템 패키지 무결성이 손상되어 수신 unresolved symbol또는 undefined reference메시지 와 같은 이상한 ABI 문제가 발생할 수 있습니다 . 시스템이 주어진 시스템에 어떤 소프트웨어가 배포되어 서로 올바르게 작동하는지 확인하기 위해 시스템이 안정적이고 정확한 색인을 유지하는 것이 매우 중요합니다. 이것이 처음에 RPM을 사용하는 이유입니다.

이 문제를 해결하는 데 유용한 실행 가능한 방법은 소프트웨어 모음을 사용하는 것입니다.

www.softwarecollections.org

자체 루트에 소프트웨어와 '새로운'종속성을 설치합니다. 이로 인해 환경에 패키지를 적용하기가 약간 어려워 지지만 시스템이 이상한 오류나 문제로부터 보호됩니다. 또한 자체 네임 스페이스에 패키지를 설치하여 여러 버전의 패키지를 병렬로 설치할 수 있습니다.

이 웹 사이트는 이러한 패키지를 설치하고 활성화하는 방법에 대한 지침을 제공하며, 이전 버전의 CentOS 및 Redhat (특히 EL6)에서 누락 된 내용이 대부분 포함되어 있습니다. 내가이 웹 사이트에서 성공적으로 사용한 것들.

  • MySQL 5.6 및 MySQL 5.7, MariaDB.
  • PHP 5.5 및 PHP 5.6
  • 아파치 2.4

이 문제에 대한 기본 위치는 Redhat 리포지토리가 추진하는 내용과 조정되어서는 안됩니다. 대신 패키지의 업데이트 된 버전이 필요한지, 특히 특정 요구 사항, 수정해야하는 문제 및 도입되는 위험에 대해 평가하십시오.

일반적으로 지속적으로 업데이트 된 소프트웨어가 필요하거나 작업을 수행하기 위해 동일한 패키지의 여러 병렬 버전이 필요한 경우 일반적으로 문제가 있음을 나타냅니다.


1
패키저가 자신이하는 일을 알고 있으면 사용자 응용 프로그램과 같은 일부 시스템 패키지를 안전하게 최신 버전으로 교체 할 수 있습니다 . 그러나 이런 방식으로 라이브러리 를 업그레이드하는 것은 안전 하지 않습니다 . 그렇게하려고하면 언급 한 ABI 오류가 발생합니다. 안타깝게도 안전하게 업그레이드 할 수있는 방법과이를 수행하는 방법에 대한 지식은 패키저 사이에서 일반적이지 않은 것 같습니다. Red Hat조차도 때때로이 잘못을 받았습니다 . OTOH, 소프트웨어 콜렉션은 엉덩이에 사용하기에 왕성한 고통입니다.
Michael Hampton

1
nginx그런 '하나의 모든'패키지 중 하나입니다. 그러나 특히 httpd(libapr 종속성) 및 mysql(libmysqlclient 종속성)은 그렇지 않습니다. 이러한 패키지 모두의 나쁜 업데이트에서 오류가 발생했습니다 pythonphp과거에 나를 위해입니다. 여기서 문제는 무엇을 찾아야하는지 알지 못하는 한 패키지가 다른 패키지와 어떻게 상호 작용하는지 아는 것은 간단하지 않습니다.
Matthew Ife

2
이전 버전의 시스템에 링크 된 프로그램이 계속 작동 할 수 있도록 호환성 라이브러리를 제공하므로 실제 문제없이 MariaDB와 같은 것을 업그레이드 할 수 있습니다. 패키지를 설치해야한다는 사실 만 기억하면됩니다 (그렇지 않으면 yum이 불평해야합니다). PHP는 의존성이 많기 때문에 더 복잡합니다. 패키저가 이것을하지 않으면 패키지가 쓸모없는 것보다 나쁩니다. 다행스럽게도 remi는 RHEL의 PHP 관리자이기 때문에 모든 것이 무엇인지 알고 있으며 패키지는 훌륭했습니다.
Michael Hampton
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.