Archivos para 3 agosto 2010



Crear un paquete .deb manualmente

Lo anterior está muy bien, pero… y si quiero crear un .deb personalizado para por ejemplo copiar mis scripts bash en alguna ruta, o copiar alguna imágen en alguna otra ruta (por ejemplo: un .deb que me instale fondos de pantalla nuevos en /usr/share/backgrounds). ¿Como lo hariamos?.

Veamos un ejemplo muy simple, pero que sentara las bases para que cualquiera pueda “fabricarse” su .deb a medida.

Por ejemplo, yo tengo un script llamado “execute.sh” que quiero instalar en /usr/bin del sistema mediante un fichero .deb. Los pasos a ejecutar serian:

1. Creamos un directorio nuevo en el directorio donde tengamos los ficheros que queremos usar. Podemos usar cualquier nombre, pero luego mantener esa referencia. En el ejemplo yo uso “deb”

mkdir deb

2. Sobre ese directorio recien creado, tenemos que recrear la estructura destino que queremos utilizar. Como yo quiero copiar mi script sh en /usr/bin, entonces creo el directorio /deb/usr/bin:

mkdir -p ./deb/usr/bin

3. Ahora copiamos el script a ese directorio (o los ficheros que quiera añadir). Si quisiera copiar a otro directorio tendriamos que reconstruir a partir de “deb” esos directorios nuevos.

cp ./execute.sh ./deb/usr/bin

4. Ahora creamos un subdirectorio llamado DEBIAN, que contendra el fichero de paquete de control. Este es un fichero con un determinado formato y que proporciona informacion del contenido del paquete .deb.

mkdir ./deb/DEBIAN

5. Creamos un fichero de control con el siguiente comando:

touch ./deb/DEBIAN/control

6. Abrimos el fichero de control y copiamos el siguiente texto. Modificando las partes que sean necesarias.

Package: Aquielnombredelpaquete (cuidado, no se permiten espacios o caracteres _ )
Priority: optional
Section: misc
Maintainer: aquielnombredelcreadorysuemail
Architecture: all
Version: 1.0
Depends: package1, package2, ......... (si tiene alguna dependencia por aqui el nombre)
Description: aqui_una_descripcion_corta_del_paquete
 Y aqui una descripcion larga (Ojo, no elimines el espacio inicial al comienzo de esta linea)
(y por ultimo elimina esta linea y deja una linea vacia)

¿Lioso?, Tranquilo, aqui te dejo un ejemplo de mi fichero de control:

Package: SCRIPTS
Priority: optional
Section: misc
Maintainer: piwi
Architecture: all
Version: 1.0
Depends:
Description: Pack de scripts con utilidades varias
 Contiene scripts de utilidad general para administrar el sistema, utilidades como son ssh remoto,
telnet remoto, scp, matar procesos, etc...

7. Vale, ahora cambiamos el propietario de ese directorio:

sudo chown -R root.root ./deb

8. Y por ultimo creamos el paquete en formato .deb:

dpkg -b ./deb /ruta/donde/quieres/dejar/el/nombre_paquete.deb

Por ejemplo: dpkg -b ./deb /home/jose/SCRIPTS.deb me generaria mi paquete .deb con mi script listo para instalar.

¿Complicado?. Pues tranquilo otra vez, en el siguiente post veremos como hacer todo esto de manera grafica.
Pero queria enseñarlo primero de manera manual, para que cualquiera pudiera comprender las bases minimas de la anatomia de un fichero .deb.

Fuente | UbuntuForums

Checkinstall, Crear paquetes .deb facilmente a partir del código

Hasta ahora hemos usado muchas veces ficheros en formato .deb para instalar, otras veces sin embargo no existen paquetes en formato binario .deb para instalar cierta aplicación y lo que el desarrollador nos proporciona es el código fuente de la misma. Veamos que crear un fichero .deb a partir del código es muy simple con CheckInstall.

Lo primero es instalarlo (si no lo tienes ya):

sudo aptitude install checkinstall

Ahora cuando tengas un codigo los pasos habituales por lo general son:

meterte en el directorio donde has descomprimido el codigo fuente y ejecutar:

$ ./configure
Para preparar el fichero de compilacion.

$ make
Para compilar.

$ sudo make install
Para instalar el binario ya compilado.

Pues bien, si queremos generar un fichero .deb a partir del codigo solo tendriamos que sustituir el ultimo paso (sudo make install) por:

$ sudo checkinstall

Un ejemplo, por ejemplo si quieres compilar el codigo fuente de wine 1.3 los pasos serian.

- Nos descargamos el codigo fuente de wine 1.3 desde el siguiente enlace. Ojo, puede que si lees este post mas tarde de Agosto 2010 la version de wine haya cambiado, tendras que buscar en la web oficial el enlace al codigo fuente correspondiente.

- Despues añadimos las siguientes instrucciones, solo son necesarias para compilar wine:


sudo apt-get build-dep wine
sudo apt-get install fakeroot

- Descomprimimos el codigo, nos metermos al directorio y ejecutamos: (Ojo, la compilacion de wine a mi me llevo mas de 15 minutos).

./configure
make
sudo checkinstall

En principio podemos pulsar intro en las preguntas que nos hace checkinstall, o cambia la respuesta si quieres modificar algun parametro.


checkinstall 1.6.1, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran
Este software es distribuído de acuerdo a la GNU GPL

The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs? [y]: n

*****************************************
**** Debian package creation selected ***
*****************************************

Este paquete será creado de acuerdo a estos valores:

0 - Maintainer: [ root@soledad ]
1 - Summary: [ Wine 1.3 ]
2 - Name: [ wine ]
3 - Version: [ 1.3.0 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ checkinstall ]
7 - Architecture: [ i386 ]
8 - Source location: [ wine-1.3.0 ]
9 - Alternate source location: [ ]
10 - Requires: [ ]
11 - Provides: [ wine ]

Introduce un número para cambiar algún dato u oprime ENTER para continuar:

Al finalizar, tendremos un .deb de wine 1.3 en el directorio. Pues bien, el proceso para cualquier otra aplicacion que compiles mediante (./configure/make/sudo make install) seria similar.

Enlace | CheckInstall
Relacionado | UbuCompilator

Ambiance Theme para Gnome Shell

Bonito tema si usas Gnome Shell. Lo instalas con:

Backup your /usr/share/gnome-shell/theme directory.
Extract the theme.zip and copy the theme directory to /usr/share/gnome-shell/
Restart GNOME Shell by Alt, F2, then type r and press enter.

o lo que es lo mismo:

Saca una copia de seguridads de tu directorio /usr/share/gnome-shell/theme
Extrae theme.zip (descomprime) y copia el directorio del tema a /usr/share/gnome-shell/
Reinicia GNOME Shell mediante Alt, F2 entonces teclea “r” y pulsa Intro.

Descarga | Gnome-Look

Arbeit AE theme

Descarga | Gnome-Look

Algo curioso: ¿Que hay en estas 19 lineas de código?

long h[4];t(){h[3]-=h[3]/3000;setitimer(0,h,0);}c,d,l,v[]={(int)t,0,2},w,s,I,K
=0,i=276,j,k,q[276],Q[276],*n=q,*m,x=17,f[]={7,-13,-12,1,8,-11,-12,-1,9,-1,1,
12,3,-13,-12,-1,12,-1,11,1,15,-1,13,1,18,-1,1,2,0,-12,-1,11,1,-12,1,13,10,-12,
1,12,11,-12,-1,1,2,-12,-1,12,13,-12,12,13,14,-11,-1,1,4,-13,-12,12,16,-11,-12,
12,17,-13,1,-1,5,-12,12,11,6,-12,12,24};u(){for(i=11;++i<264;)if((k=q[i])-Q[i]
){Q[i]=k;if(i-++I||i%12<1)printf("\033[%d;%dH",(I=i)/12,i%12*2+28);printf(
"\033[%dm  "+(K-k?0:5),k);K=k;}Q[263]=c=getchar();}G(b){for(i=4;i--;)if(q[i?b+
n[i]:b])return 0;return 1;}g(b){for(i=4;i--;q[i?x+n[i]:x]=b);}main(C,V,a)char*
*V,*a;{h[3]=1000000/(l=C>1?atoi(V[1]):2);for(a=C>2?V[2]:"jkl pq";i;i--)*n++=i<
25||i%12<2?7:0;srand(getpid());system("stty cbreak -echo stop u");sigvec(14,v,
0);t();puts("\033[H\033[J");for(n=f+rand()%7*4;;g(7),u(),g(0)){if(c<0){if(G(x+
12))x+=12;else{g(7);++w;for(j=0;j<252;j=12*(j/12+1))for(;q[++j];)if(j%12==10){
for(;j%12;q[j--]=0);u();for(;--j;q[j+12]=q[j]);u();}n=f+rand()%7*4;G(x=17)||(c
=a[5]);}}if(c==*a)G(--x)||++x;if(c==a[1])n=f+4**(m=n),G(x)||(n=m);if(c==a[2])G
(++x)||--x;if(c==a[3])for(;G(x+12);++w)x+=12;if(c==a[4]||c==a[5]){s=sigblock(
8192);printf("\033[H\033[J\033[0m%d\n",w);if(c==a[5])break;for(j=264;j--;Q[j]=
0);while(getchar()-a[4]);puts("\033[H\033[J\033[7m");sigsetmask(s);}}d=popen(
"stty -cbreak echo stop \023;sort -mnr -o HI - HI;cat HI","w");fprintf(d,
"%4d from level %1d by %s\n",w,l,getlogin());pclose(d);}

Si quieres ver de que se trata, entra en Bitelia pero si te gustan los riesgos, Copia el contenido anterior (código c ofuscado) en un archivo de texto, por ejemplo “t.c”

Compilalo:

gcc t.c -o t

y lo ejecutas:

./t

Voila!!! Sorpresa!!! (las teclas son j, k y l. q para salir)

Internet a 61 megas de media en Japón, ocho en Portugal y uno en España

Internet a 61 megas de media en Japón, ocho en Portugal y uno en España, y aún así hay alguna que otra persona que dice que somos muy malos, que somos unos piratones, que consumimos mucho ancho de banda y que se están pensando en quitar la tarifa plana y que se pague por descarga. Ay!! el ansia… el ansia…

Visto en | Meneame

Mandelbrot: Un viaje apasionante al interior de las matematicas

Increible el video que encuentro en Microsiervos y que nos puede servir (por que no) como fondo de pantalla dinamico. Un viaje por el interior de un Fractal.

Enlace | Microsiervos

Tip: Ejecutar ficheros .bat con wine

Bueno, no se si alguien le servira de utilidad porque principalmente ejecutamos ficheros con extension .exe, pero aqui va. Si alguien necesita ejecutar un fichero .bat con wine, que pruebe el siguiente comando:

$ wineconsole ruta/fichero.bat

Ejemplo: wineconsole backup.bat

Sylvester está que lo “explota”

Enlace al video | Salon del Mal

Sencillo script en Bash para ejecutar un comando remoto mediante SSH

Estamos acostumbrados a ejecutar de manera muy simple comandos en nuestra máquina local y si esto fuera tambien fácil de hacer respecto a otra máquina remota. Veamoslo con un sencillo script en bash (nota: necesitas tener “expect” instalado en tu máquina local).

Crea un script “execute.sh” con el siguiente contenido:

#!/bin/bash
HOST="aqui_pon_la_maquina_remota"
USER="aqui_pon_el_usuario_remoto"
PASS="aqui_pon_el_password_remoto"
CMD=$@
VAR=$(expect -c "
spawn ssh -o StrictHostKeyChecking=no $USER@$HOST $CMD
match_max 100000
expect \"*?assword:*\"
send -- \"$PASS\r\"
send -- \"\r\"
expect eof
")
echo "==============="
echo "$VAR"

Y listo!, dale permisos de ejecución

$ chmod +x execute.sh

y ya puedes emplearlo, por ejemplo con:

$ ./execute.sh “ls -l”

Te mostrara un listado de archivos pero de la maquina remota.

Genial, para automatizar algunas tareillas.

Actualizado | Ya de paso y basandome en el ejemplo os dejo los scripts “download.sh” y “upload.sh” que acabo de implementar y pueden usarse para subir y bajar ficheros al servidor mediante scp.

#!/bin/bash

HOST="aqui_servidor"
USER="aqui_usuario"
PASS="aqui_password"
CMD=$@

VAR=$(expect -c "
spawn scp -r $USER@$HOST:$CMD . 
match_max 100000
expect \"*?assword:*\"
send -- \"$PASS\r\"
send -- \"\r\"
expect eof
")
echo "==============="
echo "$VAR"

#!/bin/bash

HOST="aqui_servidor"
USER="aqui_usuario"
PASS="aqui_password"
FICHEROS=$1
DIRECTORIO_REMOTO=$2

VAR=$(expect -c "
spawn scp -r $FICHEROS $USER@$HOST:$DIRECTORIO_REMOTO 
match_max 100000
expect \"*?assword:*\"
send -- \"$PASS\r\"
send -- \"\r\"
expect eof
")
echo "==============="
echo "$VAR"

Gracias a | nixCraft

« Página anteriorPágina siguiente »



The next version of Ubuntu is coming soon




¿Es compatible tu equipo con Ubuntu?


( Muchos fondos de pantalla, aqui )

DESCARGATE SCIFI LIFE

365 Dias de Soledad
Me debes los sueños, las promesas y las noches rotas. Me debes la paz, la sonrisa y la esperanza robadas. Me debes la sangre, las lágrimas y el sudor vertido. Me debes las noches vacías, los abrazos anhelados. Me debes un beso de ajenjo de tu amarga boca.

The Ubuntu Counter Project - user number # 11961
Geo Visitors Map

 

agosto 2010
L M X J V S D
« jul   sep »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Blog Stats

  • 20,171,468 hits

Seguir

Get every new post delivered to your Inbox.

Únete a otros 606 seguidores