"Después del juego es antes del juego"
Sepp Herberger

lunes, 22 de junio de 2015

Importar claves GPG de un repositorio desde dentro de la Red Educativa


Estaba con un repositorio nuevo para instalar unas cosillas y al hacer apt-get update me salía el típico error NO_PUBKEY de que no tengo la clave del repositorio, que en este caso era E1F958385BFE2B6E

Primero he probado a añadir la clave a mano de la forma recomendada siempre, con:

# apt-key adv --recv-keys --keyserver keys.gnupg.net E1F958385BFE2B6E

Pero había olvidado que dentro de la red educativa esto no funciona ya que usa el puerto 11371 y dicho puerto está bloqueado por el firewall. El truco para que funcione es:

# apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80  E1F958385BFE2B6E

Que hace la petición a través del puerto 80 (que evidentemente está abierto) al servidor de claves de Ubuntu, que si escucha por dicho puerto. De esta manera añadimos la clave a los ficheros /etc/apt/trustdb.gpg y /etc/apt/trusted.gpg y ya podremos actualizar desde ese repositorio sin problemas.

lunes, 15 de junio de 2015

Funny SIM y las APN Perdidas.

No, el título de esta entrada es el nombre de un grupo de tontipop de los 90. Bueno, no se que hago que siempre acabo en líos como gato en un ovillo de lana. Mi ultima aventurilla: como todavía no he entrado en el mundo de los móviles octacore (usados preferentemente para whatsapp) sigo con un LG Optimus Hub E510 que me funciona bien para lo que lo quiero (que consuma su p**a madre). Hace varios días petó el Android Gingerbread que lo movía, así que me puse a reinstalar el sistema con ayuda de los foros de htcmania y esta lista de ROMs.

Una vez puesto el CWM Recovery me dispuse a flashear una de esas ROM basadas en Cyanogenmod, arranqué y todo parecía ir bien: cámara, sonido, wifi, ... carajo: no hay conexión de datos. Me voy a la configuración de APNs y, vaya por Cthulhu, esta vacia. Bueno, intento añadir la APN de mi operador (Vodafone) a mano... sin resultado: relleno todos los campos y cuando le doy a guardar la APN no se guarda. Probando todas las ROMs de esa página pasaba eso, excepto en ésta basada en la ROM Stock (vamos, la ROM oficial de LG) con algún tuneo.

Para mas desconcierto me encuentro con que si pongo una SIM de Pepephone las APN aparecen bien con cualquier ROM y se dejan añadir y modificar.

Intentando averiguar la causa de esto, pues las ROMs probadas eran mucho mas ligeras y limpias que la Stock ROM, me meto en un lío en el que aprendo un montón de cosas nuevas que voy a dejar aquí como referencia.

Muchos android traen una lista con la configuración completa de posibles APNs ubicadas en el fichero /system/etc/apns-conf.xml. La finalidad de esta lista es configurar automáticamente el APN en función del país y operador. Para acceder a dicho fichero lo mas sencillo es activar la depuración USB del móvil, instalar las adb-tools y conectar el android a nuestro PC con su cable usb.

# apt-get install android-tools-adb
# adb devices

...mostrara el móvil....

# adb pull /system/etc/apns-conf.xml

Con esto tenemos el fichero apns-conf.xml en el directorio actual. Podemos husmear en el para ver que aparecen las definiciones de APN de un montón de operadores mundiales, de tal forma que el usuario del teléfono no tenga que teclear los datos de la APN. Entre ellas están las de Vodafone en España, que son:


  <apn carrier="Vodafone ES"
       mcc="214"
       mnc="01"
       apn="airtelwap.es"
       user="wap@wap"
       password="wap125"
       server=""
       mmsc="null"
       type="default"
  />

por lo que en teoría el móvil debería reconocerla y configurarse automáticamente, pero no lo hacia.

Por otro lado, las APN definidas a mano por el usuario se guardan en

/data/data/com.android.providers.telephony/databases/telephony.db
/data/data/com.android.providers.telephony/shared_prefs/preferred-apn.xml 

Las podemos obtener con:

# adb pull /data/data/com.android.providers.telephony/databases/telephony.db

El fichero telephony.db es una base de datos sqlite3, que examinaremos con esa herramienta:

# apt-get install sqlite3
# sqlite3 telephoy.db
sqlite> select * from carriers;
.....listado de APN de operadores................
.....listado de APN de operadores................
.....listado de APN de operadores................

Veo que dentro está la lista de APN que he intentado meter a mano y que parecían perderse al dar a Save. Resulta que si se guardan, pero luego no se muestran. En cuanto al otro fichero:

# adb pull /data/data/com.android.providers.telephony/shared_prefs/preferred-apn.xml 
# cat preferred-apn.xml 
<? Xml version="1.0" encoding="utf-8" standalone="yes" ?>
<Map>
    <Long name="apn_id" value="218"/>
</Map>

El APN de telephony.db usado por defecto por nuestro Android para realizar la conexión de datos sería el apn_id que definimos en preferred-apn.xml.

¿Por qué no se muestran los APN definidos a mano?, aún mas misterioro: ¿cómo averigua android el APN correcto para nuestra tarjeta?. Investigando en Internet descubro que el método que tiene el móvil para saber que APN es el correcto es con los campos MCC (código de pais) y MNC (código de operadora): 214/01 para el caso de Vodafone España. ¿De dónde se obtiene estos números?: de la tarjeta SIM del móvil.

Buscando en foros vi que recomendaban una aplicación para leer dicha información: Network Info II que en la pestaña Device nos da el MCC+MNC de la SIM. Bueno, pues aqui la primera pista: con las ROMs cocinadas aparece el mensaje "SIM locked" y no muestra ese dato, mientras que con la Stock ROM si que se muestra un 214/01. Es decir, que la ROM cocinada es incapaz de leer el campo MCC+MNC de la SIM y como consecuencia:

1) No puede identificar automaticamente un APN en /system/etc/apns-conf.xml
2) Cualquier APN que metamos a mano se guarda en /data/data/com.android.providers.telephony/databases/telephony.db, pero al no coincidir su MCC+MNC con el de la tarjeta SIM (que no pueden ser leídos) son filtradas y como consecuencia no aparecen en la lista de APN y no pueden ser seleccionados.
3) Por tanto, al no encontrar APN válido según la SIM que tenemos, nuestro móvil no tiene conexión de datos.

Buscando ahora mejor informado el problema con los datos que tengo veo que la causa de todo es un problema con la SIM, llamado jocosamente en el foro xda-developers "problema de la Funny SIM" (yo no le veo el funny por anywhere). La historia está en que en determinadas SIM de 128Kb las ROMs cocinadas de Cyanogen no pueden acceder al MCC+MNC, mientras que con la SIM es de 64Kb "si se puede". Información detallada aquí.

En determinados sitios se hablan de soluciones, como aquí, donde se consigue arreglar usando una aplicación del Google Play llamada GetRIL. Esta aplicación se ejecuta con la Stock ROM y hace una copia de los datos del RIL (Radio Interface Layer), copia que luego se restaura con la ROM cocinada. Esto hace que mágicamente el APN pueda activarse. Por desgracia, la aplicación GetRIL funciona en varios modelos de LG y Samsung, pero no en mi Optimus Hub E510.

¿Y cual es la solución que queda?, pues como dicen aquí: hacer que tu operador te cambie la SIM de 128Kb por una de 64Kb. Pregunté en Vodafone y me dijeron que de eso ya tenían ellos, que son muy "in" y sus SIMs tienen mucha memoria para el 4G y para que el Estado y las Corporaciones puedan espiarte mediante el NFC.

Bueno, como está claro que el mundo se mueve y yo me quedo rezagado (*) así que he decidido entrar en 2013 y comprarme un Xiaomi Hongmi 1S de segunda mano por cuatro duros. Fin de la cita.

(*)Espero no llegar al nivel de aquel alcalde de la PPSOE que ante la presencia de los de Graba tu Pleno en su Ayuntamiento con sus equipos de grabación exclamaba: "apaguen los magnetófonos y los tomavistas o llamo a la Guardia Civil".

Este país me hacer llorar de risa y reir de llanto. Por cierto, Je suis Zapata.

Creación masiva de usuarios locales en Windows mediante WPKG.


Crear usuarios locales simultáneamente en muchas maquinas con Linux está tirado con puppet y su recurso "user". En Windows hacer eso no es tan sencillo, ya que o tenemos un Windows Server o usamos WPKG para evitar ir PC por PC creando el usuario.

Vamos a ver como hacerlo usando WPKG. Crearemos un usuario llamado oposicion perteneciente al grupo de administradores sobre todas las máquinas que pertenezcan a un perfil.

Lo primero es el package usuarios.xml, que guardaremos en el directorio de packages:


<?xml version="1.0" encoding="UTF-8"?>
<packages>

<package id="usuario_oposicion"
   name="Creacion usuario oposicion"
   revision="1"
   reboot="false"
   priority="1"
   execute="once">

   <install cmd="%comspec% /C net user /add oposicion passwordoposicion" />
   <remove  cmd="%comspec% /C net user /del oposicion" />

</package>

<package id="usuario_oposicion_admin"
   name="Inclusiónn usuario oposicion en administradores maquiina"
   revision="1"
   reboot="false"
   priority="1"
   execute="once">

   <depends package-id="usuario_oposicion" />
   <install cmd="%comspec% /C net localgroup Administradores oposicion /add" />

</package>


</packages>

Como se puede ver, hacemos uso de los comandos "net user" y "net localgroup" de Windows, una herencia de MS-DOS que permite manejar usuarios y grupos desde el cmd.exe. El depends es importante ya que establece precedencia en la ejecución de los paquetes.

Nótese que no hace falta regla remove en el paquete usuario_oposicion_admin ya que borrar el usuario de la máquina supone borrarlo en cascada de los localgroup a los que pertenece.

Ahora asociamos los paquetes al perfil nuevo, añadiendo en profiles.xml el nuevo perfil usuario_oposicion:


<profile id="usuario_oposicion">
   <variable name="SOFTWARE" value="\\wpkgserver\wpkg\files"/>
   <package package-id="usuario_oposicion" />
   <package package-id="usuario_oposicion_admin" />
</profile>

Por último, definimos en hosts.xml que máquinas están asociadas al perfil creado en el paso anterior:


<host name="a23-.+" profile-id="default">
   <profile id="prevencion" />
   <profile id="usuario_oposicion"/>
</host>

En este caso se aplica a todos los hosts cuyo nombre de máquina empiece por "a23-". Y con esto ya está, con que enciendan las máquinas y esperen unos minutos el usuario en cuestión estará creado mientras que nosotros hacemos cosas mas interesantes que crear usuarios uno a uno. Recordemos que el Eclesiastés dice eres mejor sysadmin cuanto mas tiempo dedicas a hacer cosas para no trabajar.

viernes, 5 de junio de 2015

Descomprimir, modificar y comprimir un paquete sencillo en Debian

Mi compañero Esteban Navas publicó hace poco un post para instalar plank en Debian Wheezy. Hacia tiempo que quería instalar un dock de ese tipo que fuera ligero y poco intrusivo para tener accesibles los enlaces mas comunes de los usuarios, ya que lo normal es que con el tiempo acaben borrados o escondidos entre  otros iconos del escritorio.

Junto con el paquete plank, Esteban ha construido un paquete plank-config con una configuración básica del dock, para colocar en el /etc/skel y copiar al home de todos los usuarios. Ambos paquetes pueden descargarse desde aquí.

Me interesaba coger el paquete plank-config y adaptarlo con los accesos directos que yo necesito, para luego volver a empaquetarlo. Hay varias herramientas para desempaquetar y reempaquetar un paquete .deb, la mas sencilla es dpkg-deb (otra mas potente y complicada es dpkg-buildpackage, que veremos en otro post mas adelante). Una vez descargado el paquete en cuestión plank-config_0.2_all.deb vamos a descomprimirlo en el directorio plank-config:
# apt-get install dpkg-deb
# dpkg-deb -R  plank-config_0.2_all.deb plank-config
# cd plank-config/

# ls -l
drwxr-xr-x 2 root root 4096 dic 16 17:18 DEBIAN
drwxr-xr-x 5 root root 4096 dic 16 17:18 etc
drwxr-xr-x 3 root root 4096 dic 16 17:18 usr

# tree
|-- DEBIAN
|   `-- control
|-- etc
|   |-- skel
|   |-- skel-alumno
|   `-- skel-profesor
`-- usr
    `-- share
        `-- doc
            `-- plank-config
                `-- changelog.gz

Para ver los ficheros ocultos (omito la salida ya que es enorme):
# tree -a 
....
....
....
En DEBIAN/control podemos cambiar el nombre del paquete en la instalación y la version. En los otros directorios podemos cambiar los ficheros que nos apetezca hasta adaptar el contenido de plank-config a nuestro gusto.
# cat DEBIAN/control 
Package: plank-config
Version: 0.2
Installed-Size: 1436
Section: gnome
Maintainer: Esteban M. Navas Martín <algodelinux@gmail.com>
Priority: optional
Architecture: all
Description: Configuración de Plank para IES
 Configuración de Plank con los accesos directos más comunes para el IES
La gente de orden lo que hacemos es editar el fichero control antes de nada para añadir comentarios de los cambios e incrementar la "Version". La sintaxis completa está en https://www.debian.org/doc/manuals/maint-guide/dreq.es.html#control

Una vez hechos los cambios, por ejemplo añadir un nuevo dockitem a etc/skel/.config/plank/dock1/launchers y en /.config/plank/dock1/settings, recomprimimos el paquete:
# dpkg-deb -b plank-config/ plank-config_0.3_all.deb
Este comando coge la información de DEBIAN/control y con eso y todo el contenido del directorio plank-config/* crea un paquete llamado plank-config_0.3_all.deb incluyendo los ficheros que hemos añadido/modificado/quitado.

A diferencia de otras herramientas dpkg-deb no necesita mas ficheros de metadatos que DEBIAN/control, por lo que si queremos crear un paquete desde cero simplemente tenemos que crear el fichero DEBIAN/control mínimo y añadir el resto de directorios y ficheros a instalar en ellos, comprimiendo finalmente todo con dpkg-deb -b.

Hasta pronto.....

viernes, 29 de mayo de 2015

2 cambios recientes en posts anteriores.

En los últimos días he añadido cosas a artículos anteriores, después de encontrar bugs y mejorar alguna cosa. Lo modificado es:

  • Tarea puppet para instalación de paquetes: arreglado un bug que provoca un error de puppet cuando coincide la ejecución de la tarea con alguna operación desde otro proceso sobre el sistema de paquetes. Ahora se comprueba si no hay nadie mas manipulando el sistema de paquetes antes de instalarlo.
  • Montar una camara web IP mediante OpenWRT y una cámara USB barata: después de varias semanas capturando fotos con gran éxito resultó que al guardar todas las imágenes en un solo directorio superaba algún límite de Linux y era imposible hacer muchas cosas sobre dicho directorio. Modifico el script de captura para que coloque los snapshots en directorios separados por días.
 Y para que se sepa ahí queda.

Utilidades gráficas para convertir vídeos en Linux.

Hay un grupo de herramientas por las que muchas veces me preguntan los usuarios para poder convertir vídeos entre distintos formatos. Evidentemente, no es de recibo aconsejar herramientas de línea de comando, así que me he hecho una lista de varias utilidades que se pueden usar desde entorno gráfico (realmente suelen ser wrappers de utilidades de línea de comando) y son sencillas.

Esta es la lista en cuestión:

  • winff: ya comentada por mi compañero Esteban en esta entrada de su blog. La utilizo normalmente para convertir entre distintos formatos, por ejemplo de mpeg-2 a divx o para convertir un vídeo descargado de Internet en formato .flv o .wmv a formato .mp4.
  • ogmrip: una maravilla para convertir un DVD a formato mas manejable. Lo que mas me gusta es que puede convertir el DVD completo a un archivo en formato matroska, conteniendo dentro de un solo fichero .mkv varias pistas de audio y subtítulos. Muy útiles para clases de idiomas o bilingües. Los ficheros .mkv son perfectamente manejables por vlc.
Captura de OGMRip con la seleccion de pistas y capítulos

  • handbrake: es como el ogmrip, pero mas complicado y completo. Aconsejable para usuarios avanzados. Tiene versiones para Linux, OSX y Windows.
Pantalla de Handbrake. A la derecha los formatos destino.
  • makemkv: no he podido probarlo, pero lo tengo apuntado en la cola de cosas por hacer. Parece también bastante sencillo y es multiplataforma, funcionando en Linux, Windows y OSX.

Bueno, pues aqui está la lista para que no se olvide.

Post de prueba desde stackedit.io

Post de prueba

Esto es una prueba de escritura con markdown desde el editor online stackedit.io, ya que ScribeFire ha dejado de funcionar.

# wget http://stackedit.io
# ls -l
# exit
  • Esto es un punto
  • Segundo punto
Ahora otra prueba:
Cita: esto seria una cita con formato distinto, debería verse embebida en algun tipo de marco.
Lorem ipsum es el texto que se usa habitualmente en diseño gráfico en demostraciones de tipografías o de borradores de diseño para probar el diseño visual antes de insertar el texto final.
Aunque no posee actualmente fuentes para justificar sus hipótesis, el profesor de filología clásica Richard McClintock asegura que su uso se remonta a los impresores de comienzos del siglo XVI.1 Su uso en algunos editores de texto muy conocidos en la actualidad ha dado al texto lorem ipsum nueva popularidad.

viernes, 22 de mayo de 2015

Averiguar numero de serie y marca de los monitores.

Cuando estamos inventariando monitores una manera simple de saber su número de serie sin tener que mirar el código de barras por detrás es usar este comando que me descrubrió mi compañero Oscar:

# hwinfo --monitor

Entre otros datos, saldrá el número de serie, la marca, el modelo, etc . Por desgracia, esto no funciona para cualquier monitor ya que no todos tienen el número de serie "grabado a fuego" en su interior, pero al menos para los monitores que tengo en casi todo el centro funciona. También es necesario que al ejecutarse el monitor esté encendido, por motivos obvios: si no está encendido el PC no puede preguntarle nada.

Para automatizar esto podemos hacer un script que se ejecute en el arranque, coja los datos que queramos y lo escriba en algún fichero en alguna ubicación de red. De esta manera podemos inventariar de forma masiva.

Otra opción, si tenemos puppet, es crear un facter que obtenga esos datos y los guarde en los .yaml que crea puppet en el servidor, junto con los otros facter de la máquina. El facter se guardaría en cada PC, en /usr/lib/ruby/vendor_ruby/facter/monitor.rb y su contenido sería (toma Ruby pal cuerpo):

if File.exists?("/usr/sbin/hwinfo")

serial = Facter::Util::Resolution.exec('hwinfo --monitor 2>/dev/null | grep "Serial ID:" | head -1 | cut -d":" -f2')
if not serial.nil?
Facter.add("monitor-serial") do
serial=serial.delete('"').strip
setcode {serial}
end
end

model = Facter::Util::Resolution.exec('hwinfo --monitor 2>/dev/null | grep "Model:" | head -1 | cut -d":" -f2' )
if not model.nil?
Facter.add("monitor-model") do
model=model.delete('"').strip
setcode {model}
end
end

vendor = Facter::Util::Resolution.exec('hwinfo --monitor 2>/dev/null | grep "Vendor:" | head -1 | cut -d":" -f2')
if not vendor.nil?
Facter.add("monitor-vendor") do
vendor=vendor.delete('"').strip
setcode {vendor}
end
end
end

Evidentemente, habría que instalar el paquete hwinfo en las máquinas e incluirlo en el mayhave que tuvieramos en el pkgsync. Si lo probamos en una de las máquinas:

# facter | grep monitor
monitor-model => 151E
monitor-serial => YEPF619484
monitor-vendor => FUS

Eso sería lo que se guardaría en el fichero .yaml de la máquina, en la ruta /var/lib/puppet/yaml/fact del servidor puppet .

Una vez hecho esto, sería sencillo procesar todos los ficheros .yaml con un script que haga el inventario de todas las máquinas conectadas a puppet.

 

Acceso por VNC a una sesión remota iniciada por un usuario.

Esta receta es de mi compañero Julio, la dejo aquí por su interés y porque seguro que tendré que recurrir a ella en el futuro.

Si queremos conectarnos a una sesión de usuario ya iniciada en una maquina remota y ver su escritorio o incluso tomar el control del mismo, estos son los pasos.
1) Instalar en la máquina remota los paquetes siguientes:
# apt-get install x11vnc xvnc4viewer

No olvidar ponerlos en el fichero de mayhave si la máquina está sujeta a pkgsync.
2) Conectamos a la máquina y cambiamos al usuario que ha iniciado sesión:
# ssh root@maquina
# who
tylerdurden    tty8         2015-05-21 13:37 (:0)
# su tylerdurden

3) Arrancamos servidor VNC en dicha sesión, (suponiendo que está en :0, como en el ejemplo):
$ x11vnc -display :0

4) Y ya, desde otro terminal en nuestra máquina:
$ vncviewer -ViewOnly maquina

Nos unimos a la sesión y ya podemos ver que hace "tylerdurden" en "maquina", ¡gracias, Julio!.

lunes, 18 de mayo de 2015

De Mint a Manjaro, pasando por Elementary.

El PC que uso en el trabajo, con Mint 12 Lisa-Mate ya olía a PPSOE, un olor rancio y anticuado: muchas aplicaciones estaban obsoletas. Como en los otros PC que tengo había instalado recientemente Mint 17 Quiana-XFCE me apetecía probar otras cosas.

Tenía mucho interés en probar Elementary OS, y aprovechando la reciente aparición de su última versión, Freya, con base Ubuntu 14.04 me decidí a encasquetarla en el PC. La instalación fue trivial y tras el arranque me encontré con un entorno muy cool y limpito, como muy para votantes de Ciudadanos, pero con pocas aplicaciones, también como para votantes de Ciudadanos. Lancé la instalación de las aplicaciones que uso normalmente con un apt-get install tocho y cuando acabó me puse a enredar un poco con el entorno. Entonces me di cuenta que la cosa no iba fluída. Intenté reproducir un vídeo muy relajante que tengo para pruebas, descargado con youtube-dl y vi que iba a saltos. Carajo, seguro que es la tarjeta de vídeo, ¿que pasa ahora contigo, Ubuntu?. Bueno, pues abreviando: probé múltiples configuraciones con 3 tarjetas de vídeo distintas (ATI, Nvidia y UniChrome), bastante antiguas, todo hay que decirlo, perdiendo varias horas y no hubo manera: el vídeo y el entorno gráfico tenían un lag considerable. Podía dedicarme a averiguar donde estaba el problema pero no me apetecía.

Llegado a este punto en diversas cuestiones de la vida, siempre me hago la misma pregunta: ¿qué haría Gengis Kan en esta situación?. Efectivamente: mandar a la puñeta al Elementary y machacarlo probando otra cosa.

¿Y ahora que instalaba?. Tenía ganas de seguir probando algo nuevo y tenía otro Linux pendiente en la recámara: Manjaro. Un Linux con fama de ligero y agradable y además basado en Arch Linux, que es una familia con la que nunca he trabajado. Dicho y hecho: bajé e instalé la version XFCE en un periquete. Otra vez la instalación fué sencilla (como ha mejorado la cosa desde mi primer Slackware hace 20 años) y esta vez arranqué y lo primero que hice fue probar el vídeo en cuestión. Para mi sorpresa iba allegro molto troppo, mas fluído que nunca. Y el resto del entorno también: hacía tiempo que no me iba tan ligero el PC.

Instalé varias aplicaciones típicas viendo que el gestor gráfico de paquetes no es muy distinto de synaptic pero ante mi sorpresa... vi que algunos paquetes se descargaban y compilaban en mi máquina antes de instalarse (como un Gentoo Linux, que gracioso) y para otros se descargaba la versión .deb, se hacia algo con ella y se instalaba ya en el formato de Arch. Sorprendente. Incluso pude instalar desde repositorios los drivers de la impresora Brother nueva, cuando en Ubuntu y Debian había tenido que bajar los deb de la página de Brother e instalarlos a mano. Cuando averigüé el nombre de las utilidades de gestión de paquetes de línea de comandos vi que tenían  nombres tronchantes: Pacman y Yaourt, parecen dos personajes de Historias Corrientes.

Bueno, pues me gustó tanto que este fin de semana he mandado al averno el Mint que tengo en el Netbook y he instalado el Manjaro Netbook Edition, optimizado para Netbooks con procesador Intel Atom y con un entorno XFCE configurado de forma bastante curiosa, como un Unity de andar por casa:

muy adecuado para pantallas pequeñas. He estado afinándolo en ratos muertos y ciertamente el Netbook ha revivido.

Para acabar, en Un mundo feliz, de Aldous Huxley, dicen que el soma tiene "todas las ventajas del cristianismo y del alcohol; y ninguno de sus inconvenientes". Bueno, pues Manjaro-Arch tiene todas las ventajas de Debian y Slackware, y ninguno de sus inconvenientes. Creo que este es el comienzo de una larga amistad.