<?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>Hiparco &#187; GNU/Linux</title>
	<atom:link href="http://guimi.net/blogs/hiparco/category/gnulinux/feed/" rel="self" type="application/rss+xml" />
	<link>http://guimi.net/blogs/hiparco</link>
	<description>Recetas y trucos de GNU/Linux e informática en general</description>
	<lastBuildDate>Mon, 02 Apr 2012 11:53:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>(Des)Activar Ctrl+Alt+Backspace en Gnome</title>
		<link>http://guimi.net/blogs/hiparco/desactivar-ctrlaltbackspace-en-gnome/</link>
		<comments>http://guimi.net/blogs/hiparco/desactivar-ctrlaltbackspace-en-gnome/#comments</comments>
		<pubDate>Tue, 27 Mar 2012 21:05:06 +0000</pubDate>
		<dc:creator>Güimi</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>

		<guid isPermaLink="false">http://guimi.net/blogs/hiparco/?p=1010</guid>
		<description><![CDATA[Desde hace unas cuantas versiones, el escritorio Gnome no permite reiniciar el servidor X con la combinación Ctrl+Alt+Backspace. Para rehabilitarla hay que ir al menú &#8216;Sistema->Preferencias->Teclado&#8216; y una vez ahí en la pestaña &#8216;Distribuciones&#8217; seleccionar &#8216;Opciones&#8217;. La opción que buscamos es &#8216;Key sequence to kill the X server&#8216;: Gnome, kill, X server]]></description>
			<content:encoded><![CDATA[<p>Desde hace unas cuantas versiones, el escritorio Gnome no permite reiniciar el servidor X con la combinación Ctrl+Alt+Backspace.<br />
Para rehabilitarla hay que ir al menú &#8216;<strong>Sistema->Preferencias->Teclado</strong>&#8216; y una vez ahí en la pestaña &#8216;Distribuciones&#8217; seleccionar &#8216;Opciones&#8217;.</p>
<p>La opción que buscamos es &#8216;<strong>Key sequence to kill the X server</strong>&#8216;:<br />
<a href="http://guimi.net/blogs/hiparco/wp-content/2012/03/Gnome-Ctrl+Alt+Backspace.png"><img src="http://guimi.net/blogs/hiparco/wp-content/2012/03/Gnome-Ctrl+Alt+Backspace-300x230.png" alt="" title="Gnome-Ctrl+Alt+Backspace" width="300" height="230" class="alignnone size-medium wp-image-1012" /></a></p>
<div class="keywords">Gnome, kill, X server</div>
]]></content:encoded>
			<wfw:commentRss>http://guimi.net/blogs/hiparco/desactivar-ctrlaltbackspace-en-gnome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SVN+SSH: Conectar con un servidor SVN mediante SSH</title>
		<link>http://guimi.net/blogs/hiparco/svnssh-conectar-con-un-servidor-svn-mediante-ssh/</link>
		<comments>http://guimi.net/blogs/hiparco/svnssh-conectar-con-un-servidor-svn-mediante-ssh/#comments</comments>
		<pubDate>Thu, 08 Mar 2012 09:01:41 +0000</pubDate>
		<dc:creator>Güimi</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Prompt]]></category>

		<guid isPermaLink="false">http://guimi.net/blogs/hiparco/?p=958</guid>
		<description><![CDATA[Hay bastantes articulillos sobre como conectar con un servidor SVN mediante SSH, utilizando la opción directa, que no nos permite usar claves de ssh (ssh keys), ni modificar el puerto de ssh, ni en definitiva usar toda la potencia de ssh. El sistema directo para configuraciones sencillas de ssh: $ svn co svn+ssh://servidor/proyecto Sin embargo [...]]]></description>
			<content:encoded><![CDATA[<p>Hay bastantes articulillos sobre como conectar con un servidor SVN mediante SSH, utilizando la opción directa, que no nos permite usar claves de ssh (ssh keys), ni modificar el puerto de ssh, ni en definitiva usar toda la potencia de ssh.<br />
El sistema directo para configuraciones sencillas de ssh:<br />
<font class="comando">$ svn co svn+ssh://servidor/proyecto</font></p>
<p>Sin embargo hay una forma casi igual de sencilla y mucho más potente, con dos sesiones, usando los <a href="http://guimi.net/blogs/hiparco/configuracion-de-ssh/">túneles SSH</a>.<br />
Primero, desde el cliente, hacemos un túnel ssh desde el puerto 3690 del servidor a nuestro puerto local 3690:<br />
<font class="comando">$ ssh usuario@servidor -p xxxx -i id_dsa_key_ssh -L 3690:localhost:3690</font></p>
<p>A partir de hay usamos svn como si estuviese instalado en local:<br />
<font class="comando">$ svn co svn://servidor/proyecto</font></p>
<p>Los túneles ssh son uno de los mejores inventos&#8230; se pueden usar para acceder &#8220;localmente&#8221; a cualquier servidor externo, de cualquier servicio (postgres, svn&#8230;) de forma segura y cómoda.</p>
<div class="keywords">svn, shh, tunel ssh, subversion</div>
]]></content:encoded>
			<wfw:commentRss>http://guimi.net/blogs/hiparco/svnssh-conectar-con-un-servidor-svn-mediante-ssh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Expect: Scripts para procesos interactivos</title>
		<link>http://guimi.net/blogs/hiparco/expect-scripts-para-procesos-interactivos/</link>
		<comments>http://guimi.net/blogs/hiparco/expect-scripts-para-procesos-interactivos/#comments</comments>
		<pubDate>Tue, 06 Mar 2012 09:48:52 +0000</pubDate>
		<dc:creator>Güimi</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Prompt]]></category>

		<guid isPermaLink="false">http://guimi.net/blogs/hiparco/?p=941</guid>
		<description><![CDATA[Algunos procesos no pueden automatizarse simplemente con bash, porque requieren la interacción con el usuario, por ejemplo un login de ssh. En mi caso quería automatizar el montaje de comparticiones de Windows 2003, y aunque podía enviar la clave en el comando, esto queda grabado en los registros de sistema&#8230; no me gusta que se [...]]]></description>
			<content:encoded><![CDATA[<p>Algunos procesos no pueden automatizarse simplemente con bash, porque requieren la interacción con el usuario, por ejemplo un login de ssh.<br />
En mi caso quería automatizar el montaje de comparticiones de Windows 2003, y aunque podía enviar la clave en el comando, esto queda grabado en los registros de sistema&#8230; no me gusta que se registre mi clave:</p>
<pre class="codigo">
<font class="comentario">#!/bin/bash
#
# unidades_red 0.2 - GPL
# (c) 2007-05 Guimi
# http://guimi.net
#
# Ult mod: Guimi 2012-03
#

# Solicitamos la clave</font>
echo  -n "Introduzca su clave de red: "
<font class="comentario"># Tomamos nota del estado de stty</font>
oldmodes=`stty -g`
<font class="comentario"># Quitamos el echo para que no se muestre la clave</font>
stty -echo
<font class="comentario"># Leemos la clave</font>
read clave
<font class="comentario"># Volvemos a situar stty como estaba</font>
stty $oldmodes
<font class="comentario"># Generamos un salto de linea</font>
echo

<font class="comentario"># OJO: LA CLAVE SE REGISTRA</font>
sudo mount -t cifs //SERVIDOR/RECURSO /MONTAJE/ -o username=guimi,workgroup=MIRED,iocharset=utf8,file_mode=0777,dir_mode=0777,password=$clave
</pre>
<p>Una solución pasa por expect.<br />
<font class="comando"># aptitude install expect</font></p>
<pre class="codigo">
<font class="comentario">#!/usr/bin/expect -f
#
# unidades_red 0.3 - GPL
# (c) 2012-03 Guimi
# http://guimi.net
#
# Ult mod: Guimi 2012-03
#
# Tomamos el primer parametro como clave
#set clave [lrange $argv 0 0]

# Solicitamos la clave de red</font>
send_user "Introduzca su clave de red: "
stty -echo
expect_user -re "(.*)\n" {set clave $expect_out(1,string)}
stty echo
send_user "\n"

<font class="comentario"># Anulamos la salida por terminal</font>
log_user 0

<font class="comentario"># Conectamos las unidades de red</font>
spawn sudo mount -t cifs //SERVIDOR/RECURSO /MONTAJE/ -o username=guimi,workgroup=MIRED,iocharset=utf8,file_mode=0777,dir_mode=0777
expect "*assword:"; send "$clave\r"
expect eof

spawn sudo mount -t cifs //SERVIDOR/RECURSO2 /MONTAJE2/ -o username=guimi,workgroup=MIRED,iocharset=utf8,file_mode=0777,dir_mode=0777
expect "*assword:"; send "$clave\r"
expect eof
</pre>
<div class="keywords"><strong>expect, password</strong></div>
]]></content:encoded>
			<wfw:commentRss>http://guimi.net/blogs/hiparco/expect-scripts-para-procesos-interactivos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solventar en OSCommerce eregi is deprecated</title>
		<link>http://guimi.net/blogs/hiparco/solventar-en-oscommerce-eregi-is-deprecated/</link>
		<comments>http://guimi.net/blogs/hiparco/solventar-en-oscommerce-eregi-is-deprecated/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 08:22:40 +0000</pubDate>
		<dc:creator>Güimi</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Software Libre]]></category>

		<guid isPermaLink="false">http://guimi.net/blogs/hiparco/?p=917</guid>
		<description><![CDATA[Si tienes OSCommerce y actualizas PHP, aparece el error &#8220;eregi is deprecated&#8221;. Para solventarlo vamos al foro de OSCommerce, donde tenemos los parches. Después siguiendo esta receta de cómo generar (diff) y aplicar (patch) parches, bajamos de github los parches, añadiendo &#8220;.patch&#8221; al URL y aplicar los parches. $ wget https://github.com/osCommerce/oscommerce2/commit/79c601a7b3ee87943b92a5e6d77ce02480b49ffe.patch $ wget https://github.com/osCommerce/oscommerce2/commit/88d550f392d86c02d2fe16d0b93f1de8aa6a6770.patch $ [...]]]></description>
			<content:encoded><![CDATA[<p>Si tienes OSCommerce y actualizas PHP, aparece el error &#8220;eregi is deprecated&#8221;.</p>
<p>Para solventarlo vamos al <a href="http://forums.oscommerce.com/topic/341737-function-ereg-replace-is-deprecated/page__p__1434612__hl__eregi%20deprecated__fromsearch__1&#entry1447311">foro de OSCommerce</a>, donde tenemos los parches.</p>
<p>Después siguiendo esta receta de cómo <a href="http://guimi.net/blogs/hiparco/generar-diff-y-aplicar-patch-parches/">generar (diff) y aplicar (patch) parches</a>, bajamos de github los parches, añadiendo &#8220;.patch&#8221; al URL y aplicar los parches.</p>
<pre class="comando">
$ wget https://github.com/osCommerce/oscommerce2/commit/79c601a7b3ee87943b92a5e6d77ce02480b49ffe.patch
$ wget https://github.com/osCommerce/oscommerce2/commit/88d550f392d86c02d2fe16d0b93f1de8aa6a6770.patch
$ wget https://github.com/osCommerce/oscommerce2/commit/1bfed2f6bf0e9c1c0ce4b160bce1e881cc6e6ef8.patch
$ wget https://github.com/osCommerce/oscommerce2/commit/15101263fa27b523139b405f99b1613c71a8e2c1.patch
$ wget https://github.com/osCommerce/oscommerce2/commit/bc2bcd9b1bd2148bf852409b3843543555bc01e2.patch
$ patch -p1 < 79c601a7b3ee87943b92a5e6d77ce02480b49ffe.patch</pre>
<pre class="codigo">
patching file catalog/admin/backup.php
patching file catalog/admin/cache.php
Hunk #1 succeeded at 91 with fuzz 2.
patching file catalog/admin/configuration.php
patching file catalog/admin/ext/modules/payment/sofortueberweisung/install.php
[...]
patching file catalog/admin/includes/functions/general.php
Hunk #1 FAILED at 939.
1 out of 1 hunk FAILED -- saving rejects to file catalog/admin/includes/functions/general.php.rej
[...]
patching file catalog/includes/modules/payment/paypal_express.php
Hunk #1 FAILED at 59.
1 out of 1 hunk FAILED -- saving rejects to file catalog/includes/modules/payment/paypal_express.php.rej
[...]
</pre>
<p>Si nos fijamos en esta parte de la salida:</p>
<pre class="codigo">
patching file catalog/admin/includes/functions/general.php
Hunk #1 FAILED at 939.
1 out of 1 hunk FAILED -- saving rejects to file catalog/admin/includes/functions/general.php.rej
</pre>
<p>Vemos que al parchear el fichero "<font class="comando">catalog/admin/includes/functions/general.php</font>" en la línea 939 ha habido un error.<br />
Tenemos más información en "<font class="comando">catalog/admin/includes/functions/general.php.rej</font>". Lo que hace patch en este casp es generar 3 ficheros:<br />
- general.php es el fichero original CON los cambios que SÍ ha aplicado.<br />
- general.php.orig es el fichero original.<br />
- general.php.rej contiene los cambios que NO ha aplicado.<br />
Así si el parche incluye varios cambios para un fichero puede ocurrir que unos cambios se apliquen y otros no.<br />
En este caso no queda más remedio que revisar el cambio no realizado a mano.</p>
<p>Puede ocurrir que el archivo a parchear no exista. En ese caso tendremos solo dos ficheros:<br />
- x.orig con 0 bytes, es copia del original. Como éste no existía, es un archivo en blanco.<br />
- x.rej los cambios que no se han aplicado.<br />
Basta con confirmar que es correcto que el fichero no exista. podría ocurrir que esté movido (revisar porqué), o que sea de un módulo del que no disponemos -lo habitual- (ignorar).</p>
<p>Igual con el resto de parches:</p>
<pre class="comando">
$ patch -p1 < 88d550f392d86c02d2fe16d0b93f1de8aa6a6770.patch
$ patch -p1 < 1bfed2f6bf0e9c1c0ce4b160bce1e881cc6e6ef8.patch
$ patch -p1 < 15101263fa27b523139b405f99b1613c71a8e2c1.patch
$ patch -p1 < bc2bcd9b1bd2148bf852409b3843543555bc01e2.patch
</pre>
<div class="keywords"><strong>OSCommerce, OSC, github, eregi deprecated, patch, </strong></div>
]]></content:encoded>
			<wfw:commentRss>http://guimi.net/blogs/hiparco/solventar-en-oscommerce-eregi-is-deprecated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Copia de sistemas, clonado de discos</title>
		<link>http://guimi.net/blogs/hiparco/copia-de-sistemas-clonado-de-discos/</link>
		<comments>http://guimi.net/blogs/hiparco/copia-de-sistemas-clonado-de-discos/#comments</comments>
		<pubDate>Sat, 18 Feb 2012 14:09:18 +0000</pubDate>
		<dc:creator>Güimi</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Prompt]]></category>
		<category><![CDATA[Redes]]></category>

		<guid isPermaLink="false">http://guimi.net/blogs/hiparco/?p=904</guid>
		<description><![CDATA[Para copiar sistemas hay muchas herramientas disponibles: g4l, partimage, ntfsclone&#8230; y por supuesto el viejo y confiable tar. Veamos unas chuletas rápidas que pueden ayudarnos. Lógicamente hay que ajustar los nombres de los discos y las particiones. Copia del MBR y la tabla de particiones Para copiar el MBR y la tabla de particiones de [...]]]></description>
			<content:encoded><![CDATA[<p>Para copiar sistemas hay muchas herramientas disponibles: <a href="http://sourceforge.net/projects/g4l/">g4l</a>, <a href="http://www.partimage.org/Main_Page">partimage</a>, ntfsclone&#8230; y por supuesto el viejo y confiable tar.<br />
Veamos unas chuletas rápidas que pueden ayudarnos. Lógicamente hay que ajustar los nombres de los discos y las particiones.</p>
<p><strong>Copia del MBR y la tabla de particiones</strong><br />
Para copiar el MBR y la tabla de particiones de un disco usamos dd y sfdisk.<br />
MBR:<br />
<font class="comando"># dd if=/dev/sda of=sda.mbr count=1 bs=512</font><br />
Tabla de particiones<br />
<font class="comando"># sfdisk -d /dev/sda > sda.sf</font></p>
<p>Para recuperarlos.<br />
MBR:<br />
<font class="comando"># dd if=sda.mbr of=/dev/sda</font><br />
Tabla de particiones<br />
<font class="comando"># sfdisk /dev/sda < sda.sf</font></p>
<p><strong>Para clonar discos NTFS (Windows), usamos ntfsclone</strong><br />
Esta herramienta (ntfsclone) no permite volcar una imagen de una partición en otra partición más pequeña, aunque los datos quepan. En cambio volcar una partición pequeña en una más grande sí es posible.<br />
Por ello se recomienda que la partición original sea lo más pequeña posible. Lo más cómodo es instalar en una partición grande y después redimensionarla antes de hacer la imagen.<br />
<font class="comando"># ntfsclone -s -o &#8211; /dev/sda1 | gzip | split -b 1500m &#8211; sda1.ntfsclone.gz.</font></p>
<p>Para recuperar la partición usamos:<br />
<font class="comando"># cat sda1.ntfsclone.gz.aa sda1.ntfsclone.gz.ab | gunzip -c | ntfsclone &#8211;restore-image &#8211;overwrite /dev/sda1 -</font></p>
<p><strong>Para copiar datos de un sistema GNU/Linux a otro, mediante ssh+tar</strong><br />
Desde el equipo en el que vamos a volcar los datos (usamos p para preservar los permisos):<br />
<font class="comando">$ ssh IP_equipo_origen &#8220;tar cpf &#8211; /path_a_copiar&#8221; | tar xpf -</font></p>
<p>Si la red en que trabajamos es lenta (por ejemplo a través de internet) podemos comprimir los datos antes de enviarlos, podemos cambiar el directorio en que se copian los datos&#8230;:<br />
<font class="comando">$ ssh IP_equipo_origen &#8220;tar czpf &#8211; /path_a_copiar&#8221; | tar xzpf &#8211; -C /nuevo_path_base</font></p>
<p>También podríamos volcar los datos a un fichero:<br />
<font class="comando">$ ssh IP_equipo_origen &#8220;tar czpf &#8211; /path_a_copiar&#8221; | dd of=copia_datos.tar.gz</font><br />
O en el sentido contrario:<br />
<font class="comando">$ tar czpf &#8211; /path_a_copiar | ssh IP_equipo_destino &#8220;dd of=copia_datos.tar.gz&#8221;</font></p>
<p>Más opciones con<br />
<font class="comando">$ man tar<br />
$ man ssh</font></p>
<p><strong>Trabajar con imágenes de particiones</strong><br />
<font class="comando">$ partimage</font><br />
Sí, ya está, solo eso.<br />
Se pueden ver más opciones para evitar el asistente, como siempre mediante:<br />
<font class="comando">$ man partimage</font></p>
<div class="keywords"><b>tar, ssh, partimage, ntfsclone, dd, clonado, copia</b></div>
]]></content:encoded>
			<wfw:commentRss>http://guimi.net/blogs/hiparco/copia-de-sistemas-clonado-de-discos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Generar (diff) y aplicar (patch) parches</title>
		<link>http://guimi.net/blogs/hiparco/generar-diff-y-aplicar-patch-parches/</link>
		<comments>http://guimi.net/blogs/hiparco/generar-diff-y-aplicar-patch-parches/#comments</comments>
		<pubDate>Fri, 10 Feb 2012 08:30:07 +0000</pubDate>
		<dc:creator>Güimi</dc:creator>
				<category><![CDATA[GNU]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Prompt]]></category>

		<guid isPermaLink="false">http://guimi.net/blogs/hiparco/?p=888</guid>
		<description><![CDATA[Hay manuales muy buenos sobre cómo generar parches&#8230; este no es uno de ellos, pero es una guía rápida para el 90% de casos. Para los ejemplos suponemos que tenemos ficheros originales en una carpeta &#8220;original&#8221; y ficheros modificados en una carpeta &#8220;new&#8221;. Trabajando con ficheros Primero veremos como parchear un único fichero. Usamos el [...]]]></description>
			<content:encoded><![CDATA[<p>Hay manuales muy buenos sobre cómo generar parches&#8230; este no es uno de ellos, pero es una guía rápida para el 90% de casos.</p>
<p>Para los ejemplos suponemos que tenemos ficheros originales en una carpeta &#8220;original&#8221; y ficheros modificados en una carpeta &#8220;new&#8221;.</p>
<p><strong>Trabajando con ficheros</strong><br />
Primero veremos como parchear un único fichero. Usamos el formato unificado (-u). Es el mejor pero &#8220;solo&#8221; sirve para entornos GNU, es decir todos los Linux y muchos UNIX.<br />
<font class="comando">diff -u original/foo.txt new/foo.txt > foo.patch</font></p>
<p>Podemos ver el parche generado con:<br />
<font class="comando">less foo.patch</font><br />
La sintaxis es (línea o rango de líneas)(orden)(línea o rango de líneas)<br />
Orden puede ser:<br />
c &#8211; change &#8211; sustituir unas líneas por otras<br />
a &#8211; add &#8211; añadir líneas<br />
d -delete &#8211; borrar líneas</p>
<p>Para aplicar el parche podemos hacer (nombre de fichero implícito en el parche):<br />
<font class="comando">patch < foo.patch</font><br />
O más seguro<br />
<font class="comando">patch bar.txt < foo.patch</font></p>
<p>Si queremos revertir un parche, porque detectamos que introduce un bug pero que el que corrige, por ejemplo, podemos hacer:<br />
<font class="comando">patch -R < foo.patch</font></p>
<p><strong>Trabajando con directorios</strong><br />
Si modificamos varios ficheros, trabajamos con los directorios.<br />
Generamos el parche con:<br />
<font class="comando">diff -rupN original/ new/ > codigo.patch</font></p>
<p>Lo aplicamos con:<br />
<font class="comando">patch -p1 < codigo.patch</font></p>
<p>Para más información, como siempre:<br />
<font class="comando">$ man diff<br />
$ man patch</font></p>
<p><strong>Trabajando con github.com</strong><br />
Los commits de Github pueden bajarse como parches añadiendo &#8220;.patch&#8221; al URL.<br />
Así bastaría con:<br />
<font class="comando">$ wget github.com/URL_COMMIT.patch<br />
$ patch -p1 < URL_COMMIT.patch</font></p>
<div class="keywords"><strong>diff, patch, parche</strong></div>
]]></content:encoded>
			<wfw:commentRss>http://guimi.net/blogs/hiparco/generar-diff-y-aplicar-patch-parches/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalación de firmware en Debian</title>
		<link>http://guimi.net/blogs/hiparco/instalacion-de-firmware-en-debian/</link>
		<comments>http://guimi.net/blogs/hiparco/instalacion-de-firmware-en-debian/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 12:18:50 +0000</pubDate>
		<dc:creator>Güimi</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Hardware]]></category>

		<guid isPermaLink="false">http://guimi.net/blogs/hiparco/?p=719</guid>
		<description><![CDATA[[Este apartado es un resumen de una entrada de Raphael Hertzog. Si el artículo todavía está disponible recomiendo ir al original.] Una duda habitual al instalar un GNU/Linux es el tipo de procesador del que se dispone. En un PC con linux (por ejemplo arrancando con un Live-CD) podemos hacer: $ grep &#8220;^flags&#8221; /proc/cpuinfo &#124; [...]]]></description>
			<content:encoded><![CDATA[<p>[Este apartado es un resumen de una <a href="http://raphaelhertzog.com/2011/03/14/missing-firmware-in-debian-learn-how-to-deal-with-the-problem/">entrada</a> de <a href="http://raphaelhertzog.com">Raphael Hertzog</a>. Si el artículo todavía está disponible recomiendo ir al original.]</p>
<p>Una duda habitual al instalar un GNU/Linux es el tipo de procesador del que se dispone. En un PC con linux (por ejemplo arrancando con un Live-CD) podemos hacer:<br />
<font class="comando">$ grep &#8220;^flags&#8221; /proc/cpuinfo | grep -q &#8221; lm &#8221; &#038;&#038; echo &#8220;amd64&#8243; || echo &#8220;i386&#8243;</font></p>
<p>Puede ocurrir que al instalar Debian un equipo, una parte del hardware no funcione correctamente por falta del correspondiente firmware (o el uso de uno que no es totalmente adecuado). Una opción es obtener de Raphael Hertzog un <a href="http://raphaelhertzog.com/products/debian-cd-dvd/">disco de Debian con firmware</a>.</p>
<p>Otra opción es realizar una instalación básica de Debian y posteriormente verificar el firmware necesario e instalarlo.<br />
Si es necesario, pueden bajarse paquetes desde otro equipo desde la <a href="http://www.debian.org/distrib/packages">web de Debian</a>.<br />
Después se instala con <font class="comando"># dpkg -i <em>paquete</em></font></p>
<p>Si el equipo necesita algún firmware, durante la instalación, al actualizar el kernel o al hacer un update-initramfs aparecerán mensajes diciendo:<br />
&#8220;<em>may require additional firmware</em>&#8221; o &#8220;<em>Failed to load firmware</em>&#8221; o &#8220;<em>Possible missing firmware</em>&#8220;.<br />
Podemos buscar más mensajes mediante:<br />
<font class="comando"># dmesg | grep firmware</font><br />
<font class="comando"># grep firmware /var/log/installer/*</font></p>
<p>Por ejemplo podemos encontrar:</p>
<pre class="codigo">e100: eth0: e100_request_firmware: Failed to load firmware "e100/d101m_ucode.bin": -2</pre>
<p>El firmware que requiere el módulo e100 es:<br />
<font class="comando">$ modinfo -F firmware /lib/modules/2.6.32-5-amd64/kernel/drivers/net/e100.ko</font></p>
<pre class="codigo">e100/d102e_ucode.bin
e100/d101s_ucode.bin
e100/d101m_ucode.bin</pre>
<p>Lo mejor es regenerar la imagen de inicio:<br />
<font class="comando"># update-initramfs</font></p>
<pre class="codigo">update-initramfs: Generating /boot/initrd.img-2.6.32-5-amd64
W: Possible missing firmware /lib/firmware/e100/d102e_ucode.bin for module e100
W: Possible missing firmware /lib/firmware/e100/d101s_ucode.bin for module e100
W: Possible missing firmware /lib/firmware/e100/d101m_ucode.bin for module e100</pre>
<p>Una vez visto el firmware que nos falta averiguamos dónde obtenerlo y lo instalamos:<br />
<font class="comando">$ apt-cache search d101m_ucode.bin</font></p>
<pre class="codigo">firmware-linux-nonfree - Binary firmware for various drivers in the Linux kernel</pre>
<p><font class="comando"># aptitude install firmware-linux-nonfree</font></p>
<p>Para ver todos los paquetes de firmware disponibles:<br />
<font class="comando">$ aptitude search firmware</font></p>
<p>El firmware se instala en:</p>
<ul>
<li>/lib/firmware/$(uname -r)</p>
<li>/lib/firmware
<li>/usr/local/lib/firmware
<li>/usr/lib/hotplug/firmware
</ul>
]]></content:encoded>
			<wfw:commentRss>http://guimi.net/blogs/hiparco/instalacion-de-firmware-en-debian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configuración de sudo</title>
		<link>http://guimi.net/blogs/hiparco/configuracion-de-sudo/</link>
		<comments>http://guimi.net/blogs/hiparco/configuracion-de-sudo/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 11:01:42 +0000</pubDate>
		<dc:creator>Güimi</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>

		<guid isPermaLink="false">http://guimi.net/blogs/hiparco/?p=644</guid>
		<description><![CDATA[Autorizamos algunos usuarios a realizar tareas administrativas # vi /etc/sudoers # DEFAULTS # env_reset : resetea las variables de entorno antes de ejecutar # insults : cuando te equivocas de contrase&#241;a #+ te "insulta" ir&#243;nicamente # timestamp_timeout=5 : una vez pones la contrase&#241;a correctamente, #+ no te la vuelve a pedir en 5 minutos (0 [...]]]></description>
			<content:encoded><![CDATA[<p>Autorizamos algunos usuarios a realizar tareas administrativas<br />
<font class="comando"># vi /etc/sudoers</font></p>
<pre class="codigo"># DEFAULTS
# env_reset : resetea las variables de entorno antes de ejecutar
# insults : cuando te equivocas de contrase&ntilde;a
#+    te "insulta" ir&oacute;nicamente
# timestamp_timeout=5 : una vez pones la contrase&ntilde;a correctamente,
#+    no te la vuelve a pedir en 5 minutos (0 : pedir siempre)
# lecture=once : solo te avisa sobre la responsabilidad una vez por sesi&oacute;n
# passwd_tries=2 : permite 2 intentos para la contrase&ntilde;a
# rootpw : pide la clave de root en vez de la del usuario

Defaults env_reset, insults, timestamp_timeout=5, lecture=once, passwd_tries=2

# User alias specification
User_Alias ADMINS=guimi

# Cmnd alias specification
Cmnd_Alias APT = /usr/bin/apt-get, /usr/bin/dpkg, /usr/bin/aptitude
Cmnd_Alias APAGADO = /sbin/shutdown, /sbin/halt, /sbin/reboot
Cmnd_Alias RED = /usr/bin/kismet, /sbin/iwlist, /sbin/ifuop, /sbin/ifdown, /sbin/wpa_cli
Cmnd_Alias PROPIOS = /root/bin/SCRIPT1

# User privilege specification
root	ALL=(ALL) ALL
# Si el usuario admin esta en el grupo 'sudo' no le pedira clave
admin	ALL=(ALL) ALL

# Indicamos expresamente que no solicite clave para estos comandos
ADMINS ALL= NOPASSWD: APT
ADMINS ALL= NOPASSWD: APAGADO
ADMINS ALL= NOPASSWD: RED
ADMINS ALL= NOPASSWD: PROPIOS
</pre>
<p><span class="keywords">sudo</span></p>
]]></content:encoded>
			<wfw:commentRss>http://guimi.net/blogs/hiparco/configuracion-de-sudo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Algunos paquetes interesantes en GNU/Linux</title>
		<link>http://guimi.net/blogs/hiparco/algunos-paquetes-interesantes-en-gnulinux/</link>
		<comments>http://guimi.net/blogs/hiparco/algunos-paquetes-interesantes-en-gnulinux/#comments</comments>
		<pubDate>Tue, 21 Jun 2011 12:06:10 +0000</pubDate>
		<dc:creator>Güimi</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Software Libre]]></category>

		<guid isPermaLink="false">http://guimi.net/blogs/hiparco/?p=620</guid>
		<description><![CDATA[Todos los paquetes están disponibles en las principales distribuciones. Servicios apache2 Servidor web cups-pdf A&#241;ade una impresora virtual CUPS que genera PDFs mysql-server Servidor de bases de datos openssh-server Servidor de ssh openntpd Sincronizacion de reloj (servicio inseguro) phpmyadmin Gestor PHP de MySQL sane-utils xsane Herramientas para esc&#225;neres vnc4server Servidor de vnc (X remoto) Sistema [...]]]></description>
			<content:encoded><![CDATA[<p>Todos los paquetes están disponibles en las principales distribuciones.</p>
<table border="1" align="center">
<tr>
<td colspan="2" bgcolor="#9FC7E7"><b>Servicios</b></td>
</tr>
<tr>
<td width="30%">apache2</td>
<td width="70%">Servidor web</td>
</tr>
<tr>
<td>cups-pdf</td>
<td>A&ntilde;ade una impresora virtual CUPS que genera PDFs</td>
</tr>
<tr>
<td>mysql-server</td>
<td>Servidor de bases de datos</td>
</tr>
<tr>
<td>openssh-server</td>
<td>Servidor de ssh</td>
</tr>
<tr>
<td>openntpd</td>
<td>Sincronizacion de reloj (servicio inseguro)</td>
</tr>
<tr>
<td>phpmyadmin</td>
<td>Gestor PHP de MySQL</td>
</tr>
<tr>
<td>sane-utils xsane</td>
<td>Herramientas para esc&aacute;neres</td>
</tr>
<tr>
<td>vnc4server</td>
<td>Servidor de vnc (X remoto)</td>
</tr>
<tr>
<td colspan="2" bgcolor="#9FC7E7"><b>Sistema y herramientas de l&iacute;nea de comandos</b></td>
</tr>
<tr>
<td>linux-image-686-bigmem</td>
<td>N&uacute;cleo compilado para usar mucha RAM (>2GB).</td>
</tr>
<tr>
<td>linux-headers-`uname -r`</td>
<td>Las cabeceras del n&uacute;cleo. Necesarias para compilar m&oacute;dulos.</td>
</tr>
<tr>
<td>build-essential</td>
<td>Paquete b&aacute;sico para compilar.</td>
</tr>
<tr>
<td>acct</td>
<td>Grupo de herramientas para &#8220;auditar&#8221; login, procesos y comandos</td>
</tr>
<tr>
<td>apt-file</td>
<td>El poder de APT orientado a los ficheros de los paquetes</td>
</tr>
<tr>
<td>dosfstools</td>
<td>Utilidades para manejar FAT</td>
</tr>
<tr>
<td>less</td>
<td>Paginador</td>
</tr>
<tr>
<td>lshw lsof usbutils</td>
<td>Listan el HW, los ficheros abiertos, los dispositivos pci y los dispositivos usb</td>
</tr>
<tr>
<td>lynx w3mlinks2</td>
<td>Navegadores en consola</td>
</tr>
<tr>
<td>mc</td>
<td>Midnight Commander. Gestor de ficheros para l&iacute;nea de comandos con muchas posibilidades</td>
</tr>
<tr>
<td>module-assistant modconf</td>
<td>Configuradores (opcionales) de m&oacute;dulos</td>
</tr>
<tr>
<td>ip nmap nbtscan fping</td>
<td>Herramientas / Analizadores de redes</td>
</tr>
<tr>
<td>iftop</td>
<td>Monitoriza el uso de interfaces de red.</td>
</tr>
<tr>
<td>renameutils</td>
<td>Utilidades de renombrado masivo. Incluye qmv, imv y qcp</td>
</tr>
<tr>
<td>screen</td>
<td>Multiplexor de terminales (Gestor de conexiones)</td>
</tr>
<tr>
<td>testdisk</td>
<td>Verificador de discos</td>
</tr>
<tr>
<td>tofrodos convmv</td>
<td>Conversores. Por ejemplo:<br />
									<font class="comando">$ convmv -f iso-8859-15 -t UTF-8 -r * &#8211;notest</font><br />
									Eso convertiria el nombre del fichero. Para convertir el contenido hay que usar iconv (viene en libc6):<br />
									<font class="comando">$ iconv fichero.in -f iso-8859-15 -t utf-8 -o fichero.out</font></td>
</tr>
<tr>
<td>unrar-free</td>
<td>Descompresor de rar</td>
</tr>
<tr>
<td>vim</td>
<td>Vi IMproved</td>
</tr>
<tr>
<td>watch</td>
<td>Ejecuta repetidamente un comando. Por ejemplo watch cat /proc/mdstat permite seguir la sincronizacion de un RAID.</td>
</tr>
<tr>
<td>zgv fbi</td>
<td>Visores de imagenes en framebuffer</td>
</tr>
<tr>
<td>cowsay fortunes-es</td>
<td>Citadores, a combinar con <a href="http://www.guimi.net/datos/tec-docs/scripts/fortunecow.sh">fortunecow.sh</a></td>
</tr>
<tr>
<td>vrms</td>
<td>Muestra los paquetes no libres instalados en el sistema</td>
</tr>
<tr>
<td>imagemagick</td>
<td><a href="http://guimi.net/blogs/hiparco/trabajar-con-imagenes-desde-el-prompt/">Manipulaci&oacute;n de im&aacute;genes desde la l&iacute;nea de comandos</a></td>
</tr>
<tr>
<td>pdftk</td>
<td><a href="http://guimi.net/blogs/hiparco/trabajar-con-pdfs-desde-el-prompt/">Manipulaci&oacute;n de PDFs desde la l&iacute;nea de comandos</a></td>
</tr>
<tr>
<td>console-data console-tools</td>
<td>Permiten ajustar los par&aacute;metros de la consola</td>
</tr>
<tr>
<td>Otras herramientas simples de hack como arping, bmon, icmpinfonetstat-nat, cutter, sacnlogd, MTR, bing</td>
<td>Un articulillo sobre <a href="http://www.epzylon.com.ar/index.php?entry=entry061207-095853" class="externo">herramientas simples de hack</a> en epzylon</td>
</tr>
<tr>
<td colspan="2" bgcolor="#9FC7E7"><b>Herramientas de Escritorio</b></td>
</tr>
<tr>
<td>alacarte</td>
<td>Editor de men&uacute;s de Gnome</td>
</tr>
<tr>
<td>gdm-themes</td>
<td>Temas de entrada del gestor de inicio de Gnome</td>
</tr>
<tr>
<td>gnome-audio</td>
<td>Sonidos de Gnome</td>
</tr>
<tr>
<td>gnomebaker k3b</td>
<td>Grabadores de CD/DVD</td>
</tr>
<tr>
<td>gftp</td>
<td>Cliente FTP</td>
</tr>
<tr>
<td>gsfonts-other ttf-freefont</td>
<td>Fuentes para GUI</td>
</tr>
<tr>
<td>gthumb</td>
<td>Visor de imagenes mejor que el que viene por defecto en Gnome</td>
</tr>
<tr>
<td>gtodo</td>
<td>Sencillo gestor de tareas</td>
</tr>
<tr>
<td>iceweasel iceweasel-gnome-support iceweasel-l10n-es-es</td>
<td>Navegador web</td>
</tr>
<tr>
<td>icedove icedove-gnome-support icedove-l10n-es-es iceowl iceowl-extension</td>
<td>Cliente de correo-e y calendario</td>
</tr>
<tr>
<td>openoffice.org openoffice.org-l10n-es openoffice.org-help-es openoffice.org-gtk openoffice.org-kde</td>
<td>Paquete ofim&aacute;tico en espa&ntilde;ol</td>
</tr>
<tr>
<td>xplanet xplanet-images</td>
<td>Genera imagenes del sistema solar. Incluye salvapantallas.<br />
											xplanet -vroot -wait 1 -timewarp 90000 -label -origin moon</td>
</tr>
<tr>
<td colspan="2" bgcolor="#9FC7E7"><b>Herramientas multimedia</b></td>
</tr>
<tr>
<td>amarok</td>
<td>EL reproductor de m&uacute;sica</td>
</tr>
<tr>
<td>BIG (blender, inkscape, gimp (+plugin <a href="http://www.shallowsky.com/software/pandora/" class="externo">pandora</a>))</td>
<td>Dise&ntilde;o gr&aacute;fico.</td>
</tr>
<tr>
<td>liblame0 gstreamer0.10-lame</td>
<td>Librerias MP3</td>
</tr>
<tr>
<td>lsdvd</td>
<td>Describe un dvd</td>
</tr>
<tr>
<td>kino</td>
<td>Permite pasar videos de una c&aacute;mara al ordenador.</td>
</tr>
<tr>
<td>dvdstyler</td>
<td>Permite crear DVDs</td>
</tr>
<tr>
<td>k9copy</td>
<td>Copias de DVD de video</td>
</tr>
<tr>
<td>soundconverter flac lame mp3splt audacity</td>
<td>Herramientas de audio</td>
</tr>
<tr>
<td>tagtool id3ed</td>
<td>Gestion de etiquetas ID3 (mp3) (grafico y comando)</td>
</tr>
<tr>
<td>xine-ui mplayer libdvdcss w32codecs/w64codecs transcode avidemux subtitleeditor lsdvd <a href="http://guimi.net/blogs/hiparco/uso-de-mencoder/">mencoder</a></td>
<td>Herramientas de video</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://guimi.net/blogs/hiparco/algunos-paquetes-interesantes-en-gnulinux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurar juego de caracteres (charset) en LAMP (Linux, Apache, MySQL, PHP)</title>
		<link>http://guimi.net/blogs/hiparco/configurar-juego-de-caracteres-charset-en-lamp-linux-apache-mysql-php/</link>
		<comments>http://guimi.net/blogs/hiparco/configurar-juego-de-caracteres-charset-en-lamp-linux-apache-mysql-php/#comments</comments>
		<pubDate>Mon, 20 Jun 2011 09:00:11 +0000</pubDate>
		<dc:creator>Güimi</dc:creator>
				<category><![CDATA[BBDD]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Redes]]></category>
		<category><![CDATA[Software Libre]]></category>

		<guid isPermaLink="false">http://guimi.net/blogs/hiparco/?p=614</guid>
		<description><![CDATA[Instalamos los paquetes necesarios: # aptitude install apache2 mysql-server php5 Modificamos la configuraci&#243;n de apache: # vi /etc/apache2/conf.d/charset ... AddDefaultCharset UTF-8 ... Modificamos la configuraci&#243;n de PHP: # vi /etc/php5/apache2/php.ini ... default_charset = "utf8" ... En la cabecera de las p&#225;ginas indicar: ... &#60;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&#62; ... Y en los scripts PHP de [...]]]></description>
			<content:encoded><![CDATA[<p>Instalamos los paquetes necesarios:<br />
<font class="comando"># aptitude install apache2 mysql-server php5<br /></font><br />
Modificamos la configuraci&oacute;n de apache:<br />
<font class="comando"># vi /etc/apache2/conf.d/charset<br /></font></p>
<pre class="codigo">...
AddDefaultCharset       UTF-8
...
</pre>
<p>
Modificamos la configuraci&oacute;n de PHP:<br />
<font class="comando"># vi /etc/php5/apache2/php.ini<br /></font></p>
<pre class="codigo">...
default_charset = "utf8"
...
</pre>
<p>En la cabecera de las p&aacute;ginas indicar:</p>
<pre class="codigo">...
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
...
</pre>
<p>Y en los scripts PHP de conexi&oacute;n:</p>
<pre class="codigo">...
$sql_script("SET NAMES 'utf8'");
...
</pre>
<p>
Modificamos la configuraci&oacute;n de MySQL:<br />
<font class="comando"># vi /etc/mysql/my.cnf<br /></font></p>
<pre class="codigo">...
language    = /usr/share/mysql/spanish
...
</pre>
<p>
Y reiniciamos los servicios:<br />
<font class="comando"># /etc/init.d/apache2 restart<br />
# /etc/init.d/mysql restart<br /></font><br />
</p>
<p>En caso de tener una BB.DD. en otra codificaci&oacute;n como iso-8859-1, conviene exportarla a un fichero de texto, convertir el fichero con &#8220;<font class="comando">iconv bbdd.sql -f iso-8859-15 -t utf-8 -o bbdd_utf8.sql</font>&#8221; y volver a importarla.</p>
<p><span class="keywords"><b>juego de caracteres, charset, Linux, Apache, MySQL, PHP</b></span></p>
]]></content:encoded>
			<wfw:commentRss>http://guimi.net/blogs/hiparco/configurar-juego-de-caracteres-charset-en-lamp-linux-apache-mysql-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

