Ich arbeite an einer CentOS 7-Workstation. Ich hatte Rstudio installiert und es hat bis vor kurzem gut funktioniert. Aber jetzt, wenn ich versuche, es zu starten, http://localhost:8787/
erhalte ich eine Fehlermeldung, die besagt:Unable to connect to service
Ich habe im Terminal überprüft, ob R ordnungsgemäß funktioniert, und habe folgenden Fehler erhalten.
/usr/lib64/R/bin/exec/R: error while loading shared libraries: /lib/libgcc_s.so.1: file too short
Wenn ich versuche, R mit dem folgenden Befehl erneut zu installieren, sudo yum install R -y
erhalte ich die folgende Antwort
Package R-3.5.2-2.el7.x86_64 already installed and latest version
Nothing to do
Was muss ich tun?
Antwort1
Sie haben eine beschädigte .so
.
Im Allgemeinen geben Sie den folgenden Befehl ein, um das Paket zu finden, zu dem es gehört:
yum provides \*/<so_file>
In Ihrem Fall:
$ yum provides \*/libgcc_s.so.1
[...]
libgcc-4.4.6-4.el6.i686 : GCC version 4.4 shared support library
Repo : base
Matched from:
Filename : /lib/libgcc_s.so.1
[...]
In diesem Fall möchten wir libgcc-4.4.6-4.el6.i686
, dass Sie eine andere Version erhalten.
Sie müssen dieses Paket neu installieren.
yum reinstall libgcc-<version>.i686
Antwort2
In meinem Fall bekam ich ld : error : myfile: file too short
oder manchmal:
ld: warning: myfile has a section extending past end of file
ld : error : myfile: ELF section name out of range
weil ich für Nix einen Ordner patchte, der sowohl Quellcode als auch einen Binärblob enthielt … und da die Anzahl der zu patchenden Dateien hoch war, habe ich ein Skript verwendet, um sie alle gleichzeitig zu patchen (mit find
und sed -i
). Leider sed
wurde auch auf Binärdateien angewendet, was diese vollständig beschädigt hat.
Das ist mir beim Drucken objdump -a myfile
vor und nach dem Patchen aufgefallen (im zweiten Fall würde ich eine Fehlermeldung erhalten).