Як встановити GCC 5 на debian jessie 8.1


21

Я спробував багато рішень для встановлення оновлення для мого компілятора gcc на сервері debian. Жоден з них не працював. Мені потрібно оновлення компілятора, щоб використовувати нові функції c ++ 11, оскільки це забезпечує стабільну ABI libcxx11 та стабільну підтримку C ++ 11 (див. Тут ). Зокрема отримання версії `GLIBCXX_3.4.21 ', яка не входить до мого поточного компілятора gcc версії 4.9.2 (Debian 4.9.2-10).

Деякі вказівки на рішення будуть корисні. Заздалегідь спасибі.

Деякі посилання на форум, пов'язані з моєю проблемою, яку я вже спробував:

1 2 3 (не повністю пов'язане рішення призначене для ubuntu, але я не зміг знайти gcc-5 на ftp сервері debian)


Це передбачено в Debian / тестуванні, і, як бачите, включає зміни в бібліотеках виконання. Хтось може порадити вам, як це зробити як пакет Debian, але ефект буде мало відрізнятися від переходу на конфігурацію тестування через велику кількість пакунків, на які впливає вплив.
Томас Дікі

Навіщо саме вам потрібна нова підтримка ABI ? Ви можете створити більшість кодів C ++ 11 за допомогою gcc 4.9.2 Debian 8, вам просто потрібно буде перекомпілювати його, коли виходить Debian 9. Якщо ви не можете чекати, найпростішим рішенням буде перейти на testing, але це, мабуть, не дуже гарна ідея на сервері (залежно від того, що ви розумієте під сервером, звичайно). Перехід з gcc 4.9 на gcc 5 передбачав бібліотечний перехід, тож ви відчуваєте біль, якщо спробуєте зробити це самостійно!
Стівен Кітт

Я погоджуюся з тим, що кажуть томас і Стівен, за винятком того, що я набагато менше переживаю ідею використання тестування на сервері. Не всі сервери потребують довгострокової однаковості бінарних файлів і бібліотек (що означає "стабільний" в контексті Debian), для деяких серверів тестування тестування або навіть нестабільність є більш корисним (якщо, скажімо, потрібні особливості кровотоку або просто тримати попереду сценарії дітлахів). Однак для запуску тестування / нестабільності на виробничих серверах потрібна велика кількість навичок і знань про Debian, щоб виправити випадкові поломки. Спершу тестуйте оновлення на інших машинах або VM.
cas

@cas Я не думав про стабільність бінарних файлів, а про два основних недоліки testing(використовуються самостійно): пакунки іноді тимчасово видаляються (тож установка, яку ви тільки що підтвердили у своєму тестовому вікні, може більше не бути доступною) , і виправлення безпеки можуть бути відкладені (іноді на тривалий час, якщо testingвідбувається великий перехід до бібліотеки, хоча testing-securityдля таких випадків є).
Стівен Кітт

1
Якщо ви перекомпілюєте свою програму в системі Debian (замість того, щоб копіювати її), вона повинна спрацювати нормально.
Стівен Кітт

Відповіді:


13

Мені потрібен GCC 5+, встановлений на debian jessie, і, як це доступно для тестування debian (принаймні, на червень-16), ви можете використовувати apt-pinning для встановлення доступних там пакетів (див. Https://wiki.debian.org/AptPreferences ) .

Щоб встановити GCC 5+ з тестування на debian jessie за допомогою apt-pinning:

  1. Додайте тестування репонів debian до своїх підходящих джерел, створивши файл у каталогу, /etc/apt/sources.list.dщо містить рядок

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

  2. Інструкція debian використовувати джерела тестування для певних пакетів, створивши файл, /etc/apt/preferences.dщо містить наступне:

    Package: *
    Pin: release a=testing
    Pin-Priority: 100
    
  3. Оновлення бази даних apt: sudo apt-get update

  4. Встановіть gcc з тестування: sudo apt-get install -t testing gcc

    Зауважте, що за допомогою -t testingви скажете apt-get для встановлення gcc з джерел тестування, як було налаштовано раніше.

Я настійно пропоную очистити будь-яку компіляцію та перекомпілювати будь-яку залежність, перш ніж знову зібрати джерела.

Веселіться!


1
Я ніколи цього не пробував (і не хочу спробувати), але ваша процедура цікава. Не багато програмних пакетів настільки тісно пов'язані з усією системою Debian, як і GCC. Чи справді працює ваша процедура? Або це викликає більше проблем, ніж вирішує? Цікавий.
вт

1
Я насправді спробував це з хорошими результатами: я міг успішно скласти те, що будував, і система продовжувала працювати без проблем. Тим не менш, ви можете мати рацію: зміна версії GCC може порушити компіляцію інших пакетів (тобто компіляція джерел при встановленні пакетів з pip) , але я думаю, що ця процедура є найменш інвазивною, оскільки aptслідкуйте, які пакунки залежать від GCC, і встановлюватимуть сумісні версії за потребою (наскільки я пам'ятаю).
llekn

2
Примітка для кроку 2: Файл у /etc/apt/preferences.d/ або не повинен містити крапки ". у назві файлу або закінчується ".pref". В іншому випадку цей файл ігнорується. Пояснення значення 100 і чому було обрано його було б вдячним.
Людвіг Шульце

Як я розумію, чим більше Pin-Priorityпакет отримує, тим більше переваг він буде мати над іншими пакетами з меншою кількістю. Отже, як і в стані сторінки AptPrefences Debian , testingза замовчуванням Pin-Priority: 900всі пакунки testingвстановлюються за замовчуванням. Таким чином, визначаючи , що testingматиме Pin-Priority: 100Фордуна testingпакети пріоритет робить їх Встановлювані тільки якщо потрібно при вказівці мети наapt-get install -t testing ...
llekn

1
@ LeeK-B Дійсно, використовуючи Package: gccоновлення всієї системи до тестування. Документація про apt-prefencesплутанину, тому я припускаю, що ось що відбувається: 1: Оскільки пакети тестування мають більші версії, вони за замовчуванням мають перевагу перед стандартними 2: Вказівка ​​пакета: gccпри цьому Pin-priority: 100всі пакунки з тестування мають пріоритет за замовчуванням (вище, ніж стандартні) за винятком gcc. Точно навпаки, чого ми хотіли. Я оновив відповідь, щоб уникнути цієї помилки
llekn

6

Щоб поєднати 2 попередні відповіді в одну, яка працює:

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, щоб ви не псували вашу ОС. Ваш пробіг може відрізнятися.


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.dвідповідно до відповіді llekn.


1

У мене були проблеми минулого тижня; Схоже, станом на 2019-01-23 gcc-5 видалено зі сховищ повністю. (Див. Https://tracker.debian.org/pkg/gcc-5 )

Якщо він вам справді потрібен, я думаю, ви могли б скласти це з джерела. Я збираюся знайти спосіб скинути залежність від моєї системи.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.