Hay que facilitar la vida al usuario; y nada mejor que hacer un instalador sencillito donde todo está empaquetado en un .sh... pero ¿cómo se hace?
No he encontrado mucha información al respecto y, aunque no es complicado, puede que no se te ocurra directamente cómo hacerlo.
Bien, pues simplemente hay que utilizar la estupenda herramienta cat y añadir el binario a descomprimir al final del fichero de shell... Como muestra un botón. ;)
Bien, con la orden anterior concatenamos el fichero que tendrá las órdenes a realizar del shell (cabeceraInstalador.sh), con el binario comprimido (todocomprimido.tgz), y lo juntamos en el fichero final llamado instalador.sh. ¿Cómo decirle al script dónde empieza la parte binaria del archivo? Utilizando la bonita utilidad tail.
#!/bin/sh
echo ""
echo "AutoInstalador del programa XX.XX v.1.0"
echo ""
# Cogemos la parte de este archivo a partir de la línea 11 y
# se la mandamos al tar para que la descomprima.
tail -n +11 $0 | tar xvz
exit 0
En el caso anterior, le pasamos a tail el parámetro +11, porque el fichero del script tiene 10 líneas. Podemos automatizar la tarea de contar el número de líneas haciendo un script un poco más complejo que, además utiliza un directorio temporal y ejecuta un script de instalación (que estará dentro del .tgz). Veamos el script en versión "pro":
#!/bin/sh
echo ""
echo "AutoInstalador del programa XX.XX v.1.0"
echo ""
# Creamos un directorio temporal donde lo extraeremos
export WRKDIR=`mktemp -d /tmp/selfextract.XXXXXX`
# Contamos las lineas de este fichero con awk. La cadena
# "__AQUI_SIGUE_EL_BINARIO__" debe ser la ultima linea del
# script. Le sumamos una a la ultima linea y la guardamos
# en SKIP.
SKIP=`awk '/^__AQUI_SIGUE_EL_BINARIO__/ { print NR + 1; exit 0; }' $0`
# Cogemos la parte de este archivo a partir de la línea 11 y
# se la mandamos al tar para que la descomprima en el temporal.
tail -n +$SKIP $0 | tar xvz -C $WRKDIR
# Nos vamos al temporal y ejecutamos el script de instalacion
PREV=`pwd`
cd $WRKDIR
./install.sh
# Borramos los ficheros temporales
cd $PREV
rm -rf $WRKDIR
exit 0
__AQUI_SIGUE_EL_BINARIO__
Pues nada más. Seguiré mirando la forma de crear buenos instaladores. Desde luego, el script anterior es muy pobre. Se puede mejorar añadiendo un bonito interfaz en modo texto con dialog o sus equivalentes en modo gráfico gdialog y kdialog aunque no se... me sigue gustando más la de modo texto; además es más estándar y como diría Neal Stephenson, "En el principio fue la línea de comandos".
¿Se os olvidan los cumpleaños de vuestros amigos? ¿No recordáis cuándo son las fiestas? ¡En 5 minutos podéis solucionarlo!
Material
Necesitaremos instalar el paquete birthday en la máquina que más habitualmente utilicemos:
#apt-get install birthday
Configuración
Editaremos un fichero que no existe aún: ~/.birthdays. Yo recomiendo crear una carpeta (por ejemplo ~/.birthday) donde organizar un poco mejor todos los cumpleaños y eventos. Luego comentaré cómo lo tengo yo configurado.
El formato de este fichero es lo mejor: sencillo. consiste en poner lo que quieras, un igual (=) y la fecha en formato dd/mm, dd/mm/yy o bien dd/mm/yyyy. Ya está. Acordaros de pulsar un intro al final o se os comerá la última de las letras :-D. Ejemplito:
Pepito=15/12/1978
Fulanito=01/09/1977
Cuando hayáis metido 2 ó 3 (que sucendan en las próximas 3 semanas, por favor), probad a ejecutar
$birthday
Os mostrará los eventos de las próximas 3 semanas.
Mi configuración
Dado que el ficherito ~/birthdays te permite incluir ficheros, el mío sólo contiene inclusiones. Las fechas se encuentran en varios ficheros dentro del directorio ~/birthday, donde tengo los ficheros "amigos", "familia" y "fiestas" (éste último os lo podéis bajar más abajo).
¿Y cómo hago para que no sea muy pesado pero me avise antes de que ocurran las cosas? Pues metiéndolo en mi .bashrc. De esa manera, cada vez que abro una consola me aparecen 3 ó 4 líneas con los próximos eventos :-D.
Comentarios
Vaaaale, sí. Ya sé que este truco no os va a salvar la vida y que posiblemente no os importe un carajo, ¿pero cuántos de vosotros conocíais este paquetito?
El caso es que me he picao y ya he comenzado a hacer un programita similar, con idiomas, compatible pero ampliable. En python, por supuesto. Le meteré alguna opción para colorines y esas cosas.
La etiqueta de este nodo es “historia” aunque creo que le iría mejor otra como “scifi”. Nada que comentar del tema, podéis verlo y oirlo vosotros mismos… espeluznante…
Desde hace algún tiempo (acabo de descubrir que muy posiblemente desde GNOME 2.14), el terminal de GNOME me muestra las tildes, eñes y otros caracteres como caritas. Aunque al principio resulta gracioso, terminas cansándote :-D. Aquí lo arreglaremos de la manera más sencilla.
Arreglarlo
Para arreglarlo basta con editar el fichero ~/.dmrc y añadir al final la línea Language=es_ES.iso88591. Si lo preferís, basta con ejecutar lo siguiente:
$echo"Language=es_ES.iso88591">> .dmrc
¿Qué estaba pasando?
Lo que pasa es que en los GNOMEs anteriores se tomaban las locales del sistema, pero parece que en las últimas no lo hace muy bien. Por ello, al fallar la carga, tomaba las locales por defecto, es decir, ANSI_X3.4-1968 que no tiene tildes y demás.
Yo sabía que se podía cambiar en el menú del gnome-terminal, en "terminal"->"Establecer codificación de caracteres", pero es un rollo tener que hacerlo para cada pestaña del gnome-términal. Así, sólo lo hacía cuando tenía que leer algo un poco grande :-D
Editando el fichero .dmrc le decimos a GDM cuál es el "encoding" que queremos utilizar, puediendo elegir entre los que configuramos con el paquete locales. Para cambiar los "encodings" compilados en "locales", se hace así (los chicos de UBUNTU no sé cómo leches lo hace, pero en Debian se hace así):
#dpkg-reconfigure locales
Y para saber cuáles son los disponibles (qué cadenitas poner en "Language=XXXXXXX"), basta con hacer:
$locale -a
Enlaces
Llevo buscando bastante tiempo, y al final lo encontré en el blog de David Pashley. Este documento es, básicamente, una transcripción de lo que se comenta en el enlace.
Pues nada... otro script tonto pero que puede ser útil... este script es para bash pero no lo invocaremos directamente... sino que será una opción nueva en nautilus... más cómodo imposible! :D
Sabéis lo que es un CBZ o un CBR?, si no lo sabéis os lo digo: Comic Book Zip y Comic Book Rar. En vez de tener los jpeg's de un comic (o una serie de imágenes) por ahí como si fueran hojas sueltas... los comprimimos en un zip (o rar), le ponemos esa extensión y ya tenemos un comic book :D. Si además os instaláis el paquete comix tendréis un estupendo visualizador de comics en el PC.
Nota: una cosa muy chula (a mi me lo parece) que sucede al instalar comix es que se registran esos dos tipos de fichero y el nautilus te crea unos bonitos thumbs con las portadas de los comics al visitar esos directorios... muy mono...
Hola, al terminar la party quijote 2006 me ha entrado la curiosidad para saber como se monta un hub de direct connect. Se que es sencillo porque me lo han comentado, pero no he encontrado nada, así que he pensado que poniéndolo aquí quizá alguien supiera del tema o me remitiera a algo o alguien que lo sepa. El caso es que me gustaría poner un pequeño servidor en mi residencia del año que viene para compartir por lan. Un saludo y gracias!
Me ha llamado la atención esta guía de malas prácticas. Es curioso hasta qué punto muchos de nosotros seguimos o hemos seguido alguna vez estos consejos… ¿tú no? ¿seguro?