ติดตั้ง gcc ล่าสุดบน rhel 6 x86_64


13

ฉันมีเซิร์ฟเวอร์ RHEL 6 พร้อม gcc รุ่น 4.4.7 ฉันต้องการอัปเดตเวอร์ชัน gcc (ฉันคิดว่ารุ่นปัจจุบันคือ 4.8) การอัปเดตยำไม่ทำงาน นอกจากนี้ดังนั้นคำตอบสำหรับคำถามที่คล้ายกันใน CentOSไม่ทำงาน ฉันปฏิบัติตามวิธีการในคำตอบที่ยอมรับผลลัพธ์คือ "ข้อผิดพลาดในการรับข้อมูลที่เก็บสำหรับการทดสอบ -1.1-devtools-6 ไม่พบที่เก็บ" นอกจากนี้ฉันไม่แน่ใจว่าฉันควรทำตามวิธีการสำหรับ CentO หรือไม่

มีใครอัปเดต gcc ในเซิร์ฟเวอร์ RHEL 6 x86_64 หรือไม่


คุณลองติดตั้งจาก repo นี้หรือไม่? hop5.in/yum/el6/repoview/gcc.html นี่คือการสร้างไบนารีของ 4.8.2 คุณอาจต้องอยู่ที่ 6.4 CentOS เพื่อติดตั้งซึ่งอาจเป็นปัญหาของคุณ
slm

มีการติดตั้งตัวเลือกจากแหล่งที่มาหรือไม่?
mkc

ใช่ฉันสามารถติดตั้งจากแหล่งหากจำเป็น
rivu

คำถามที่ดี. ใครคือผู้โหวต? :(
Otheus

hop5.in ไม่ใช่ el6 repo ที่ถูกต้องอีกต่อไปแล้ว @slm
Otheus

คำตอบ:


4

วิธีที่ง่ายที่สุดคือการใช้ประโยชน์จากการสร้างแบบไบนารีที่จัดทำผ่านพื้นที่เก็บข้อมูล YUM ตัวเลือกหนึ่งดังกล่าวจะใช้ที่เก็บhop5.in โดยเฉพาะหน้านี้: GCC - คอมไพเลอร์ต่างๆ (C, C ++, วัตถุประสงค์-C, Java, ... ) พวกเขากำลังให้ 4.8.2 ซึ่งควรทำงานกับ CentOS 6.3 หรือ 6.4 คุณอาจต้องการทำการอัปเดตก่อนหน้านี้:

$ sudo yum update

ตัวเลือกอื่น ๆ คือการใช้ประโยชน์จากชุดเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์โดยเฉพาะรุ่นที่ให้มาโดย Scientific Linux

ทำตามคำแนะนำการติดตั้งโดยทั่วไปคุณจะทำ 2 ขั้นตอนต่อไปนี้:

เพิ่มที่เก็บ
$ sudo wget -O /etc/yum.repos.d/slc6-devtoolset.repo \
    http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo
$ wget -O /etc/yum.repos.d/slc5-devtoolset.repo \
    http://linuxsoft.cern.ch/cern/devtoolset/slc5-devtoolset.repo
ติดตั้ง devtoolset
$ sudo yum install devtoolset-2

อัปเดต # 1

ที่เก็บ hop5.in YUM ดูเหมือนจะถูกลบดังนั้นการขอความช่วยเหลือเพียงอย่างเดียวคือการใช้ประโยชน์จากวิธีการ devtoolset ที่เน้นด้านบน

ตัวอย่างเพิ่มเติมสำหรับการติดตั้งผ่านทาง devtoolset จะเน้นในเรื่องนี้ GitHub สรุปสาระสำคัญ: การติดตั้ง GCC 4.8 และ Linuxbrew บน CentOS 6


3
ฉันพยายามติดตั้ง rpm ที่ดาวน์โหลดมาจากลิงค์แรกกล่าวว่า "ข้อผิดพลาด: การอ้างอิงที่ล้มเหลว: cpp = 4.8.2-8.el6 เป็นสิ่งจำเป็นโดย gcc-4.8.2-8.el6.x86_64 ... " สำหรับชุดเครื่องมือนักพัฒนาซอฟต์แวร์จะระบุว่า " people.centos.org/tru/devtools-1.1/6Server/x86_64/RPMS/repodata/… : [Errno 14] PYCURL ข้อผิดพลาด 22 -" URL ที่ร้องขอส่งคืนข้อผิดพลาด: 404 ไม่พบ " ผมคิดว่าปัญหาคือมันเป็น 6Server แทน 6 ในการเชื่อมโยงผมไม่ทราบวิธีการที่จะแก้ไขปัญหาที่..
rivu

hop.in ไม่มีสิ่งที่ฉันคิดว่าคุณคิดว่ามันมีอีกต่อไป
Otheus

1
ขั้นตอนเพิ่มเติมอาจจำเป็น: http://ftp.scientificlinux.org/linux/scientific/5x/x86_64/RPM-GPG-KEYs/RPM-GPG-KEY-cernดาวน์โหลดและนำเข้าที่สำคัญจากเซิร์น ฉันชอบที่ไซต์ไม่มี https วิธีที่จะไป scilinux หลังจากที่คุณดาวน์โหลดได้ (directory tmp หรือ whever) นำเข้ามันด้วยrpm --import RPM-GPG-KEY-cernและจากนั้นทำyum install.
Otheus

@Othus - ขอบคุณฉันเกลียดเมื่อ repos กัดฝุ่นเช่นนี้ทำลายกลุ่มของเนื้อหาใน interwebs 8-)
slm

1
มูลค่าการกล่าวขวัญว่าdevtoolset-2-gcc(สำหรับฉันอย่างน้อย) ติดตั้งแพคเกจโหลและการดาวน์โหลด 35 ล้านบาทเมื่อเทียบกับแพคเกจ 280 และ 575 MB yum install devtoolset-2สำหรับการดาวน์โหลด
miken32


2

ฉันได้สร้าง gcc เวอร์ชั่นใหม่กว่าสำหรับ rhel6 สำหรับหลาย ๆ รุ่นแล้ว (ตั้งแต่ 4.7.x ถึง 5.3.1)

กระบวนการนี้ค่อนข้างง่ายขอบคุณ Jakub Jelinek fedora gcc ที่สร้างขึ้นใน koji

เพียงหยิบ src rpm ล่าสุดสำหรับเวอร์ชั่นที่คุณต้องการ (เช่น5.3.1 )

โดยทั่วไปคุณจะเริ่มต้นด้วยการกำหนดความต้องการสร้างโดยออกข้อกำหนดrpm -qpR src.rpmสำหรับรุ่นใด ๆ :

rpm -qpR gcc-5.3.1-4.fc23.src.rpm | grep -E '= [[:digit:]]'
binutils >= 2.24
doxygen >= 1.7.1
elfutils-devel >= 0.147
elfutils-libelf-devel >= 0.147
gcc-gnat >= 3.1
glibc-devel >= 2.4.90-13
gmp-devel >= 4.1.2-8
isl = 0.14
isl-devel = 0.14
libgnat >= 3.1
libmpc-devel >= 0.8.1
mpfr-devel >= 2.2.1
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
systemtap-sdt-devel >= 1.3

ตอนนี้ส่วนที่น่าเบื่อมาแล้ว - แพคเกจใด ๆ ที่มีรุ่นสูงกว่าที่จัดหาโดยคุณต้องดาวน์โหลด distro จากโคจิและทำซ้ำกระบวนการซ้ำจนกว่าจะครบตามข้อกำหนดทั้งหมด

ฉันโกง btw
ฉันมักจะบรรจุใหม่รอบต่อนาทีเพื่อให้มีโครงสร้างการสร้างที่ถูกต้องโดยใช้สิ่งอำนวยความสะดวก gnu เพื่อใช้วางอย่างถูกต้องและความต้องการที่มีชื่อดังนั้น gmp / mpc / mpfr / isl (ไม่จำเป็นต้องมีการอุดตัน) อีกต่อไป (bloated) tar ถูกสร้างใหม่ใน src rpm ใหม่ (โดยมีการเปลี่ยนแปลงเล็กน้อยในไฟล์ spec) โดยไม่มีการพึ่งพาเวอร์ชันของแพ็คเกจ (rpm) เมื่อฉันรู้ว่าไม่มีใครใช้ ADA ฉันเพียงแค่ลบส่วนที่เกี่ยวข้องกับตัวริ้นออกจาก specfile ทำให้กระบวนการสร้างง่ายขึ้นทำให้ฉันเหลือเพียง binutils ที่ต้องกังวล
Gcc สามารถสร้างด้วย binutils รุ่นเก่าได้ดังนั้นหากคุณรีบแก้ไขเพิ่มเติม specfile เพื่อให้ต้องมี binutils เวอร์ชันที่มีอยู่ในระบบของคุณ สิ่งนี้จะส่งผลให้ gcc พิการเล็กน้อย แต่ส่วนใหญ่จะทำงานได้ดีพอ
มันใช้งานได้ค่อนข้างดี

อัพเดท 1

วิธีที่ง่ายที่สุดสำหรับการเปิด src rpm น่าจะเป็น yum ติดตั้ง rpm และเข้าถึงทุกอย่างภายใต้ ~ / rpmbuild แต่ฉันชอบ

mkdir gcc-5.3.1-4.fc23
cd gcc-5.3.1-4.fc23
rpm2cpio ../gcc-5.3.1-4.fc23.src.rpm | cpio -id
tar xf gcc-5.3.1-20160212.tar.bz2
cd gcc-5.3.1-20160212
contrib/download_prerequisites
cd ..
tar caf gcc-5.3.1-20160212.tar.bz2 gcc-5.3.1-20160212
rm -rf gcc-5.3.1-20160212
# remove gnat
sed -i '/%global build_ada 1/ s/1/0/' gcc.spec
sed -i '/%if !%{build_ada}/,/%endif/ s/^/#/' gcc.spec
# remove gmp/mpfr/mpc dependencies
sed -i '/BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1, libmpc-devel >= 0.8.1/ s/.*//' gcc.spec
# remove isl dependency
sed -i '/BuildRequires: isl = %{isl_version}/,/Requires: isl-devel = %{isl_version}/ s/^/#/' gcc.spec
# Either build binutils as I do, or lower requirements
sed -i '/Requires: binutils/ s/2.24/2.20/' gcc.spec
# Make sure you don't break on gcc-java
sed -i '/gcc-java/ s/^/#/' gcc.spec

คุณยังมีทางเลือกในการตั้งค่าคำนำหน้าดังนั้น rpm นี้จะติดตั้งแบบเคียงข้างกันโดยไม่ทำลาย distro rpm (แต่ต้องเปลี่ยนชื่อและการแก้ไขบางอย่างเป็นชื่อแพ็คเกจภายใน) ฉันมักจะเพิ่มโมดูลสภาพแวดล้อมเพื่อให้ฉันสามารถโหลดและยกเลิกการโหลด gcc นี้ตามที่ต้องการ (คล้ายกับวิธีการทำงานของคอลเลกชัน) เป็นส่วนหนึ่งของรอบต่อนาที (ดังนั้นฉันจึงเพิ่มการพึ่งพาใหม่)

ในที่สุดสร้าง tree rpmbuild และวางไฟล์ที่ hey ควรไปและ build:

yum install rpmdevtools rpm-build
rpmdev-setuptree
cp * ~/rpmbuild/SOURCES/
mv ~/rpmbuild/{SOURCES,SPECS}/gcc.spec
rpmbuild -ba ~/rpmbuild/SPECS/gcc.spec

อัพเดท 2

โดยทั่วไปแล้วไม่ควรใช้ระบบปฏิบัติการ "เซิร์ฟเวอร์" เพื่อการพัฒนานั่นคือเหตุผลที่คุณมี fedora ซึ่งมาพร้อมกับ gcc ล่าสุดอยู่แล้ว ฉันมีข้อกำหนดบางประการ แต่คุณควรพิจารณาใช้เครื่องมือที่เหมาะสมสำหรับงาน - rhel / centos เพื่อใช้งานแอพที่ผลิต, fedora เพื่อพัฒนาแอพเหล่านั้นเป็นต้น


มันสุภาพเมื่อลงคะแนนเสียงเพื่อให้เหตุผล
Dani_l

0

เฮ้พวกนี่คือสิ่งที่ฉันทำ (รวบรวมจากศูนย์) ไม่มีความผิดต่อคำตอบอื่นฉันแน่ใจว่าใช้งานได้ แต่ GCC เป็นเรื่องใหญ่สำหรับเรื่องความปลอดภัยโดยเฉพาะฉันจึงต้องการรวบรวมจากต้นฉบับและแหล่งข้อมูลอย่างเป็นทางการ:

yum -y install gmp-devel mpfr-devel libmpc-devel glibc-devel glibc-devel.i686 zip unzip jar
wget http://mirrors.kernel.org/gnu/gcc/gcc-5.5.0/gcc-5.5.0.tar.gz
tar -zxvf gcc-5.5.0.tar.gz
cd gcc-5.5.0
./configure
make
make install
yum remove gcc
rm -rf /usr/bin/gcc
rm -rf /usr/bin/c++
rm -rf /usr/bin/cc
ln -s /usr/local/bin/x86_64-unknown-linux-gnu-gcc-5.5.0 /usr/bin/gcc
ln -s /usr/local/bin/x86_64-unknown-linux-gnu-c++ /usr/bin/c++
ln -s /usr/local/bin/x86_64-unknown-linux-gnu-gcc /usr/bin/cc

ที่มา: http://realtechtalk.com/GCC_5_on_Centos_6_How_To_Install-1965-articles


ความปลอดภัยเป็นเรื่องใหญ่ แต่คุณติดตั้งจากตำแหน่งที่ไม่ใช่ HTTPS :)
dhag

ในตอนนั้นไม่มีการเปิดใช้งาน SSL บนเว็บไซต์ mirror.kernel.org แต่ฉันคิดว่าถ้าเราไม่สามารถเชื่อถือ kernel.org ได้เราจะมีปัญหาใหญ่กว่า :)
Areeb Soo Yasir

-1

คุณสามารถลอง gcc source buid.GCC ต้องใช้ MPC, MPFR และ GMP ตามความต้องการล่วงหน้าสำหรับ GCC 4.8 การอ้างอิงรุ่นคือ MPC 0.8 GMP 6.0 MPFR 2.4.2 ลงโหลดแพ็คเกจที่มาและติดตั้งแพ็คเกจทั้งหมดภายใต้ / usr / lib . ลำดับของการติดตั้งคือ gmp, mpfr, mpc

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.