데비안 제시 8.1에 GCC (5)를 설치하는 방법


21

데비안 서버에 gcc 컴파일러 업데이트를 설치하기 위해 많은 솔루션을 시도했습니다. 그들 중 누구도 일하지 않았습니다. c ++ 11의 새로운 기능을 사용하려면 컴파일러 업데이트가 필요합니다. 이는 안정적인 libcxx11 ABI 및 C ++ 11에 대한 안정적인 지원을 제공합니다 ( 여기 참조 ). 특히 현재 컴파일러 gcc 버전 4.9.2 (Debian 4.9.2-10)에 포함되지 않은 버전`GLIBCXX_3.4.21 '을 얻습니다.

해결책에 대한 몇 가지 조언이 도움이 될 것입니다. 미리 감사드립니다.

이미 시도한 내 문제와 관련된 포럼에 대한 링크 :

1 2 3 (전적으로 관련된 솔루션은 우분투를위한 것이 아니지만 아직 데비안의 ftp 서버에서 gcc-5를 찾을 수 없습니다)


데비안 / 테스트에서 제공되며 런타임 라이브러리에 대한 변경이 포함됩니다. 누군가 데비안 패키지로이 작업을 수행하는 방법을 알려줄 수도 있지만, 영향을받는 패키지가 많기 때문에 테스트 구성으로 전환하는 것과 그 효과는 거의 다릅니다.
토마스 당나귀

새로운 ABI 지원이 필요한 이유는 무엇 입니까? 데비안 8의 gcc 4.9.2로 대부분의 C ++ 11 코드를 빌드 할 수 있습니다. 데비안 9가 출시 될 때 다시 컴파일하면됩니다. 기다릴 수 없다면 가장 쉬운 해결책은로 전환하는 testing것이지만 서버에 대한 의미는 아닙니다 (물론 서버의 의미에 따라 다름). gcc 4.9에서 gcc 5 로의 전환에는 라이브러리 전환이 포함되어 있으므로 직접 시도하면 고통의 세계에 빠져 있습니다!
Stephen Kitt

나는 서버에서 테스트를 사용한다는 생각에 대해 덜 걱정하는 것을 제외하고 Thomas와 stephen의 말에 동의합니다. 테스트를 추적하거나 불안정한 서버가 더 유용 할 경우 (데비안 에지 기능이 필요한 경우 또는 단지 ) 스크립트 키디의 전방을 유지합니다. 그러나 프로덕션 서버에서 테스트 / 불안정한 실행 은 가끔 파손을 해결하기 위해 데비안에 대한 많은 기술과 지식이 필요 합니다. 먼저 다른 머신 또는 가상 머신에 테스트 업그레이드.
CAS

@cas 바이너리의 안정성을 생각하지는 않았지만 두 가지 주요 단점 testing(자체적으로 사용) : 패키지가 일시적으로 제거되므로 테스트 VM에서 방금 확인한 설정을 더 이상 쉽게 사용할 수 없습니다. 보안 수정이 지연 될 수 있습니다 (경우에 testing따라 큰 라이브러리 전환이 진행되는 경우 때때로 testing-security).
Stephen Kitt

1
데비안 시스템에서 프로그램을 다시 컴파일하면 (복사하는 대신) 정상적으로 작동합니다.
Stephen Kitt

답변:


13

데비안 제시에 GCC 5+가 설치되어 있어야하고 데비안 테스트 (최소 6 월 16 일)에 사용할 수있는 것처럼 apt-pinning을 사용하여 패키지를 설치할 수 있습니다 ( https://wiki.debian.org/AptPreferences 참조 ) .

apt-pinning을 사용하여 debian jessie에서 GCC 5 이상을 테스트하려면 :

  1. /etc/apt/sources.list.d라인을 포함하는 디렉토리에 파일을 작성하여 apt 소스에 데비안 테스트 저장소를 추가하십시오.

    deb http://ftp.us.debian.org/debian testing main contrib non-free

  2. /etc/apt/preferences.d다음 을 포함 하는 파일을 작성하여 특정 패키지에서 테스트 소스를 사용하도록 debian에 지시 하십시오.

    Package: *
    Pin: release a=testing
    Pin-Priority: 100
    
  3. 적절한 데이터베이스 업데이트 : sudo apt-get update

  4. 테스트에서 gcc를 설치하십시오. sudo apt-get install -t testing gcc

    사용합니다 -t testing당신이 말 이전에 구성된 소스를 테스트에서 GCC를 설치 apt-get을.

소스를 다시 컴파일하기 전에 컴파일을 정리하고 종속성을 다시 컴파일하는 것이 좋습니다.

즐기세요!


1
나는 이것을 시도한 적이 없으며 (도 시도하고 싶지는 않지만) 당신의 절차는 흥미 롭습니다. GCC만큼 데비안 시스템 전체와 밀접한 관련이있는 소프트웨어 제품군은 많지 않습니다. 절차가 실제로 작동합니까? 아니면 해결하는 것보다 더 많은 문제가 발생합니까? 이상한.
thb

1
GCC의 버전을 변경하면 다른 패키지를 컴파일 (와 패키지를 설치할 때 즉, 소스를 컴파일 깨질 수 있습니다 : 나는 성공적으로 내가 구축 있었는지 컴파일 할 수있는 시스템이 바로 될 수없는 problems.Nevertheless와 함께 작업을 계속 : 사실은 좋은 결과와 함께 그것을 시도 pip) 그러나 aptGCC에 의존하는 패키지를 추적하고 필요에 따라 호환 가능한 버전을 설치 하기 때문에이 절차는 가장 침습적이라고 생각합니다 (기억할 수있는 한).
llekn

2
2 단계 참고 사항 : /etc/apt/preferences.d/의 파일에는 점 "."이 포함되지 않아야합니다. 파일 이름 또는 ".pref"로 끝납니다. 그렇지 않으면이 파일은 무시됩니다. 가치 100의 의미와 그것이 선택된 이유에 대한 설명을 부탁드립니다.
루트비히 슐츠

내가 알다시피 Pin-Priority, 패키지가 많을수록 더 적은 수의 다른 패키지보다 선호도가 높아집니다. 따라서 Debian의 AptPrefences 페이지 상태에서 testing와 같이 기본적 Pin-Priority: 900으로 모든 패키지 testing가 기본적으로 설치됩니다. 그래서, 그 지정 testingPin-Priority: 100이 저하하는 것은 testing에서 대상을 지정할 때 요청이있는 경우 그들 만 설치 가능한 만들고 우선 순위를 패키지apt-get install -t testing ...
llekn

1
@ LeeK-B 실제로, Package: gcc전체 시스템을 사용하여 테스트로 업그레이드합니다. 에 대해이 문서 apt-prefences내가이 생각 때문에 혼란이 일어나고있는 것입니다 : 1 : 테스트에서 패키지가 기본적으로 더 큰 버전을 가지고 그들이 표준 사람이 우선이 : 지정 패키지를 : gccPin-priority: 100만든다 테스트에서 모든 패키지가 기본 우선 순위를 가지고 (이상 제외) gcc. 정확히 우리가 원하는 반대입니다. 이 실수를 피하기 위해 답변을 업데이트했습니다
llekn

6

두 개의 이전 답변을 작동하는 답변으로 결합하려면 다음을 수행하십시오.

echo "deb http://ftp.us.debian.org/debian unstable main contrib non-free" >> /etc/apt/sources.list.d/unstable.list
apt-get update
apt-get install -t unstable gcc-5

그러나!!! 불안정한 패키지를 설치할 때이 위험을 감수하십시오. /etc/apt/sources.list.d/unstable.list패키지를 설치 한 후에 제거 할 수도 있습니다 .

가능하면 Docker 아래에 설치하여 OS를 손상시키지 마십시오. 귀하의 마일리지가 다를 수 있습니다.


4

2017-02-19 현재 gcc-5는 테스트 에서 제거 되었습니다 .

https://tracker.debian.org/pkg/gcc-5

apt-get install gcc-5이 줄을 루트로 처음 실행하면 다음과 같이 할 수 있습니다 .

echo "deb http://ftp.us.debian.org/debian unstable main contrib non-free" > /etc/apt/sources.list.d/unstable.list

그런 다음 /etc/apt/preferences.dllekn의 답변 에 따라 해당 소스의 우선 순위를 변경하고 싶을 것입니다 .


1

지난 주에 문제가있었습니다. 2019-01-23 현재 gcc-5가 저장소에서 완전히 제거 된 것처럼 보입니다. ( https://tracker.debian.org/pkg/gcc-5 참조 )

정말로 필요한 경우 소스에서 컴파일 할 수 있다고 가정합니다. 시스템에서 종속성을 제거하는 방법을 찾겠습니다.

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