GCC 5'i debian jessie 8.1'e nasıl yükleyebilirim?


21

Gcc derleyicimin güncelleştirmesini debian sunucusunda yüklemek için birçok çözüm denedim. Hiçbiri işe yaramadı. C ++ 11'in yeni özelliklerini kullanmak için derleyici güncellemesine ihtiyacım var, çünkü bu kararlı bir libcxx11 ABI ve kararlı bir C ++ 11 desteği sağlıyor ( buraya bakın ). Özellikle şu anki derleyici gcc sürüm 4.9.2'ye dahil olmayan 'GLIBCXX_3.4.21' versiyonunu edinmek (Debian 4.9.2-10).

Çözüm için bazı işaretçiler yardımcı olacaktır. Şimdiden teşekkürler.

Zaten denediğim sorunumla ilgili foruma bazı bağlantılar:

1 2 3 (tamamen ilgili olmayan çözüm ubuntu içindir, ancak henüz debian'ın ftp sunucusunda gcc-5'i bulamadım)


Bu, Debian / test'te sağlanmıştır ve gördüğünüz gibi, çalışma zamanı kitaplıklarındaki değişiklikleri içerir. Birisi size bunu bir Debian paketi olarak nasıl yapacağınızı önerebilir, ancak etkilenen çok sayıda paket nedeniyle test konfigürasyonuna geçmenin etkisi çok az olacaktır.
Thomas Dickey

Yeni ABI desteğine neden özellikle ihtiyacınız var ? Çoğu C ++ 11 kodunu Debian 8's gcc 4.9.2 ile oluşturabilirsiniz, yalnızca Debian 9 piyasaya sürüldüğünde yeniden derlemeniz gerekir. Bekleyemezseniz, en kolay çözüm geçmek olacaktır testing, ancak bu muhtemelen sunucuda iyi bir fikir değildir (elbette sunucuyla ne kastınıza bağlı olarak). Gcc 4.9'dan gcc 5'e geçiş, bir kütüphane geçişi içeriyordu, bu yüzden kendiniz yapmaya çalışırsanız, acı dolu bir dünyaya geldiniz!
Stephen Kitt

Thomas ve Stephen'ın ne dediği ile aynı fikirdeyim, ancak bir sunucu üzerinde test etme fikri konusunda daha az endişeliyim. Tüm sunucular, uzun süreli ikili ve kitaplık benzerliği gerektirmez (bu, debian bağlamında "kararlı" anlamına gelir); senaryo çocuklarının önünde tutmak için). Ancak, üretim sunucularında test / kararsız çalıştırma işlemi , zaman zaman kırılmayı gidermek için Debian hakkında çok fazla beceri ve bilgi gerektirir . İlk önce diğer makineler veya VM'lerde yükseltmeleri test edin.
cas

@cas İkiliklerin kararlılığını düşünmüyordum, bunun yerine iki ana dezavantajı testing(kendi başına kullanıldı): paketler bazen geçici olarak kaldırılıyor (bu nedenle test VM’nizde henüz doğrulanmış olan ayarlar artık kolayca kullanılamayabilir) ve güvenlik düzeltmeleri ertelenebilir (bazen bu tür durumlar için testingolmasına rağmen büyük bir kütüphane geçişinden geçiyorsa uzun süre testing-security).
Stephen Kitt

1
Programınızı Debian sisteminde yeniden derlerseniz (kopyalamak yerine) iyi çalışması gerekir.
Stephen Kitt

Yanıtlar:


13

Debian jessie'ye kurulu GCC 5+ 'e ihtiyacım vardı ve debian testi için mümkün olduğu gibi (en azından 16 Haziran’da), orada mevcut paketleri kurmak için apt-pinning kullanabilirsiniz (bkz. Https://wiki.debian.org/AptPreferences ). .

GCC 5+ 'i apt-pinning ile debian jessie üzerinde test etmek için:

  1. /etc/apt/sources.list.dSatırı içeren dizinde bir dosya oluşturarak apt kaynaklarınıza debian test reposu ekleyin

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

  2. /etc/apt/preferences.dAşağıdakileri içeren bir dosya oluşturarak debian'a belirli kaynakları test kaynaklarını kullanma talimatı verin :

    Package: *
    Pin: release a=testing
    Pin-Priority: 100
    
  3. Apt veritabanını güncelle: sudo apt-get update

  4. Testten gcc'yi kurun: sudo apt-get install -t testing gcc

    -t testingSize daha önce yapılandırıldığı gibi test kaynaklarından gcc'yi yüklemek için apt-get komutunu kullandığınızı unutmayın .

Kaynaklarınızı tekrar derlemeden önce derlemeleri temizlemenizi ve bağımlılıkları yeniden derlemenizi şiddetle tavsiye ederim.

İyi eğlenceler!


1
Bunu hiç denemedim (denemek istemiyorum), ancak işleminiz ilginç. Çok sayıda yazılım paketi, tüm Debian sistemi ile GCC kadar sıkı sıkıya bağlı değildir ve dokunmamaktadır. İşleminiz gerçekten işe yarıyor mu? Yoksa çözdüğünden daha fazla soruna mı neden oluyor? Meraklı.
thb

1
Aslında iyi sonuçlar almayı denedim: Yaptığım şeyi başarılı bir şekilde derleyebildim ve sistem sorunsuz bir şekilde çalışmaya devam etti. Yine de haklı olabilirsin: GCC sürümünü değiştirmek diğer paketleri derlemeyi bozabilir (yani paketleri kurarken kaynakları derlemek gibi pip) , ancak bu prosedürün en az invaziv olduğunu düşünüyorum çünkü apthangi paketlerin GCC'ye bağlı olduğunu takip eder ve uyumlu sürümleri gerektiği kadar yükler (hatırlayabildiğim kadarıyla).
llekn

2
2. adım için not: /etc/apt/preferences.d/ içindeki dosya ya bir "" içermemelidir. dosya adına veya ".pref" ile bitirin. Aksi takdirde, bu dosya yoksayılır. Değer 100'ün anlamı ve neden seçildiğinin bir açıklaması takdir edilecektir.
Ludwig Schulze

Anladığım kadarıyla Pin-Prioritybir paket ne kadar çok alırsa, o kadar az sayıda diğer paketlere göre o kadar çok tercih alır. Bu nedenle, Debian'ın AptPrefences sayfasındaki gibi , testingvarsayılan olarak Pin-Priority: 900tüm paketleri testingvarsayılan olarak yüklenmesini sağlar. Yani, belirten testingbir olacak Pin-Priority: 100alçaltır testingde hedef belirtirken isteniyorsa onları sadece kurulabilir hale öncelik paketlerapt-get install -t testing ...
llekn

1
@ LeeK-B Gerçekten, Package: gcctüm sistemi test etmek için yükseltmeleri kullanarak . Hakkında belgeler apt-prefencesbu varsayalım böylece kafa karıştırıcı olup bitenler: 1: testlerinden paketleri varsayılan olarak, daha büyük sürümleri gibi onlar standart olanlardan 2 önceliklidir vardır: Belirtme Paketi: gccile Pin-priority: 100markaların test gelen tüm paketler varsayılan önceliği olması (daha yüksek standart) hariç gcc. Tam istediğimiz tersi. Bu hatayı önlemek için cevabı güncelledim
llekn

6

Önceki 2 cevabı çalışan cevaplarla birleştirmek için:

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

FAKAT!!! Bunu, dengesiz paketler yüklerken kendi sorumluluğunuzdadır kullanın. /etc/apt/sources.list.d/unstable.listPaketleri yükledikten sonra kaldırmak da isteyebilirsiniz .

Mümkünse, İşletim Sisteminizi karıştırmamak için Docker'ın altına yükleyin. Kilometreniz değişebilir.


4

2017-02-19 itibariyle, gcc-5 testten çıkarıldı :

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

Sen edebilirsiniz apt-get install gcc-5öncelikle root olarak bu satırını çalıştırmak:

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

O zaman, muhtemelen bu kaynağın önceliğini /etc/apt/preferences.dllekn'in cevabına göre değiştirmek isteyeceksiniz.


1

Geçen hafta problemlerim vardı; 2019-01-23 itibariyle gcc-5 depolardan tamamen kaldırılmıştır. (Bkz. Https://tracker.debian.org/pkg/gcc-5 )

Gerçekten ihtiyacın olursa sanırım kaynaktan derleyebilirsin. Bağımlılığı sistemimden düşürmenin bir yolunu bulacağım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.