Diese Frage scheint an mehreren Fragen und an anderen Stellen, die mit Google leicht zu finden sind, richtig beantwortet zu werden, aber ich finde die Lösung aus den unten erläuterten Gründen nicht zufriedenstellend. Aber nur zur Vervollständigung habe ich einige relevante Links eingefügt:
/ubuntu/138284/how-to-downgrade-a-package-via-apt-get /ubuntu/428772/how-to-install-specific-version-of -some-package / 428778 /ubuntu/26498/choose-gcc-and-g-version ...
Und andere.
Diese Frage bezieht sich jedoch auf die Installation einer sehr spezifischen Version von GCC unter Kali Linux, die als spezifisches Paket nicht ohne weiteres verfügbar zu sein scheint. Die Frage betrifft insbesondere die Installation von Version 6.3.0, da ich diese Version zum Kompilieren eines bestimmten Programms benötige: https://www.reddit.com/r/Monero/comments/6d0ah8/xmrig_miner_new_release/
(Als Bonusfrage können Sie diese Frage gerne beantworten, wenn es einen vernünftigeren Weg gibt, dieses spezielle Problem zu beheben, ohne eine andere Version von GCC zu verwenden. Ich glaube jedoch, dass diese Frage allgemein ist und ich möchte wissen, wie sie unabhängig davon zu tun ist wie man den oben genannten Programmlink richtig macht)
Die Versionen, die für die Installation eines Pakets verfügbar sind, z. B. gcc, können wie folgt ermittelt werden:
apt-cache showpkg gcc
Welches listet die verfügbaren Versionen unter "Versionen:" auf, z
4:7.2.0-1d1
4:4.9.2-2
Die Installation ist dann so einfach wie das Ausstellen
apt-get install gcc:4:4.9.2-2
Dadurch wird die ältere Version 4: 4.9.2-2 installiert, indem einfach (glaube ich) die Installation von 7.2.0-1d1 überschrieben wird, falls vorhanden.
Um Version 4: 4.9.2-2 überhaupt verfügbar zu machen, musste ich deb
http://old.kali.org/kali sana main non-free contrib
meine
/etc/apt/sources.list
Datei hinzufügen und dann ausführen apt-get update
.
Was ist jedoch, wenn die von mir benötigte Version nicht aufgeführt ist?
Ich habe mit verschiedenen Quellen experimentiert, z. B. den hier gefundenen: http://snapshot.debian.org/ und bei verschiedenen anderen Fragen und Websites aus Google-Suchanfragen.
Die meisten von ihnen geben mir Ignorieren oder Fehler, zB wie folgt
Ign:3 http://snapshot.debian.org/archive/debian/20091004T111800Z lenny InRelease
Selbst wenn dies funktionieren würde, scheint es ein sehr schlechter Ansatz zu sein, eine bestimmte Version zu installieren, da das Hinzufügen einer beliebigen Quelle möglicherweise nicht die gewünschte Version hat.
Wenn ich auf snapshot.debian.org nach gcc suche, erhalte ich nur sehr alte Versionen: http://snapshot.debian.org/package/gcc/
Ich wurde schließlich mit diesem Ansatz frustriert und kompilierte GCC 6.3.0 aus dem Quell-Tarball. Die Kompilierung war erfolgreich, aber dann muss ich sie installieren. Ich bin vorsichtig laufen , make install
wie ich es fürchten manipulieren apt
und dpkg
möglicherweise das System zu brechen.
Stattdessen habe ich versucht, es direkt aus dem Build-Verzeichnis auszuführen. Ich habe versucht, einfach das Build-Verzeichnis als ersten Eintrag in meinem PATH hinzuzufügen, was nicht funktioniert hat. Dann habe ich versucht, umzubenennen /usr/bin/gcc
und einen Symlink von dort /usr/bin/gcc
zu erstellen , wo sich meine ausführbare Datei gcc-6.3.0 befindet. Dies stellt das folgende Problem dar:
cc: error trying to exec 'cc1': execvp: No such file or directory, which
Dies wurde mit einem anderen Eintrag in meinem Pfad behoben.
Dann bekomme ich diesen Fehler:
/usr/include/stdio.h:34:21: fatal error: stddef.h: No such file or directory
Was ich vermute, liegt an einem fehlenden Eintrag in /usr/lib/gcc/x86_64-linux-gnu
. Ich habe versucht, einen Symlink von 6 auf 6.3.0 zu erstellen, aber das war nicht ausreichend. Ich habe auch versucht, alles mit dem cp -R
gleichen Ergebnis zu kopieren .
Dies sollte ein 64-Bit-Programm sein, aber ich habe das auch für in Betracht gezogen
/usr/lib/gcc/i686-linux-gnu
.
Ich bin sicher, ich könnte anfangen strace
zu sehen, wo es versucht, die Dateien zu öffnen, Protokolldateien zu lesen, die Quelle zu lesen, und schließlich kann ich mir vorstellen, wie ich eine schlecht konzipierte Lösung zusammenhacken kann. Aber es wäre schön, wenn mir jemand sagen könnte, wie man das auf vernünftige Weise macht.