Questa domanda sembra essere affrontata correttamente in diverse domande e in altri luoghi facilmente reperibili con Google, ma non trovo la soluzione soddisfacente per i motivi spiegati di seguito. Ma solo per completamento, ho incluso alcuni collegamenti rilevanti:
/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 ...
E altri.
Tuttavia, questa domanda riguarda l'installazione di una versione molto specifica di GCC in Kali Linux, che non appare prontamente disponibile come pacchetto specifico. In particolare, la domanda riguarda come installare la versione 6.3.0, poiché ho bisogno di questa versione per compilare un determinato programma: https://www.reddit.com/r/Monero/comments/6d0ah8/xmrig_miner_new_release/
(come domanda bonus, se esiste un modo più sano di risolvere questo particolare problema senza utilizzare una versione diversa di GCC, sentiti libero di rispondere, ma credo che questa domanda sia generale e vorrei sapere come farlo indipendentemente da come effettuare correttamente il collegamento al programma sopra citato)
Le versioni disponibili per l'installazione di qualsiasi pacchetto, ad esempio gcc, possono essere determinate con:
apt-cache showpkg gcc
Che elencherà le versioni disponibili in "versioni:", ad es
4:7.2.0-1d1
4:4.9.2-2
L'installazione è quindi semplice come l'emissione
apt-get install gcc:4:4.9.2-2
Questo installerà la versione precedente 4: 4.9.2-2, semplicemente (credo) sovrascrivendo l'installazione 7.2.0-1d1, se presente.
Per ottenere la versione 4: 4.9.2-2 disponibile, ho dovuto aggiungere deb
http://old.kali.org/kali sana main non-free contrib
al mio
/etc/apt/sources.list
file ed eseguire apt-get update
.
Tuttavia, cosa succede se la versione di cui ho bisogno non è elencata?
Ho sperimentato varie fonti, ad esempio quelle trovate qui: http://snapshot.debian.org/ e in varie altre domande e siti Web dalle ricerche di Google.
La maggior parte di loro mi dà ignorare o errori, ad esempio come segue
Ign:3 http://snapshot.debian.org/archive/debian/20091004T111800Z lenny InRelease
Anche se questo funzionasse, sembra essere un pessimo approccio per installare una versione particolare, poiché l'aggiunta di una fonte arbitraria potrebbe non avere la versione particolare che desidero.
Se cerco gcc su snapshot.debian.org, ottengo solo versioni molto vecchie: http://snapshot.debian.org/package/gcc/
Alla fine sono stato frustrato da questo approccio e ho compilato GCC 6.3.0 dal tarball di origine. La compilation ha avuto successo, ma poi mi trovo di fronte a come installarlo. Sono cauti in esecuzione make install
come temo che sarà manomettere apt
e dpkg
e possibilmente rompere il sistema.
Invece, ho provato a eseguirlo direttamente dalla directory di build. Ho provato ad aggiungere semplicemente la directory di build come prima voce nel mio PERCORSO, che non ha funzionato. Quindi, ho provato a rinominare /usr/bin/gcc
e fare un collegamento simbolico da /usr/bin/gcc
dove vive il mio eseguibile gcc-6.3.0. Questo presenta il seguente problema:
cc: error trying to exec 'cc1': execvp: No such file or directory, which
Questo è stato risolto con un'altra voce nel mio PERCORSO.
Quindi, ottengo questo errore:
/usr/include/stdio.h:34:21: fatal error: stddef.h: No such file or directory
Che presumo sia a causa di una voce mancante in /usr/lib/gcc/x86_64-linux-gnu
. Ho provato a creare un collegamento simbolico dalla 6 alla 6.3.0, ma questo non era sufficiente. Ho anche provato a copiare tutto con lo cp -R
stesso risultato.
Questo dovrebbe essere un programma a 64 bit, ma ho anche considerato lo stesso per
/usr/lib/gcc/i686-linux-gnu
.
Sono sicuro che potrei iniziare strace
a vedere da dove tenta di aprire i file, leggere i file di registro, leggere la fonte e alla fine immagino che sarei in grado di capire come hackerare insieme una soluzione mal concepita. Ma sarebbe bello se qualcuno potesse dirmi come fare in modo sano.