He de reconocer que en mi ordenador personal se me da mal eso de actualizar, antes siempre actualizaba a la última versión para probar las nuevas novedades que traía, eso siempre conllevaba un gran riesgo, como por ejemplo que librerias instaladas dejasen de funcionar por dependencias incumplidas.
Actualmente intento actualizar lo menos posible, solamente actualizaciones criticas y de seguidad. Llevaba con una versión Ubuntu Gnome 15.04 (porque a mi no me va eso de Unity, y creo que su muerte es buena para la comunidad gnome y que así todos podamos remar en la misma dirección) pues desde abril de 2015. Es decir, casi 3 años sin actualizar la distribución.
El lunes necesité instalar el framework ionic2 en mi máquina y me lleve una sorpresa al ver que no podia instalarlo porque necesitaba una versión reciente de node.js y no había ninguna compatible con mi sistema, así que el martes me armé de valor y me dediqué a actualizar el sistema.
Mi primera idea era actualizar a la 16.04 que es la última LTS. Primer problema, para actualizar a la 16.04 desde la 15.04 es necesario pasar por la 15.10 que ya no tiene soporte, por tanto al ejecutar el comando
sudo do-release-upgrade
Me decía que no se podía actualizar así que tenia que actualizar manualmente a 15.10 con los siguientes comandos
sed -i -e "s/trusty/wily/g" /etc/apt/sources.list
pt-get update && apt-get dist-upgrade
Y después de unas cuantas horas bajando paquetes y actualizando conseguí actualizar a la versión 15.10. Después desde 15.10 ejecuté
sudo do-release-upgrade
Y esta vez si que funcionó, después de bajar aún más paquetes que antes, terminó la instalación con algunos cuelgues que me indicaba que la cosa no fue bien. Reinicio el ordenador y no arranca.
Total, me bajo esta vez la 17.04 y la grabo en un USB, la instalo en el punto de anclaje /, monto /home /home/angelluis/data y la swap y después de una media hora ya tenía el sistema montado.
No perdí datos porque siempre particiono el disco duro para que los datos sean independientes de la instalación del sistema.
Ahora quedaba lo más dificil, dejarlo todo como estaba antes, o mejor. Llegados a este punto entré en shock. tengo que decir que los sistemas linux que manejo son Ubuntu 14.04, Ubuntu 16.04 y mi portatil personal que estaba en 15.04. Bueno, al estar en 17.04 y no funcionarme el Wifi, ejecuto el comando
ifconfig
Y me dice que no está instalado, que si quiero instalarlo ejecute el comando
sudo apt-get install net-tools
Mi primer pernsamiento fue que esto es un fallo, pero buscando veo que el comando ifconfig ha sido sustituido por ip (el mítico comando ifconfig!). Aquí no acaban mis sorpresas después de 3 años sin actualizar. Al ejecutar
ip a
o
ifconfig
Me doy cuenta que la interfaz eth0 ha sido renombrada a enp1s0f1 (WTF!) y después de arreglar el Wifi vi que wlan0 ha sido renombrada a wlp2s0b1. Básicamente esto se debe a lo que se denomina nombramiento previsible de interfaces de red y es debido al nuevo sistema systemd (https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/).
Imaginaros cual era mi situación, de vivir toda la vida con ifconfig y eth0/wlan0 de un día para otro me entero que eso ya no se lleva, que ahora se llevan otras cosas más modernas.
Dejando esto de lado internet, no me ofrece ninguna solución a mi problema con el Wifi así que mirando en dmesg me encuentro con un error bastante explicativo
[ 20.624301] b43-phy0 ERROR: Firmware file "b43/ucode29_mimo.fw" not found
[ 20.624306] b43-phy0 ERROR: Firmware file "b43-open/ucode29_mimo.fw" not found
[ 20.624308] b43-phy0 ERROR: You must go to http://wireless.kernel.org/en/users/...devicefirmware and download the correct firmware for this driver version. Please carefully read all instructions on this website.
Basicamente me dice que no puede cargar el firmware para mi chip de Wifi y que me dirija a una dirección. En Ubuntu el firmware se puede instalar ejecutando
sudo apt-get install firmware-b43-installer
Todo correcto y funcionado. Siguiente paso: comprobar que todo está en orden y sobre todo comprobar un proyecto en concreto del que al día siguiente tenía una presentación con el grupo de investigación de la Universidad de Murcia.
Antes de nada vuelvo a instalar mi shell favorita zsh
sudo apt-get install zsh
Esto puede parecer una tontería sin importancia pero tengo configuración importante en ~/.zshrc (aunque podia perfectamente pasarla a bash). Después de instalar zsh puedo ejecutar anaconda que lo tengo en mi carpeta de datos y por tanto no tengo que reinstalar.
Así que nada
. activate super_secret_project
Me funciona sin ningún problema, ejecuto python y escribo
import cv2
Para importar OpenCV 3.2.0 y
ImportError: libpng12.so.0: cannot open shared object file: No such file or directory
A pesar de que
conda info opencv3
Me decia que dicho paquete tenía dependencia a libpng16 y no a libpng12. En fin no trato de comprender los comportamientos irracionales. Me dirijo a https://packages.ubuntu.com/xenial/i386/libpng12-0/download la descargo desde algún mirror y la instalo y vuelvo a probar el import cv2 y me devuelve
ImportError:/usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0: undefined symbol: hb_buffer_set_cluster_level
Esta vez parece un problema de pango así que ejecuto, así que ejecuto
conda install -c asmeurer pango
Dentro del entorno super_secret_project y esta vez ya puedo ejecutar opencv en python + anaconda sin ningún tipo de problema. Ya me he quitado un peso de encima.
Todavía me quedaban algunas cosas importantes como instalar cordova e Ionic2.
Empezamos con cordova, para instalar cordova (e Ionic) necesito nodejs y npm y los paquetes que vienen por defecto en ubuntu no son los más actualizados. Así que ejecuto
sudo wget -qO- https://deb.nodesource.com/setup_6.x | bash -
El comando con curl me daba fallo así que por eso he usado wget. Después de esto y de seguir las instrucciones que aparecen en pantalla ya tengo instalado nodejs (con enlace simbolico a node) y npm. Para instalar cordova
sudo npm install -g cordova
Si todo sale bien se debería de haber instalado cordova. Ahora voy al directorio del proyecto cordova y ejecuto
cordova build
Error, falta el jdk de java. Así que
sudo apt-get install openjdk-8-jdk
Volvemos a hacer
cordova build
Error, me dice que no encuentra el SDK de android, así que
echo "export ANDROID_HOME=/home/angelluis/Escritorio/sdk" >> ~./zshrc
echo "export PATH=$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$PATH" >> ~./zshrc
source ~/.zshrc
Probamos de nuevo con
cordova build
Error, a pesar de tener Android Studio instalado no encuentra el gradle del sistema o de Android Studio así que
sudo apt-get install gradle
Ahora si pruebo a construir el proyecto de cordova funciona. He tenido suerte, porque una versión de gradle de modificaba la variable de entorno JAVA_HOME dandote error la construcción del proyecto, y la solución era modificar a mano gradle o instalar una versión distinta de gradle.
Ahora vamos con Ionic. Ionic es un framework que se basa en typescript, Angularjs y cordova. Instalar Ionic después de haber instalado cordova es relativamente sencillo
sudo npm install -g ionic
Ya tego las herramientas mas importantes instaladas. Faltan los IDE's, que uso Sublime Text y Atom
wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
sudo apt-get update
sudo apt-get install sublime-text
sudo add-apt-repository ppa:webupd8team/atom
sudo apt-get update
sudo apt-get install atom
Y por último creo que gnome tiene un serio problema con el diseño por tanto siempre le cambio el diseño (aunque solo cambio el tema de ventana y los iconos) y le pongo uno parecido a los sobremesa de Apple. El proyecto se llama MacBuntu: http://www.noobslab.com/2017/06/macbuntu-transformation-pack-ready-for.html También hay un set de iconos que me gusta bastante y se llama Faenza: https://tiheum.deviantart.com/art/Faenza-Icons-173323228 Y como colofón instalarle extensiones a gnome: https://extensions.gnome.org/ Yo personalmente siempre suelo instalar el dock y la extensión para auto-ocultar la barra superior.
Y así es mas o menos como me ha quedado todo (pulsar para agrandar)

Realmente tengo una gráfica Nvidea GEFORCE 840M no se porque no la detecta
P.D Logicamente tenía otros paquetes de software mas pequeños o que no vienen al caso y que no he explicado aquí. Así mismo en un futuro, cuando toque otros proyectos seguramente me toque volver a instalar ciertas cosas que tenía antes. Por ejemplo, CAL3D es poisble que no compile por no tener las librerias de OpenGL, etc..