Created
March 26, 2012 23:51
-
-
Save kragen/2210789 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
En http://pad.telecomix.org/kipfajub | |
También en https://gist.github.com/2210789 | |
# Para compilar node.js (voy a anotar el porque de cada comando despues) | |
tar xzvf node-v0.6.14.tar.gz # extraer archivo: z para gzip, v para verbose, f para file | |
cd node-v0.6.14/ | |
./configure # se quejó que no había compilador de c++ | |
sudo apt-get install g++ # g++ es el compilador c++ de GNU | |
./configure # ahora tiene más éxito pero se cuelga en falta de openssl | |
apt-cache show nodejs # pero no se sabe de un "nodejs" | |
apt-cache show node # ni tampoco, porque tengo que agregar universe y multiverse | |
sudo apt-get build-dep nodejs # y no tiene líneas deb-src en /etc/apt/sources.list | |
apt-cache search node.js # y no sabe de ningun paquete de node | |
sudo vi /etc/apt/sources.list # así que agrego estas líneas al archivo y | |
sudo apt-get update # actualizo las listas | |
apt-cache search node.js # y ahora sí se sabe | |
sudo apt-get build-dep nodejs # instalo las cosas que se necesitan para compilarlo | |
./configure # ahora con éxito | |
make # y en pocos minutos, puedo | |
./out/Release/node # hacer correr node! | |
para compilar xv: | |
tar xzvf xv-3.10a.tar.gz # descomprimo el archivo | |
cd xv-3.10a/ # voy al directorio | |
make # y ejecuto el comando make | |
# esto tira un error: | |
# Command not found | |
# eso puede significar dos cosas: | |
# que el archivo realmente no existe... | |
ls -l /home/ubuntu/Downloads/xv-3.10a/tiff/RANLIB.csh | |
ls /home/ubuntu/Downloads/xv-3.10a/tiff/RANLIB.csh | |
# ls me muestra que sí, efectivamente existe | |
# El otro problema puede ser que al intentar ejecutar el make algo salio mal... | |
cat /home/ubuntu/Downloads/xv-3.10a/tiff/RANLIB.csh | |
# cat muestra que el script intenta llamar a /bin/csh pero csh (que es otro interprete de | |
# comandos no esta instalado) | |
# unos boludos en los 80 usaron ese shell sin saber que no estaba bueno y escribieron el # script en ese lenguaje que no tiene nada que ver con el sh que tenemos instalados. | |
# si intentamos ejecutar el script con sh vamos a tener muchos mas problemas por eso | |
# mejor instalar csh. ver que no está instalado! | |
/bin/csh # nos tira un error. | |
sudo apt-get install csh | |
/bin/csh # ahora anda. "exit" para salir. | |
sudo apt-get build-dep xv | |
# pero Ubuntu y Debian no conocen ningún "xv", así que esto no anduvo. | |
make # y ahora si... pero se queja que no se encuentra X11/Xos.h | |
# Para saber que paquetes faltan los puedo buscar en | |
# http://www.debian.org/distrib/packages#search_contents | |
# o instalar el programa apt-file que me permite hacer busquedas desde mi linea de | |
# comandos. | |
sudo apt-get install x11proto-core-dev apt-file | |
apt-file update # para bajar los indices que usa apt-file | |
make # y ahora el error es otro diferente: xv.h está definiendo sys_errlist.h incorrectamente | |
nano xv.h # así que lo comento | |
make | |
# se queja que no hay X11/Xlib.h, lo cual está en el paquete libx11-dev | |
# instalamos las dependencias necesarias que mas se parecen a lo que nos esta | |
# solicitando make ,... | |
sudo apt-get install libx11-dev | |
make | |
apt-file search X11/Intrinsic.h | |
sudo apt-get install libxt-dev | |
# y ahora si... | |
make | |
# ejecutamos nuestro programa... | |
./xv | |
# para xteddy: | |
apt-get source xteddy # bajar el archivo y los parches de empaquetear | |
gzip -d xteddy_2.2-2ubuntu1.diff.gz # los parches están acá | |
less xteddy_2.2-2ubuntu1.diff | |
cd xteddy-2.2/ # apt-get automáticamente extrajo y parcheó xteddy | |
./debian/rules build # los parches agregaron éste script para compilarlo | |
sudo apt-get build-dep xteddy # pero se necesitan otras cosas para compilar! | |
./debian/rules build # ésta vez con éxito, y | |
./xteddy -f images/xbrummi.png | |
# un ejemplo de ltrace: | |
ltrace ./xteddy -f images/xbrummi.png # te muestra las llamadas | |
# para mostrar sacar un backtrace con GDB: | |
cd ../xv-3.10a/ | |
vi xvbrowse.c # metí un bug crashero en el principio de CreateBrowse | |
make | |
./xv # Segmentation fault (core dumped) | |
ls -lart # pero no hay core | |
ulimit -a # porque core file size estuvo limitado a 0 bloques | |
ulimit -c 102400 # permitir un core file | |
./xv | |
ls -lart # ahora sí | |
gdb xv core # analizar el core con gdb, con el comando bt | |
grep -r CreateBrowse . # ver donde está definido y usado esta función | |
# recompilamos con -g para tener mejor información | |
touch xvbrowse.c | |
make CFLAGS=-g LDFLAGS=-g | |
gdb xv # correr xv debajo gdb, usar r para ejecutar, y bt para ver el backtrace | |
touch xvbrowse.c # para recompilar sin -g | |
make | |
touch xvbrowse.c | |
make CFLAGS=-g LDFLAGS=-g | |
# para mostrar los contenidos .debug etc. que pone -g: | |
objdump --full-contents xvbrowse.o | less | |
readelf -a xv | less # para ver la estructura del ejecutable | |
nm xv # para ver solamente los simbolos del ejecutable | |
nm xvbrowse.o | less # o del archivo que se compila de xvbrowse.c | |
# para mostrar file: | |
# file me dice que es ese archivo | |
file $(locate .jpg) # si quiero puedo pasar el resultado de locate a file como | |
# parametro | |
locate .jpg | file - # tambien puedo usar un pipe pero esto solo me muestra el | |
# resultado de lo que locate manda a file que en este caso es una lista en formato texto | |
# y no los nombres de los archivos como yo esperaba... | |
locate .jpg | xargs file | |
# y la ultima opcion es usar xargs que le pasa lo que recibe como parametro al comando... |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment