Esta pregunta parece abordarse correctamente en varias preguntas y en otros lugares que se encuentran fácilmente con Google, pero no encuentro la solución satisfactoria por las razones que se explican a continuación. Pero solo para completar, he incluido algunos enlaces relevantes:
/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 ...
Y otros.
Sin embargo, esta pregunta se refiere a la instalación de una versión muy específica de GCC en Kali Linux, que no aparece fácilmente como un paquete específico. En particular, la pregunta se refiere a cómo instalar la versión 6.3.0, ya que necesito esta versión para compilar un programa en particular: https://www.reddit.com/r/Monero/comments/6d0ah8/xmrig_miner_new_release/
(como una pregunta adicional, si hay una forma más sensata de solucionar este problema en particular sin usar una versión diferente de GCC, no dude en responder, pero creo que esta pregunta es general y me gustaría saber cómo hacerlo independientemente de cómo hacer que el programa mencionado enlace correctamente)
Las versiones que están disponibles para instalar cualquier paquete, por ejemplo, gcc, se pueden determinar con:
apt-cache showpkg gcc
Que enumerará las versiones disponibles en "versiones:", por ejemplo
4:7.2.0-1d1
4:4.9.2-2
La instalación es tan simple como emitir
apt-get install gcc:4:4.9.2-2
Esto instalará la versión anterior 4: 4.9.2-2, simplemente (creo) sobrescribiendo la instalación 7.2.0-1d1, si está presente.
Para obtener la versión 4: 4.9.2-2 disponible, tuve que agregar deb
http://old.kali.org/kali sana main non-free contrib
a mi
/etc/apt/sources.list
archivo y luego ejecutar apt-get update
.
Sin embargo, ¿qué sucede si la versión que necesito no aparece en la lista?
He estado experimentando con varias fuentes, por ejemplo, las que se encuentran aquí: http://snapshot.debian.org/ y en varias otras preguntas y sitios web de búsquedas de Google.
La mayoría de ellos me dan ignorar o errores, por ejemplo, de la siguiente manera
Ign:3 http://snapshot.debian.org/archive/debian/20091004T111800Z lenny InRelease
Incluso si esto funcionara, parece ser un enfoque muy malo instalar una versión en particular, ya que agregar alguna fuente arbitraria podría no tener la versión en particular que quiero.
Si busco gcc en snapshot.debian.org, solo obtengo versiones muy antiguas: http://snapshot.debian.org/package/gcc/
Finalmente me sentí frustrado con este enfoque y compilé GCC 6.3.0 a partir del tarball fuente. La compilación fue exitosa, pero luego me enfrento a cómo instalarla. Estoy cauteloso acerca de la ejecución make install
como me temo que va a manipular apt
y dpkg
posiblemente romper el sistema.
En cambio, intenté ejecutarlo desde el directorio de compilación, directamente. Intenté simplemente agregar el directorio de compilación como la primera entrada en mi RUTA, que no funcionó. Luego, intenté cambiar el nombre /usr/bin/gcc
y hacer un enlace simbólico desde /usr/bin/gcc
donde vive mi ejecutable gcc-6.3.0. Esto presenta el siguiente problema:
cc: error trying to exec 'cc1': execvp: No such file or directory, which
Esto se solucionó con otra entrada en mi RUTA.
Entonces, me sale este error:
/usr/include/stdio.h:34:21: fatal error: stddef.h: No such file or directory
Lo que supongo es porque falta una entrada /usr/lib/gcc/x86_64-linux-gnu
. Traté de hacer un enlace simbólico de 6 a 6.3.0, pero esto no fue suficiente. También intenté copiar todo con el cp -R
mismo resultado.
Este debería ser un programa de 64 bits, pero también consideré lo mismo para
/usr/lib/gcc/i686-linux-gnu
.
Estoy seguro de que podría comenzar strace
a ver desde dónde intenta abrir los archivos, leer los archivos de registro, leer la fuente y, finalmente, me imagino que sería capaz de descubrir cómo hackear una solución mal concebida. Pero sería bueno que alguien me dijera cómo hacer esto de una manera sensata.