cài đặt gcc mới nhất trên rrc 6 x86_64


13

Tôi có máy chủ RHEL 6 với phiên bản gcc 4.4.7. Tôi muốn cập nhật phiên bản gcc (tôi nghĩ phiên bản hiện tại là 4,8). Cập nhật Yum không hoạt động. Ngoài ra, câu trả lời SO cho một câu hỏi tương tự trên CentOS không hoạt động. Tôi đã làm theo các phương pháp trong câu trả lời được chấp nhận, đầu ra là "Lỗi khi lấy dữ liệu kho lưu trữ để kiểm tra-1.1-devtools-6, không tìm thấy kho lưu trữ". Ngoài ra, tôi không chắc liệu tôi có nên làm theo các phương pháp cho CentO không.

Có ai đã cập nhật gcc trong máy chủ RHEL 6 x86_64 chưa?


Bạn đã thử cài đặt nó từ repo này? hop5.in/yum/el6/repoview/gcc.html . Đây là các bản dựng nhị phân của 4.8.2. Bạn có thể cần phải ở mức 6,4 CentOS để cài đặt chúng, đây có thể là vấn đề của bạn.
slm

Là cài đặt từ nguồn một tùy chọn?
mkc

vâng tôi có thể cài đặt từ nguồn nếu cần.
Rivu

câu hỏi hay. Ai là kẻ hạ bệ? :(
Otheus

hop5.in không còn là một repo el6 hợp lệ của bất cứ điều gì, rõ ràng. @slm
Otheus 23/2/2016

Câu trả lời:


4

Phương pháp đơn giản nhất cho đến nay là sử dụng một bản dựng nhị phân được cung cấp thông qua kho lưu trữ YUM. Một tùy chọn như vậy sẽ là sử dụng kho lưu trữ hop5.in. Cụ thể trang này: gcc - Trình biên dịch khác nhau (C, C ++, Objective-C, Java, ...) . Họ đang cung cấp 4.8.2, hoạt động với CentOS 6.3 hoặc 6.4. Bạn có thể muốn thực hiện cập nhật trước:

$ sudo yum update

Tùy chọn khác sẽ là sử dụng Bộ công cụ dành cho nhà phát triển , cụ thể là phiên bản đi kèm được cung cấp bởi Science Linux.

Làm theo các hướng dẫn cài đặt về cơ bản bạn sẽ thực hiện 2 bước sau:

thêm kho
$ 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
cài đặt devtoolset
$ sudo yum install devtoolset-2

Cập nhật số 1

Kho lưu trữ YUM hop5.in dường như đã bị xóa, do đó, cách duy nhất là sử dụng phương thức devtoolset được tô sáng ở trên.

Các ví dụ bổ sung để cài đặt qua devtoolset được tô sáng trong GitHub Gist này: Cài đặt gcc 4.8 và Linuxbrew trên CentOS 6 .


3
Tôi đã cố cài đặt vòng / phút được tải xuống từ liên kết đầu tiên, cho biết "lỗi: Không phụ thuộc: cpp = 4.8.2-8.el6 là cần thiết bởi gcc-4.8.2-8.el6.x86_64 ...". Đối với bộ công cụ dành cho nhà phát triển, nó có ghi " people.centos.org/tru/devtools-1.1/6Server/x86_64/RPMS/repodata/iêu : [Errno 14] PYCURL ERROR 22 -" Không tìm thấy URL được yêu cầu: 404 Không tìm thấy " Tôi nghĩ vấn đề là nó là 6Server thay vì 6 trong liên kết. Tôi không biết cách khắc phục điều đó.
Rivu

hop.in không còn có những gì tôi nghĩ bạn nghĩ nó có.
Otheus

1
Bước bổ sung có thể cần thiết: Tải xuống và nhập khóa cern từ http://ftp.scientificlinux.org/linux/scientific/5x/x86_64/RPM-GPG-KEYs/RPM-GPG-KEY-cern. Tôi thích rằng trang web không có https. Con đường để đi scilinux. Sau khi bạn tải xuống (thư mục tmp hoặc bất cứ ai), hãy nhập nó với rpm --import RPM-GPG-KEY-cernsau đó làmyum install.
Otheus

@Otheus - cảm ơn, tôi ghét khi repos cắn bụi như thế này, phá hỏng một loạt nội dung trên các interwebs 8-).
slm

1
Đáng nói là devtoolset-2-gcc(đối với tôi ít nhất) đã cài đặt một tá gói và tải xuống 35 MB, so với 280 gói và tải xuống 575 MB cho yum install devtoolset-2.
miken32


2

Bây giờ tôi đã xây dựng các phiên bản gcc mới hơn cho rrc6 cho một số phiên bản (từ 4.7.x đến 5.3.1).

Quá trình này khá dễ dàng nhờ các bản dựng Jakub Jelinek fedora gcc của Redhat được tìm thấy trên koji

Chỉ cần lấy vòng / phút src mới nhất cho bất kỳ phiên bản nào bạn yêu cầu (ví dụ: 5.3.1 ).

Về cơ bản bạn sẽ bắt đầu bằng cách xác định các yêu cầu xây dựng bằng cách phát hành rpm -qpR src.rpmtìm kiếm bất kỳ yêu cầu phiên bản:

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

Bây giờ đến phần tẻ nhạt - bất kỳ gói nào có phiên bản cao hơn yum fro cung cấp, bản phân phối của bạn cần được tải xuống từ koji và lặp lại quy trình cho đến khi tất cả các yêu cầu phụ thuộc được đáp ứng.

Tôi gian lận, btw.
Tôi thường đóng gói lại vòng / phút để chứa cây xây dựng chính xác bằng cách sử dụng tiện ích gnu để sử dụng các yêu cầu được đặt và đặt chính xác, vì vậy gmp / mpc / mpfr / isl (cloog không còn cần thiết) được tải xuống và bỏ vào đường dẫn chính xác và mới (cồng kềnh) tar được xây dựng lại thành một src vòng / phút mới (với những thay đổi nhỏ đối với tệp spec) mà không phụ thuộc vào các phiên bản đóng gói (vòng / phút) của chúng. Vì tôi không biết ai sử dụng ADA, tôi chỉ cần loại bỏ các phần liên quan đến gnat khỏi specfile, đơn giản hóa hơn nữa quá trình xây dựng, khiến tôi chỉ lo lắng về binutils.
Gcc thực sự có thể xây dựng với các binutils cũ hơn, vì vậy nếu bạn đang vội, hãy chỉnh sửa thêm specfile để yêu cầu phiên bản binutils đã có trên hệ thống của bạn. Điều này sẽ dẫn đến một gcc hơi bị tê liệt, nhưng chủ yếu là nó sẽ hoạt động đủ tốt.
Điều này hoạt động khá tốt là chủ yếu.

CẬP NHẬT 1

Phương pháp đơn giản nhất để mở vòng / giây src có lẽ là yum cài đặt vòng / phút và truy cập mọi thứ trong ~ / rpmbuild, nhưng tôi thích

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

Bạn cũng có thể chọn đặt tiền tố để vòng / phút này sẽ cài đặt song song mà không phá vỡ vòng / phút phân phối (nhưng yêu cầu thay đổi tên và một số sửa đổi cho tên gói nội bộ). Tôi thường thêm một mô-đun môi trường để tôi có thể tải và dỡ gcc này theo yêu cầu (tương tự như cách các bộ sưu tập hoạt động) như một phần của vòng / phút (vì vậy tôi thêm một phụ thuộc mới).

Cuối cùng tạo cây rpmbuild và đặt các tệp nơi hey nên đi và xây dựng:

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

CẬP NHẬT 2

Thông thường, người ta không nên sử dụng hệ điều hành "máy chủ" để phát triển - đó là lý do tại sao bạn có fedora đi kèm với gcc mới nhất. Tôi có một số yêu cầu cụ thể, nhưng bạn thực sự nên cân nhắc sử dụng công cụ phù hợp cho nhiệm vụ - rrc / centos để chạy các ứng dụng sản xuất, fedora để phát triển các ứng dụng đó, v.v.


Thật lịch sự khi bỏ phiếu để đưa ra lý do.
Dani_l

0

Hey guys đây là những gì tôi đã làm (biên dịch từ đầu). Không có ý xúc phạm đến câu trả lời khác Tôi chắc chắn nó hoạt động nhưng GCC đặc biệt là vấn đề lớn về bảo mật nên tôi thích biên dịch từ nguồn ban đầu và chính thức:

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

Nguồn: http://realtechtalk.com/GCC_5_on_Centos_6_How_To_Install-1965-articles


Bảo mật là một vấn đề lớn, nhưng bạn đã cài đặt từ một vị trí không phải HTTPS :)?
dhag

Vào thời điểm đó, không có SSL nào được kích hoạt trên trang Mirror.kernel.org nhưng tôi nghĩ rằng nếu chúng ta không thể tin tưởng kernel.org thì chúng ta có vấn đề lớn hơn :).
Areeb Soo Yasir

-1

bạn có thể thử nguồn gcc buid.GCC yêu cầu MPC, MPFR và GMP làm điều kiện tiên quyết. Đối với GCC 4.8, phụ thuộc phiên bản là MPC 0.8 GMP 6.0 MPFR 2.4.2. Tải các gói nguồn và cài đặt tất cả các gói trong / usr / lib Thứ tự cài đặt là gmp, mpfr, mpc

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.