डेबियन जेसी 8.1 पर जीसीसी 5 कैसे स्थापित करें


21

मैंने डेबियन सर्वर पर अपने gcc संकलक के लिए अद्यतन स्थापित करने के लिए कई समाधानों की कोशिश की। उनमें से किसी ने भी काम नहीं किया। मुझे c ++ 11 की नई विशेषताओं का उपयोग करने के लिए कंपाइलर अपडेट की आवश्यकता है, क्योंकि यह एक स्थिर libcxx11 ABI प्रदान करता है, और C ++ 11 के लिए स्थिर समर्थन ( यहां देखें )। विशेष रूप से संस्करण `GLIBCXX_3.4.21 'प्राप्त करना जो कि मेरे वर्तमान संकलक gcc संस्करण 4.9.2 (डेबियन 4.9.2-10) में शामिल नहीं है।

समाधान के लिए कुछ संकेत सहायक होंगे। अग्रिम में धन्यवाद।

मेरी समस्या से संबंधित फोरम के कुछ लिंक जो मैंने पहले ही आजमा लिए थे:

1 2 3 (पूरी तरह से संबंधित समाधान ubuntu के लिए नहीं है, लेकिन मैं डेबियन के ftp सर्वर में gcc-5 नहीं पा सका)


यह डेबियन / परीक्षण में प्रदान किया गया है, और जैसा कि आप देख रहे हैं, रनटाइम पुस्तकालयों में परिवर्तन शामिल हैं। कोई आपको सलाह दे सकता है कि इसे डेबियन पैकेज के रूप में कैसे किया जाए, लेकिन प्रभावित पैकेज की बड़ी संख्या के कारण प्रभाव परीक्षण कॉन्फ़िगरेशन पर स्विच करने से थोड़ा अलग होगा।
थॉमस डिकी

आपको विशेष रूप से नए ABI समर्थन की आवश्यकता क्यों है ? आप डेबियन 8 के जीसी 4.9.2 के साथ अधिकांश सी ++ 11 कोड का निर्माण कर सकते हैं, आपको केवल डेबियन 9 जारी होने पर इसे फिर से स्थापित करने की आवश्यकता होगी। यदि आप इंतजार नहीं कर सकते हैं, तो सबसे आसान समाधान स्विच करने के लिए होगा testing, लेकिन यह शायद एक सर्वर पर एक अच्छा विचार नहीं है (आप कोर्स के सर्वर से क्या मतलब है इसके आधार पर)। 5 gcc से स्विच करने के लिए gcc 5 में एक पुस्तकालय संक्रमण शामिल था, इसलिए यदि आप इसे स्वयं करने का प्रयास करते हैं तो आप दर्द की दुनिया में हैं!
स्टीफन किट

मैं सहमत हूं कि थोमस और स्टीफन क्या कहते हैं, सिवाय इसके कि मैं किसी सर्वर पर परीक्षण का उपयोग करने के विचार से बहुत कम चिंतित हूं। सभी सर्वरों को बायनेरीज़ और लाइब्रेरीज़ की लंबी अवधि की समता की आवश्यकता नहीं होती है (जो कि डेबियन संदर्भ में "स्थिर" का अर्थ है), कुछ सर्वरों के लिए जो परीक्षण पर नज़र रखते हैं या यहां तक ​​कि अस्थिर भी अधिक उपयोगी होते हैं (यदि, कहते हैं, रक्तस्राव-किनारे की विशेषताओं की आवश्यकता है, या बस स्क्रिप्ट किडिज़ के आगे रखने के लिए)। हालाँकि, प्रोडक्शन सर्वर पर रनिंग टेस्टिंग / अस्थिर होना , कभी-कभी टूटने को ठीक करने के लिए डेबियन के बारे में बहुत कौशल और ज्ञान की आवश्यकता होती है। पहले अन्य मशीनों या वीएम पर टेस्ट अपग्रेड।
कैस

@ कैस मैं बायनेरिज़ की स्थिरता के बारे में नहीं सोच रहा था, बल्कि इसके दो मुख्य नुकसान testing(अपने दम पर इस्तेमाल किए गए): पैकेज कभी-कभी अस्थायी रूप से हटा दिए जाते हैं (इसलिए आपके द्वारा अपने वीएम में सेट किए गए सेटअप वीएम अब आसानी से उपलब्ध नहीं हो सकते हैं) , और सुरक्षा सुधारों में देरी हो सकती है (कभी-कभी लंबे समय तक अगर testingएक बड़े पुस्तकालय संक्रमण के दौर से गुजर रहा है, हालांकि testing-securityऐसे मामलों के लिए है)।
स्टीफन किट

1
यदि आप डेबियन सिस्टम पर अपने प्रोग्राम को फिर से जोड़ते हैं (इसे कॉपी करने के बजाय) तो यह ठीक काम करना चाहिए।
स्टीफन किट

जवाबों:


13

मुझे डेबियन जेसी पर स्थापित जीसीसी ५+ की आवश्यकता थी और जैसा कि डेबियन परीक्षण के लिए उपलब्ध है (कम से कम जून -१६ पर) आप वहां उपलब्ध पैकेजों को स्थापित करने के लिए उपयुक्त-पिनिंग का उपयोग कर सकते हैं (देखें https://wiki.debian.org/Aptepreferences ) ।

एप्टी-पिनिंग का उपयोग करके डेबियन जेसी पर परीक्षण से जीसीसी 5+ स्थापित करने के लिए:

  1. /etc/apt/sources.list.dलाइन में निर्देशिका में एक फ़ाइल बनाकर अपने उपयुक्त स्रोतों में डेबियन परीक्षण रेपो जोड़ें

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

  2. /etc/apt/preferences.dनिम्नलिखित में एक फ़ाइल बनाकर कुछ पैकेजों पर परीक्षण स्रोतों का उपयोग करने के लिए डेबियन को निर्देश दें :

    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
मैंने कभी यह कोशिश नहीं की है (न ही मैं इसे आज़माना चाहता हूं), लेकिन आपकी प्रक्रिया दिलचस्प है। नहीं कई सॉफ्टवेयर सूट के रूप में कसकर बंधे हुए हैं, और के माध्यम से, पूरे डेबियन प्रणाली जीसीसी के रूप में बुना। क्या आपकी प्रक्रिया वास्तव में काम करती है? या क्या यह हल करने की तुलना में अधिक समस्याएं पैदा करता है? जिज्ञासु।
thb

1
मैंने वास्तव में इसे अच्छे परिणामों के साथ आज़माया: मैं सफलतापूर्वक निर्माण कर रहा था कि मैं क्या संकलित कर सकता हूं और सिस्टम बिना किसी समस्या के काम करता रहा। फिर भी आप सही हो सकते हैं: जीसीसी संस्करण बदलने से अन्य पैकेजों को संकलित किया जा सकता है (यानी संकुल स्थापित करते समय स्रोतों को संकलित करना pip) , लेकिन मुझे लगता है कि यह प्रक्रिया कम से कम आक्रामक है क्योंकि aptकौन सा पैकेज जीसीसी पर निर्भर करता है और आवश्यकतानुसार संगत संस्करण स्थापित करेगा (जहां तक ​​मुझे याद है)।
लेलकन

2
चरण 2 के लिए ध्यान दें: /etc/apt/preferences.d/ में फ़ाइल में या तो डॉट नहीं होना चाहिए "।" फ़ाइल नाम में, या ".pref" में समाप्त होता है। अन्यथा, इस फ़ाइल को अनदेखा कर दिया जाता है। मूल्य 100 के अर्थ की व्याख्या और इसे क्यों चुना गया इसकी सराहना की जाएगी।
लुडविग शुल्ज़

जैसा कि मैं समझता हूं, जितना अधिक Pin-Priorityपैकेज मिलता है, उतनी अधिक वरीयता अन्य कम पैकेज के साथ अन्य पैकेजों पर मिलेगी। इसलिए, जैसा कि डेबियन के AptPrefences पेज में बताया गया है, testingडिफ़ॉल्ट रूप Pin-Priority: 900से सभी पैकेजों को testingडिफ़ॉल्ट रूप से स्थापित किया जाना है। तो, निर्दिष्ट करने कि testingएक होगा Pin-Priority: 100कम हो testingप्राथमिकता पैकेज बनाने के लिए उन्हें केवल तभी इंस्टॉल अगर जब में लक्ष्य को निर्दिष्ट अनुरोध कियाapt-get install -t testing ...
llekn

1
@ ली-बी दरअसल, 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पैकेजों को स्थापित करने के बाद भी हटाना चाहते हैं।

यदि संभव हो तो, डॉकर के नीचे स्थापित करें ताकि आप अपने ओएस को गड़बड़ न करें। आपकी माइलेज भिन्न हो सकती है।


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लेलेकन के उत्तर के अनुसार उस स्रोत की प्राथमिकता को बदलना चाहेंगे।


1

मुझे पिछले हफ्ते समस्या हो रही थी; ऐसा लग रहा है कि 2019-01-23 gcc-5 को पूरी तरह से रिपॉजिटरी से हटा दिया गया है। (देखें https://tracker.debian.org/pkg/gcc-5 )

यदि आपको वास्तव में इसकी आवश्यकता है तो मुझे लगता है कि आप इसे स्रोत से संकलित कर सकते हैं। मैं अपने सिस्टम से निर्भरता छोड़ने का एक तरीका खोजने जा रहा हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.