<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>sandboxed &#187; técnico</title>
	<atom:link href="http://www.sandboxed.org/index.php/tag/tecnico/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sandboxed.org</link>
	<description>mostly harmless...</description>
	<lastBuildDate>Tue, 30 Aug 2011 14:54:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Techtip: parar/suspender máquinas virtuales colgadas bajo VMware VSphere</title>
		<link>http://www.sandboxed.org/index.php/2010/09/techtip-pararsuspender-maquinas-virtuales-colgadas-bajo-vsphere/</link>
		<comments>http://www.sandboxed.org/index.php/2010/09/techtip-pararsuspender-maquinas-virtuales-colgadas-bajo-vsphere/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 14:19:36 +0000</pubDate>
		<dc:creator>desleido</dc:creator>
				<category><![CDATA[tecnología]]></category>
		<category><![CDATA[techtip]]></category>
		<category><![CDATA[técnico]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://www.sandboxed.org/?p=561</guid>
		<description><![CDATA[En varias ocasiones es posible que se os haya colgado una máquina virtual bajo VSphere, y no hay ninguna manera de conseguir parar ó suspender la máquina virtual que se quedó colgada a través de la consola de cliente. Puede ser el caso de que ocurra cuando estemos realizando ó consolidando un snapshot, o que [...]]]></description>
			<content:encoded><![CDATA[<p>En varias ocasiones es posible que <strong>se os haya colgado una máquina virtual bajo VSphere</strong>, y no hay ninguna manera de conseguir parar ó suspender la máquina virtual que se quedó colgada a través de la consola de cliente.</p>
<p>Puede ser el caso de que ocurra cuando estemos realizando ó consolidando un snapshot, o que al haber contención en el servidor (sobrecarga de consumo de memoria, procesador, acceso a disco, red&#8230;) las máquinas dejen de responder a través de la consola de cliente.</p>
<p>No os <a href="http://buscon.rae.es/draeI/SrvltConsulta?LEMA=agostar">agostéis demasiado</a>, siempre hay varias opciones:</p>
<ul>
<li>Correr a actualizar rápidamente el currículum <a title="A Infojobs, hacia el infinito y más allá" href="http://www.infojobs.net/" target="_blank">a la página de InfoJobs</a>&#8230;</li>
<li><a title="Varias formas de conectarse a VCenter/VSphere" href="http://www.petri.co.il/5_ways_to_adminster_esx_server.htm" target="_blank">Quedarse atónito ante la consola de cliente</a>, a la espera de que pase algo.</li>
<li><a title="¿Qué significa reiniciar en frío o caliente?" href="http://en.wikipedia.org/wiki/Booting#Rebooting" target="_blank">Reiniciar en frío/caliente el servidor físico</a> donde se aloja la máquina virtual.</li>
<li>Intentar parar/suspender la máquina virtual <a title="Si quieres saber cómo acceder por SSH, toma autorreferencia!" href="http://www.sandboxed.org/index.php/2010/07/techtip-accediendo-a-vsphere-esxesxi-mediante-ssh-con-claves-publicas/" target="_blank">vía SSH contra el servidor VSphere ESX/ESXi</a>.</li>
</ul>
<p>Sí, claro: la mejor opción es la última y de paso conservar el puesto de trabajo. Así que tenemos varias vías para conseguir que nuesta máquina virtual rebelde responda a nuestros designios.</p>
<p><span id="more-561"></span></p>
<p><strong>::::Atención::::</strong> si lo que os interesa es parar la máquina <strong>deprisa, corriendo y sin piedad</strong>, podéis saltar al último punto del artículo (0 +d). Para los <strong>pacientes y prudentes</strong>, mejor seguir el artículo tal cual (de 0 a d, junto con el Epílogo).</p>
<p><a href="#listar">0) Listar las máquinas virtuales en ejecución desde línea de comandos</a><br />
<a href="#suspender">a) Intentar suspender la máquina virtual desde línea de comandos</a><br />
<a href="#fsuspender">b) Forzar la suspensión de la máquina virtual desde línea de comandos</a><br />
<a href="#apagar">c) Intentar parar la máquina virtual desde línea de comandos</a><br />
<a href="#fapagar">d) Forzar la parada de la máquina virtual desde línea de comandos</a><br />
<a href="#epilogo">Epílogo: Socorro! No funciona!</a></p>
<h4><a name="listar">0) Listar las máquinas virtuales en ejecución desde línea de comandos</a></h4>
<p>Una vez conectados por SSH al servidor en cuestión, consultaremos primero qué máquinas virtuales están en ejecución sobre el servidor ESX/ESXi. Para ello usaremos el comando <strong>vm-support</strong>. </p>
<p><strong>::::Nota::::</strong> Por lo que he visto, en los servidores ESX, el identificador de la máquina viene etiquetado como <strong>vmid</strong>, mientras que en los servidores ESXi, el identificador de la máquina viene etiquetado como <strong>wid</strong></p>
<pre>~ # vm-support -x
VMware ESX Support Script 1.33

Available worlds to debug:

wid=676864     vm.virtual.1
wid=1296980    vm.virtual.2
wid=1216967    vm.virtual.3
wid=1234567    vm.datarecovery
</pre>
<p>Nos será de utilidad conocer los identificadores asociados a las máquinas virtuales que estén en ejecución, pues puede que los necesitemos más adelante.</p>
<h4><a name="suspender">a) Intentar suspender la máquina virtual desde línea de comandos</a></h4>
<p>Una vez visto que la máquina rebelde sigue en ejecución gracias al comando anterior, intentaremos suspenderla (en algunos casos, suele ser suficiente para poder retomar el control de la máquina más tarde). </p>
<p>El comando que utilizaremos en el mejor de los casos es <strong>vmware-cmd</strong>, especificando junto a él la <strong>ruta completa</strong> donde esté ubicado el archivo de configuración .vmx de la máquina virtual, y <strong>el comando a ejecutar</strong> (en este caso, suspend con el parámetro soft/trysoft).</p>
<p>Antes y después de lanzar el comando, controlaremos el estado de la máquina virtual con el comando <strong>getstate</strong>.</p>
<pre>~# vmware-cmd /vmfs/volumes/[...]/vm-datarecovery.vmx getstate
getstate() = on

~# vmware-cmd /vmfs/volumes/[...]/vm-datarecovery.vmx suspend trysoft
[...esperamos un tiempo prudencial...]

~# vmware-cmd /vmfs/volumes/[...]/vm-datarecovery.vmx getstate
getstate() = suspended</pre>
<p>En el caso de que esto no funcione, podemos intentar lanzar el comando algo más agresivamente:</p>
<pre>~# vmware-cmd /vmfs/volumes/[...]/vm-datarecovery.vmx getstate
getstate() = on

~# vmware-cmd /vmfs/volumes/[...]/vm-datarecovery.vmx suspend hard
[...esperamos un tiempo prudencial...]

 ~# vmware-cmd /vmfs/volumes/[...]/vm-datarecovery.vmx getstate
getstate() = suspended</pre>
<p>Si esto no funcionó, pasemos al siguiente punto.</p>
<h4><a name="fsuspender">b) Forzar la suspensión de la máquina virtual desde línea de comandos</a></h4>
<p>Ya intentado el punto anterior, tendremos que lanzarnos a usar el comando <strong>vm-support</strong> junto con el <strong>vmid/wid</strong> que obtuvimos al principio:</p>
<pre> ~]# vm-support -Z 1234567
VMware ESX Support Script 1.30

Can I include a screenshot of the VM 1234567? [y/n]: y
Preparing files: /
Grabbing data &#038; core files for world 1234567. This will take 5 - 10 minutes.
Taking performance snapshots.  This will take about 300 seconds.
[...]
Creating tar archive ...

File: '/root/esx-2010-09-27--15.04.6179.tgz'
NOTE: esx-2010-09-27--15.04.6179.tgz is greater than 20 MB.
Please do not attach this file when submitting an incident report.
Please contact VMware support for an ftp site.
To file a support incident, go to http://www.vmware.com/support/sr/sr_login.jsp
To see the files collected, run: tar -tzf '/root/esx-2010-09-27--15.04.6179.tgz'

Done.
</pre>
<p>Habrá que esperar un poco, y finalmente consultar el estado de nuevo con <strong>vm-support -x</strong> ó <strong>vmware-cmd ruta-fichero.vmx getstate</strong> para comprobar que se haya suspendido la máquina virtual con éxito.</p>
<p>A malas si no funcionó, podemos probar a pararla del todo.</p>
<h4><a name="apagar">c) Intentar parar la máquina virtual desde línea de comandos</a></h4>
<p>El comando que utilizaremos en el menos peor de los casos es <strong>vmware-cmd</strong>, especificando junto a él la <strong>ruta completa</strong> donde esté ubicado el archivo de configuración .vmx de la máquina virtual, y <strong>el comando a ejecutar</strong> (en este caso, stop con el parámetro soft/trysoft).</p>
<pre>~# vmware-cmd /vmfs/volumes/[...]/vm-datarecovery.vmx getstate
getstate() = on

~# vmware-cmd /vmfs/volumes/[...]/vm-datarecovery.vmx stop trysoft
[...esperaremos un tiempo razonable...]

~# vmware-cmd /vmfs/volumes/[...]/vm-datarecovery.vmx getstate
getstate() = off
</pre>
<p>En el caso de que esto no funcione, podemos intentar lanzar el comando algo más agresivamente:</p>
<pre>~# vmware-cmd /vmfs/volumes/[...]/vm-datarecovery.vmx getstate
getstate() = on

~# vmware-cmd /vmfs/volumes/[...]/vm-datarecovery.vmx stop hard
[...esperamos un tiempo prudencial...]
stop(hard) = 1

 ~# vmware-cmd /vmfs/volumes/[...]/vm-datarecovery.vmx getstate
getstate() = off</pre>
<p>Si esto no funcionó, pasemos al siguiente punto que es ya el más agresivo de todos.</p>
<h4><a name="fapagar">d) Forzar la parada de la máquina virtual desde línea de comandos</a></h4>
<p>Primero de todo, necesitaremos el identificador de la máquina virtual que podemos extraer tal como viene explicado en el primer punto del artículo. Después usaremos el comando <strong>vm-support</strong> de la siguiente forma, respondiendo SÍ, SÍ y SÍ en el proceso (como en las bodas de hollywood).</p>
<pre>~# vm-support -X 1234567
VMware ESX Support Script 1.30

Preparing files: |

Can I include a screenshot of the VM 1234567? [y/n]: y
Can I send an NMI (non-maskable interrupt) to the VM 11134? This might crash the VM, but could aid in debugging [y/n]: y
Can I send an ABORT to the VM 1234567? This will crash the VM, but could aid in debugging [y/n]: y
Preparing files: /

[...]
Creating tar archive ...

File: '/root/esx-2010-09-27--16.10.5176.tgz'
NOTE: esx-2010-09-27--16.10.5176.tgz is greater than 20 MB.
Please do not attach this file when submitting an incident report.
Please contact VMware support for an ftp site.
To file a support incident, go to http://www.vmware.com/support/sr/sr_login.jsp
To see the files collected, run: tar -tzf '/root/esx-2010-09-27--16.10.5176.tgz'
</pre>
<p>Y eso es todo.</p>
<h4><a name="epilogo">Epílogo: Socorro! No funciona!</a></h4>
<p>Muchas veces lo que resulta mejor es <strong>Suspender primero,</strong> y <strong>Parar en el peor de los casos</strong>. Si esto no funciona, podría haber algún problema con el almacenamiento del cluster ESX/ESXi. Asegúrate de que tienes conectividad con el almacenamiento, y SÓLO entonces si nada funciona es mejor reiniciar de forma ordenada el servidor ESX/ESXi.</p>
<p>Eso sí, ya en este caso habrá que enviar un ticket con todos los datos a soporte de vmware. Espero que todo esto os pueda servir de ayuda.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sandboxed.org/index.php/2010/09/techtip-pararsuspender-maquinas-virtuales-colgadas-bajo-vsphere/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TechTip: Accediendo a VSphere ESX/ESXi mediante SSH con claves públicas</title>
		<link>http://www.sandboxed.org/index.php/2010/07/techtip-accediendo-a-vsphere-esxesxi-mediante-ssh-con-claves-publicas/</link>
		<comments>http://www.sandboxed.org/index.php/2010/07/techtip-accediendo-a-vsphere-esxesxi-mediante-ssh-con-claves-publicas/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 14:52:15 +0000</pubDate>
		<dc:creator>desleido</dc:creator>
				<category><![CDATA[tecnología]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[techtip]]></category>
		<category><![CDATA[técnico]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://www.sandboxed.org/?p=370</guid>
		<description><![CDATA[Para aquellos que quieran acceder por SSH mediante clave pública (es decir, sin password) a cualquier servidor VSphere ESX ó ESXi de la rama 3.x/4.x os dejo un pequeño tutorial. Quizás es uno más de muchos, pero la gracia del asunto es que he intentado resumir los pasos y cubrir varias versiones a la vez. [...]]]></description>
			<content:encoded><![CDATA[<p>Para aquellos que quieran acceder por SSH mediante clave pública (es decir, sin password) a cualquier servidor VSphere ESX ó ESXi de la rama 3.x/4.x os dejo un pequeño tutorial.</p>
<p>Quizás es uno más de muchos, pero la gracia del asunto es que he intentado resumir los pasos y cubrir varias versiones a la vez. Tenemos dos opciones, según el tipo de ESX que se tercie&#8230;<br />
<span id="more-370"></span></p>
<hr /><strong>Disclaimer!</strong></p>
<pre>Acceder por SSH mediante la clave pública de root conlleva sus riesgos, pues se deja de emplear passwords para autenticarse en los servidores. Si tus máquina cliente no está en una red de confianza o si otras personas no confiables podrían tener acceso local a esta máquina, mejor no usar este método de autenticación. Hay otras formas de hacerlo que permiten reforzar la seguridad, con el uso de SSH-Agent y tokens USB (por ejemplo) pero que están fuera de este artículo.</pre>
<p>Quizás en un futuro me plantee extender este tema, ya veremos ;-)</p>
<hr />
<h4>Servidores ESX 3.x/4.x</h4>
<p>Será necesario conectarse físicamente al servidor para poder habilitar primero el acceso al servicio SSH.</p>
<ul>
<li>Pulsaremos <strong>Alt-F1</strong> para acceder a la consola y entraremos en el sistema con las credenciales de root.</li>
<li>Una vez dentro, habilitaremos el acceso y crearemos las claves SSH de root tal como viene a continuación.
<pre>servidorx:~# esxcfg-firewall -e sshServer
servidorx:~# ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx root@servidorx...</pre>
</li>
<li>Editamos el servicio SSH para que root pueda hacer login, y recargamos el servicio SSH de nuevo.
<pre>servidorx:~# vi /etc/ssh/sshd_config

[...]
PermitRootLogin yes
[...]

servidorx:~# /etc/init.d/ssh reload
</pre>
</li>
<li>Ya desde el servidor o cliente que queramos hacer login con autenticación mediante clave pública, copiaremos el archivo <strong>/root/.ssh/id_rsa.pub</strong> o <strong>/root/.ssh/id_dsa.pub</strong> (si no lo tuviésemos, podemos generar las claves de root mediante el comando <em>ssh-keygen</em> antes de copiarlo) dejándolo como <strong>authorized_keys2</strong> en el servidor ESX destino x.x.x.x/root/.ssh/ para acceder por SSH sin password.
<pre>clientex:~# scp /root/.ssh/id_*.pub x.x.x.x:/root/.ssh/authorized_keys2
clientex:~# ssh x.x.x.x
...</pre>
<ul>
<li>Para empezar, hay que habilitar el uso de SSH, conectados físicamente al servidor: según la versión de ESXi variará la forma de hacerlo.
<p><strong>:::::::: Para ESXi &lt; 4.1 ::</strong></p>
<p>Pulsaremos <strong>Alt-F1</strong> para acceder a la consola, aunque no aparecerá nada en pantalla salvo unas líneas de texto.  Teclearemos tal cual <strong>unsupported</strong> y pulsaremos <strong>Intro</strong>.</p>
<p>Nos preguntará el password de root del servidor directamente y que tendremos que introducir. Una vez y felizmente dentro, hay que descomentar estas líneas de /etc/inetd.conf:</p>
<pre>~ # vi /etc/inetd.conf
[...]
# Remote shell access
#
ssh stream tcp  nowait root /sbin/dropbearmulti dropbear ...
ssh stream tcp6 nowait root /sbin/dropbearmulti dropbear ...
[...]</pre>
<p>Y entonces habrá que recargar el servicio inetd de nuevo, para lo cual hay dos maneras igual de ilustrativas:</p>
<p>La primera,más salvaje nos permitirá ver qué servicios están corriendo sobre ESXi en condiciones normales.</p>
<pre>~ # /sbin/services.sh restart
Running vmware-aam stop
Stopping vmware-aam: success
Running sfcbd-watchdog stop
[...]</pre>
</li>
<p>La segunda, la fina, la que importa, <a href="http://www.restaurante-lafavorita.com">&#8216;la favorita&#8217;</a>:</p>
<pre>~ # kill -HUP `cat /var/run/inetd.pid`</pre>
<p><strong>:::::::: Para ESXi =&gt; 4.1 ::</strong></p>
<p>En las nuevas versiones, se puede habilitar directamente desde la consola de gestión estilo NCURSES que muestra ESXi, conectados físicamente al servidor. Hay que pulsar <strong>F2</strong>, introducir las credenciales y activar felizmente las siguientes opciones de este submenú.</p>
<pre>-- Troubleshooting Options
Local Tech Support (pulsamos Intro para activarlo)
Remote Tech Support (pulsamos Intro para activarlo)</pre>
<p>Nada más hay que hacer para activar el servicio SSH: sorprendente, ¿verdad?</p>
<li>Queda entonces configurar la autenticación mediante clave pública.Haremos prácticamente lo mismo que hemos hecho en el caso de los servidores ESX, <strong>con la salvedad de que no hay directorio /root</strong>, y que <strong>tampoco podemos generar el par de claves de root desde cualquier servidor ESXi</strong>.
<p>Primero generaremos desde cualquier servidor -no ESXi- el par de claves SSH que copiaremos luego al servidor ESXi destino en tres pasos:</p>
<p>a) crearemos un par de claves para identificar el usuario root del servidor ESXi ( es decir <strong>root@servidorx</strong>);<br />
b) desde el servidor ESXi destino, crearemos el directorio .ssh en la raíz, con los permisos adecuados.<br />
c) desde el cliente origen copiaremos a <strong>servidorx:/.ssh</strong> las claves recién creadas, que serán las que identifiquen al usuario root del servidor ESXi en cuestión (<strong>root@servidorx</strong>).</p>
<pre>clientex:~# ssh-keygen -t rsa -f id_rsa -C root@servidorx

(hacemos login en el servidor ESXi)
servidorx:~# mkdir .shh; chmod 600 .ssh

(volvemos al cliente de nuevo)
clientex:~# scp -r id_*.pub x.x.x.x:/.ssh/.
root@x.x.x.x's password:
id_dsa             100% |************************|   668       00:00
id_dsa.pub         100% |************************|   614       00:00</pre>
<p>Hecho  esto, generaremos el archivo <strong>authorized_keys</strong> (ojo, no authorized_keys2) que necesitaremos para poder autenticarnos con la clave pública del usuario root de nuestra máquina cliente:</p>
<pre>clientex:~# scp /.ssh/id_*.pub x.x.x.x:/.ssh/authorized_keys</pre>
<p>Acto seguido, podremos entrar en el servidor sin password como era de esperar:</p>
<pre>clientex:~# ssh x.x.x.x
You have activated Tech Support Mode.

The time and date of this activation have been sent to the system logs.
VMware offers supported, powerful system administration tools.  Please
see www.vmware.com/go/sysadmintools for details.

Tech Support Mode may be disabled by an administrative user.
Please consult the ESXi Configuration Guide for additional
important information.

~ #</pre>
</li>
<p>Espero que haya merecido la pena el viaje hasta aquí. Hasta pronto!</ul>
</li>
<h4>Servidores ESXi 3.x/4.x</h4>
<p>De cara a los servidores ESXi es algo más complicado, pues el hipervisor está totalmente integrado en el kernel y no hay consola de servicio. Esto se traduce en que el servicio SSH se proporciona a través de DropBear y no de OpenSSHServer como estábamos acostumbrados hasta ahora.</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.sandboxed.org/index.php/2010/07/techtip-accediendo-a-vsphere-esxesxi-mediante-ssh-con-claves-publicas/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>TechTip: Recompilando paquetes en debian</title>
		<link>http://www.sandboxed.org/index.php/2010/07/recompilando-paquetes-en-debian/</link>
		<comments>http://www.sandboxed.org/index.php/2010/07/recompilando-paquetes-en-debian/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 16:39:39 +0000</pubDate>
		<dc:creator>desleido</dc:creator>
				<category><![CDATA[tecnología]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[techtip]]></category>
		<category><![CDATA[técnico]]></category>

		<guid isPermaLink="false">http://www.sandboxed.org/?p=199</guid>
		<description><![CDATA[Muchas veces encontramos que los paquetes que nos ofrece debian precisan de algún ajuste, por necesidad o por capricho. A continuación viene una nota técnica de cómo hacerlo rápidamente y sin complicaciones. Para empezar, comprobaremos que nuestro archivo de repositorios /etc/apt/sources.list está configurado para que podamos descargarnos las fuentes de los paquetes que queramos modificar. [...]]]></description>
			<content:encoded><![CDATA[<p>Muchas veces encontramos que los paquetes que nos ofrece debian precisan de algún ajuste, por necesidad o por capricho. A continuación viene una nota técnica de cómo hacerlo rápidamente y sin complicaciones.</p>
<p>Para empezar, comprobaremos que nuestro archivo de repositorios <strong>/etc/apt/sources.list </strong>está configurado para que podamos descargarnos las fuentes de los paquetes que queramos modificar.<br />
<span id="more-199"></span><br />
Para ello, podemos copiar las líneas que especifiquen repositorios de paquetes que comiencen por <strong>deb</strong>, y una vez copiadas entonces sustituiremos el término <strong>deb </strong>por <strong>deb-src</strong> en cada una de ellas:</p>
<pre># vim /etc/apt/sources.list

deb http://ftp.rediris.es/debian lenny main contrib non-free
<strong>deb-src</strong> http://ftp.rediris.es/debian lenny main contrib non-free
</pre>
<p>Hecho esto, procederemos primero a actualizar las listas de paquetes disponibles. Luego instalaremos el conjunto de paquetes <strong>build-essential</strong> para poder bajarnos las fuentes, y el conjunto de paquetes <strong>devscripts </strong>para facilitar la tarea de la recompilación, instalación, etc.</p>
<p>Por último, no hay que olvidar incluir las dependencias de compilación del paquete, instalables fácilmente a través de <strong>apt-get build-dep</strong>.</p>
<p>Un buen lugar para dejar las fuentes puede ser /usr/local/src.</p>
<pre># cd /usr/local/src/.
# apt-get update
# apt-get install build-essential devscripts
# apt-get source vsftpd
[...]
dpkg-source: extracting vsftpd in vsftpd-2.0.7
dpkg-source: info: unpacking vsftpd_2.0.7.orig.tar.gz
dpkg-source: info: applying vsftpd_2.0.7-1.diff.gz

# apt-get build-dep vsftpd
</pre>
<p>A partir de aquí nos habremos descargado tanto las fuentes del paquete como el código fuente descomprimido con todos los ajustes que oficialmente el equipo Debian realizó en su día.</p>
<p>Si queremos trabajar directamente sobre el código fuente original, podemos tirar del archivo <strong>.orig.tar.gz</strong>. Por norma general, será siempre mejor seguir las líneas de mantenimiento de paquetes de Debian.</p>
<pre># ls
vsftpd-2.0.7            vsftpd_2.0.7-1.dsc
vsftpd_2.0.7-1.diff.gz  vsftpd_2.0.7.orig.tar.gz
# cd vsftpd-2.0.7</pre>
<p>A partir de aquí modificaremos la configuración de cómo se compilará el software, así como el directorio <strong>debian</strong> que contiene todos los scripts involucrados en la configuración e instalación del paquete:  Podemos  incluir archivos que no se generan por defecto, modificar las  operaciones que se realizan en la instalación y borrado de este paquete,  etc&#8230;</p>
<pre>/usr/local/src/vsftpd-2.0.7# vim defs.h
(definimos algunos parámetros previos a la compilación del paquete)
[...]define VSFTP_USERNAME_MAX      256

/usr/local/src/vsftpd-2.0.7# cd debian
/usr/local/src/vsftpd-2.0.7/debian# ls
README.Debian  copyright  vsftpd.dirs     vsftpd.logrotate  vsftpd.postrm
changelog      ftpusers   vsftpd.docs     vsftpd.manpages   watch
compat         patches    vsftpd.init.d   vsftpd.pam
control        rules      vsftpd.install  vsftpd.postinst

/usr/local/src/vsftpd-2.0.7/debian# vim ftpusers
(añadimos por ejemplo al un usuario ftp en la configuración)
ftpluser

/usr/local/src/vsftpd-2.0.7/debian# vim vsftpd.pam
(modificamos la configuración de pam, para utilizar la autenticación contra otros mecanismos)
[...]

/usr/local/src/vsftpd-2.0.7/debian# vim vsftpd.logrotate

/var/log/vsftpd.log {
    # ftpd doesn't handle SIGHUP properly
    compress
    missingok
    notifempty
    rotate 15
    daily
}</pre>
<p>Una vez hechas las modificaciones, es necesario dejar un detalle del cambio en el paquete en el archivo <strong>debian/control</strong>, mediante el uso de la herramienta <strong>debchange</strong>.</p>
<p>Es siempre importante indicar de que se trata de una versión local (-l) para identificar el paquete que resultará de la recompilación, añadiendo nuestra dirección de correo, etc. Hecho esto, compilaremos el paquete mediante el uso de <strong>dpkg-buildpackage</strong> desde la raíz del directorio del código fuente.</p>
<pre>/usr/local/src/vsftpd-2.0.7/debian# debchange -u low -l .sandboxed. &amp; cd ..
vsftpd (2.0.7-1.sandboxed.1) unstable; urgency=low

* New maintainer, local version por personal use.
* This version supports now long usernames, tailored for an specific environment.-- sandbox 

&lt;sandbox@boxed.4.u.net&gt;  Mon, 19 Jul 2010 18:08:45 +0200

vsftpd (2.0.7-1) unstable; urgency=medium
* New maintainer, taking over package from Matej.
* New upstream release (Closes: #497149):
[...]

/usr/local/src/vsftpd-2.0.7# dpkg-buildpackage -rfakeroot -D -us -b &amp; cd ..</pre>
<p>Por último, descenderemos a la raíz de /usr/local/src e instalaremos el paquete recompilado&#8230;y ya habremos terminado.</p>
<pre>/usr/local/src7# dpkg -i vsftpd_2.0.7-1.sandboxed.1_i386.deb</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.sandboxed.org/index.php/2010/07/recompilando-paquetes-en-debian/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

