Mostrando entradas con la etiqueta ubuntu. Mostrar todas las entradas
Mostrando entradas con la etiqueta ubuntu. Mostrar todas las entradas

viernes, 23 de octubre de 2020

Reparar una actualización fallida de Ubuntu

El otro día estaba realizando una actualización en un computador portátil antiguo de Ubuntu 18.04 a Ubuntu 20.04. Recientemente, el computador ha tenido algunos problemas de sobrecalentamiento, por lo cual tuve que cambiarle la pasta térmica del CPU. Como no había presentado más fallas, me confié, y realicé una una actualización a la siguiente versión. Desgraciadamente, a medio camino de la instalación se sobrecalentó el computador, y por seguridad se apagó. De allí, al iniciar el sistema no volvió a entrar al ambiente gráfico, sino a la consola de emergencia.

En consola de emergencia, lo primero que intenté fue reparar la el estado de instalación de los paquetes utilizando el siguiente comando:

sudo apt install -f

Pero esto falló debido a un aparente conflicto de dependencia mutua de udev con snapd. Entonces comencé a buscar en internet, y conseguí que en algunos casos, basta con:

  1. Reparar la instalación anterior.
  2. Reconfigurar los paquetes instalados.
  3. Actualizar el listado de paquetes instalables desde los repositorios.
  4. Actualizar los paquetes instalados en el sistema (que no requieran la desinstalación de paquetes ya presentes en el sistema).

Esto se puede ejecutar utilizando los siguientes comandos:

sudo apt install -f #1
sudo dpkg --configure -a #2
sudo apt update #3
sudo apt upgrade #4

Mi caso no fue solucionable con los comandos anteriores, ya que el conflicto antes mencionado hacía que terminasen con error "sudo apt install -f", "sudo dpkg --configure -a" y "sudo apt upgrade". El único comando que siguió funcionando fue "sudo apt update". 

Entonces seguí investigando y encontré un procedimiento para reparar una instalación fallida iniciando el equipo con un sistema operativo desde un medio externo (LiveUSB o LiveCD), utilizando chroot. En mi caso, utilicé una memoria USB que tenía a la mano con Debian, pero cualquier otra distribución derivada de Debian (Ubuntu, Mint, etc) o incluso otras distribuciones de Linux. Tomé como base los comandos utilizados allí, pero le hice algunas modificaciones. Los pasos ejecutados fueron:

  1. Iniciar el computador desde un sistema Linux externo.
  2. Identificar la partición donde está instalada el sistema a recuperar. En mi caso tuve que probar con varias, porque el computador tiene varias instalaciones de Linux, de diferentes distribuciones, en distintas particiones.
  3. Montar la partición a reparar en /mnt
  4. Montar "enlazados" (utilizando la opción bind) los directorios proc, sys, y dev del sistema a reparar en el ambiente del medio externo.
  5. Copiar el archivo resolv.conf desde el ambiente externo al ambiente a reparar.
  6. Cambiar de ambiente raíz, al sistema a reparar.
  7. Reparar la instalación anterior.
  8. Reconfigurar los paquetes instalados.
  9. Actualizar el listado de paquetes instalables desde los repositorios.
  10. Actualizar los paquetes instalados en el sistema, que no requieran la desinstalación de paquetes ya presentes en el sistema.
  11. Actualizar los paquetes instalados en el sistema, aunque sí requieran la desinstalación de paquetes ya presentes en el sistema.
  12. Desinstalar los paquetes innecesarios
  13. Salir del ambiente raíz del sistema a reparar.
  14. Desmontar los directorios proc, sys, y dev del sistema a reparar previamente montados en el ambiente externo.
  15. Desmontar la partición a reparar en /mnt previamente montada en el ambiente externo.
  16. Reiniciar el sistema en el ambiente ya reparado.

Estos pasos se pueden ejecutar con los siguientes comandos:

fdisk -l #2
sudo mount /dev/sda1/ /mnt #3 Sustituir sda1 por la partición correcta.
sudo mount --bind /proc/ /mnt/proc/ #4.a
sudo mount --bind /sys/ /mnt/sys/ #4.b
sudo mount --bind /dev/ /mnt/dev/ #4.c
sudo cp /etc/resolv.conf /mnt/etc/resolv.conf #5
sudo chroot /mnt/ #6
sudo apt install -f #7
sudo dpkg --configure -a #8
sudo apt update #9
sudo apt upgrade #10
sudo apt full-upgrade #11
sudo apt autoremove  #12
exit #13
sudo umount /proc/ #14.a
sudo umount /sys/ #14.b
sudo umount /dev/ #14.c
sudo umount /mnt/ #15

miércoles, 18 de octubre de 2017

Gedit: abrir archivo actual en firefox

Me sorprendió que Gedit no tenga fácilmente disponible complementos para "enviar" el archivo actual al navegador web, ya que esto es una práctica bastante habitual mientras se editan páginas web.
  1. Instalar los complementos de gedit
    sudo aptitude install gedit-plugins
  2. Abrir gedit
  3. Entrar al menú "Preferencias"
  4. Hacer clic en la pestaña de "Complementos"
  5. Activar el complemento "Herramientas externas"
  6. Cerrar el diálogo de "Preferencias"
  7. En el menú "Herramientas", buscar "Manage External Tools" (Gestionar Herramientas Externas).
  8. Agregar una nueva rutina haciendo clic en el botón "+".
  9. El comando a ejecutar es
    #!/bin/sh
    firefox -new-tab "$GEDIT_CURRENT_DOCUMENT_PATH"
  10. Le configuré
    • Guardar: Todos los documentos
    • Entrada: Documento actual
    • Salida: nada
    • Aplicabilidad: Todos los documentos (Todos los lenguajes)
  11. Darle un nombre a la nueva rutina
  12. Cerrar el diálogo de "Herramientas Externas"
Para ejecutar la rutina creada, basta con ir al menú herramientas, luego "External Tools" (Herramientas Externas),  y hacer clic sobre el nombre que le colocamos a la rutina.

martes, 3 de octubre de 2017

Cambiar versión de VirtualBox de repositorio a ppa

Estaba trabajando en Ubuntu 14.04, con una versión antigua de VirtualBox y decidí actualizarla. Para ello agregué el repositorio oficial de Oracle, siguiendo las instrucciones indicadas.
Luego desinstalé la versión que tenía antigua, y reinstalé la versión más reciente. Sin embargo al intentar ejecutar cualquiera de las máquinas virtuales en el equipo se disparaba el error:
VirtualBox kernel modules do not match the version of VirtualBox
Inicialmente, intenté solucionar el problema infructuosamente desinstalando, reinstalando y reconfigurando el paquete. Luego de esto busqué en internet, y conseguí la solución en un foro.
En resumen:
  1. sudo rmmod vboxnetadp vboxnetflt vboxpci vboxdrv
  2. sudo rm  /lib/modules/*-generic/updates/dkms/vbox*
  3. sudo /sbin/rcvboxdrv setup
  4. sudo /etc/init.d/virtualbox restart

lunes, 16 de febrero de 2015

Modificar los menúes en Gnome Classic

Como antiguo usuario de Gnome2, prefiero utilizar Gnome Classic (antiguamente llamado Fallback) que Gnome3 o Unity. De la misma forma, es la opción de escritorio que dejo a mis padres, quienes ya aprendieron a utilizar Linux con Gnome2, y Gnome Classic les permite utilizarla sin tener que recibir un nuevo entrenamiento.
En estos días se presentó un problema en el panel inferior con la barra de tareas, la cual dejó de mostrar las aplicaciones abiertas para poder alternar entre una y otra, teniendo que recurrir a la combinaciòn de taclas Alt + Tab para cambiar entre ventanas.
En Gnome2, esto se abría resuelto haciendo clic secundario en el panel, y agregando algún elemento (widget) o icono. Luego de un par de búsquedas en Google, pude averiguar que en Gnome Classic sencillamente hay que pisar la tecla Alt y luego hacer el clic secundario en el panel. Después de esto el procedimiento es muy similar, incluso idéntico, al de Gnome 2.

domingo, 22 de junio de 2014

Permitir que un usuario regular apague o reinicie la computadora aun si alguien más está autenticado

Como el computista de la casa, la administración de las computadoras domésticas recae sobre mí. Esta responsabilidad es exclusiva y excluyente para evitar que otros miembros del hogar desconfiguren el equipo o instalen algún software indeseable.

El problema es que a veces abro la sesión en Ubuntu (12.04 LTS) y dejo algo descargando o algo instalando toda la noche y se me olvida cerrar mi sesión. No ha pasado que requiera que mi sesión sobreviva más de una noche. Entonces llega otra persona en el hogar, se autentica con su cuenta hace que lo vaya a hacer y desea apagar el equipo (sobre todo cuando me voy de viaje) y no puede porque el sistema le indica que debe introducir una contraseña de administrador para poder apagar o reiniciar la computadora porque alguien más está autenticado.

Algunas opciones que descarté:
  • Aunque utilizo TeamViewer para dar soporte remoto cuando estoy de viaje, no me atrae el prospecto de tener que conectarme para algo tan sencillo como apagar un equipo.
  • Si bien apagar o reiniciar el equipo físicamente es una opción, no es una buena práctica, por lo tanto no me parece conveniente crear ese hábito entre los miembros de la casa que no son computistas.
  • Programar la desautenticación automática de mi usuario le permitiría a los otros miembros del hogar apagar el equipo una vez mi sesión halla expirado. Pero esto me quitaría la flexibilidad de dejar la computadora haciendo alguna operación que se demore mucho, que de otra sólo requeriría avisarle a los demás que no la apaguen y ya.
La solución que apliqué y me funcionó , la encontré en un hilo sobre este problema en Launchpad.
Primero, hay que editar, con permisos de administrador, el archivo /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy
Para que los usuarios puedan apagar el equipo, cambiar la siguiente sección en el archivo
 <action id="org.freedesktop.consolekit.system.stop-multiple-users">
    <description>Stop the system when multiple users are logged in</description>
    <message>System policy prevents stopping the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
  </action>
a
<action id="org.freedesktop.consolekit.system.stop-multiple-users">
    <description>Stop the system when multiple users are logged in</description>
    <message>System policy prevents stopping the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>
Para que los usuarios puedan reiniciar el equipo, cambiar la siguiente sección en el archivo:
<action id="org.
freedesktop.consolekit.system.restart-multiple-users">
    <description>Restart the system when multiple users are logged in</description>
    <message>System policy prevents restarting the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
  </action>
a
  <action id="org.freedesktop.consolekit.system.restart-multiple-users">
    <description>Restart the system when multiple users are logged in</description>
    <message>System policy prevents restarting the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>
Listo!

Aunque a mí me funcionó, aparentemente hay una mejor forma de hacerlo, la cual probablemente ponga en práctica cuando deba instalar Ubuntu 14.04 LTS en la casa.

La solución correcta (que no he aplicado todavía) para que todos los usuarios puedan apagar el equipo, según AskUbuntu sería crear, con permiso de administrador, un archivo en la ruta /etc/polkit-1/localauthority/50-local.d/ con extensión .pkla (por ejemplo allow_all_users_to_shutdown.pkla) cuyo contenido sea:
[Allow all users to shutdown]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.stop-multiple-users
ResultInactive=no
ResultActive=yes
La solución correcta, según la misma fuente, para que todos los usuarios puedan reiniciar el equipo sería crear, con permiso  de administrador, un archivo llamado /etc/polkit-1/localauthority/50-local.d/ con extensión .pkla (por ejemplo allow_all_users_to_restart.pkla) cuyo contenido sea:
[Allow all users to restart]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.restart-multiple-users
ResultInactive=no
ResultActive=yes

domingo, 1 de junio de 2014

Conectarse a una VPN Microsoft desde Ubuntu

El otro día tenía que hacer unas cosas del trabajo desde la casa, para lo cual hacía falta conectarme a mi estación de trabajo por Red Privada Virtual (VPN).

Ingenuamente pensé que iba ser un proceso del tipo "siguiente, siguiente, siguiente" como cuando uno configura una conexión con OpenVPN. No fue así.

Traduciendo los pasos delineados en otro blog, esto fue lo que hice:
  • Clic en el ícono de red en la esquina superior derecha del escritorio
  • Ir al menú de Conexiones VPN
  • Seleccionar Configurar VPN
  • Agregar una nueva conexión de tipo PPTP
  • Configurar en la pestaña de VPN:
    • Nombre de la Conexión (al gusto)
    • Deseleccionar Conectar automáticamente (se puede cambiar luego)
    • Pasarela (dirección del servidor VPN)
    • Usuario (en caso de pertenecer a un dominio, escribirlo como dominio\usuario)
    • NO fijar la Contraseña; SI cambiar el valor del menú desplegable a Preguntar Siempre
    • NO fijar el Dominio NT
    • Deseleccionar Disponible para todos los usuarios (no es obligatorio pero es buena práctica)
  • En el botón Avanzado de la pestaña VPN
    • Deseleccionar todos los métodos de autenticación excepto MSCHAPv2
    • Seleccionar Usar cifrado punto a punto (MPPE)
    • Dejar el valor del menú desplegable Seguridad en Todas las disponibles (predeterminado).
    • Seleccionar Permitir cifrado de estado completo
    • Deseleccionar Permitir compresión de datos BSD
    • Deseleccionar Permitir compresión de datos Deflate
    • Deseleccionar Usar compresión de cabeceras TCP
    • Deseleccionar Mandar paquetes eco PPP (funciona de ambas maneras, seleccionarlo para depuración de errores)

viernes, 28 de febrero de 2014

Actualizar versión de Ubuntu por consola

Como administrador de la computadora de mis padres, es mi responsabilidad mantener actualizados tanto el sistema operativo como las aplicaciones.
Esta labor me llevó a migrar la computadora parental a Ubuntu, para quitarme de encima las constantes limpiezas de virus que sufría con Windows.
Así estuve, actualizando de una versión LTS de Ubuntu a la siguiente, hasta la 10.04, ya que Ubuntu 12.04 introdujo el controversial entorno de escritorio Unity. Ya había hecho el esfuerzo de entrenar a mis padres durante la migración para que re-aprendiesen a realizar sus labores en Gnome, y llegó la gente de Gnome y Canonical a deprecar el entorno Gnome2 sin ofrecer una interfaz compatible para sustituirla.
Vi nacer MATE y Cinammon, pero estuve esperando que maduraran las opciones, hasta que se hizo sentir la obsolescencia de las aplicaciones disponibles en el repositorio de 10.04.
Lo bueno es que me sentía satisfecho con Gnome Classic como entorno de escritorio en Ubuntu cuando surgió la necesidad de actualizar el sistema, así que podía proceder sin temor de tener que re-entrenar a mis padres de nuevo, o de que ellos se rechazasen a la actualización (que igual iba a ejecutar, así fuese por las malas jajaja).
Pero Update-Manager me falló y no quiso hacer la actualización por GUI, con lo cual acudí a Google y ejecuté los siguientes comandos:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install update-manager-core
sudo do-release-upgrade 

lunes, 29 de julio de 2013

La red no funciona al iniciar Ubuntu

Al arrancar Ubuntu no estaba funcionando la red cableada ni la inalámbrica. Ni siquiera network-manager estaba ejecutándose.
El paso inicial para que recuperar la funcionalidad fue ejecutar
sudo service networking start
sudo service network-manager start
Luego de averiguar en Internet resultó que el problema era la configuración de las interfaces de red. Por lo tanto se reemplazó el contenido de /etc/network/interfaces por
auto lo
iface lo inet loopback
Al reiniciar la computadora, se recuperó la funcionalidad de red.

viernes, 5 de julio de 2013

Migrar fstab a UUID

Una computadora de escritorio que administro ha pasado desde Dapper Drake (Ubuntu 6.06 LTS) hasta Lucid Lynx (Ubuntu 10.04 LTS), y tiene heredado el archivo /etc/fstab sin los identificadores UUID para las particiones.
Cuando se dañó el disco duro donde estaba Windows y GRUB , hubo que reinstalar GRUB en el disco de Ubuntu. Como el disco pasó de ser sdb a ser sda, no se podían ubicar las particiones con el archivo fstab que las referenciaba como /dev/sdb1, /dev/sdb2, etc.
Desde la consola de superusuario que cargó Ubuntu apenas falló el fstab se cambiaron las particiones críticas (/, /home y swap) de sdb a sda.
Pero para evitar que un disco duro o partición nueva descuadre el arranque, es buena idea utilizar los identificadores UUID.
Para listar los UUID de todas las particiones se ejecuta el comando
sudo blkid
Luegose edita el archivo /etc/fstab sustituyendo
/dev/sda1 {opciones}
Por
UUID="{identificador UUID}" {opciones}
Para evitar incovenientes por configuraciones incorrectas, se puede comentar las lineas de tipo /dev/sda1 con "#" y agregar las líneas con UUID="{identificador}".
Al reiniciar el equipo se podrá comprobar que todas las particiones hayan cargado exitosamente.



miércoles, 26 de junio de 2013

Solucionando "sistema de ficheros del archivo tar dañado - archivo de paquete dañado"

Estaba actualizando el sistema desde la consola (sudo aptitude update && sudo aptitude full-upgrade -y) y se presentó un error.
Se actualizarán los siguientes paquetes:        
  linux-libc-dev
1 paquetes actualizados, 0 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 0 B/858 kB de archivos. Después de desempaquetar se usarán 9.216 B.
(Leyendo la base de datos ... 351662 ficheros o directorios instalados actualmente.)
Preparando para reemplazar linux-libc-dev 3.2.0-43.68 (usando .../linux-libc-dev_3.2.0-48.74_amd64.deb) ...
Desempaquetando el reemplazo de linux-libc-dev ...
dpkg: error al procesar /var/cache/apt/archives/linux-libc-dev_3.2.0-48.74_amd64.deb (--unpack):
 sistema de ficheros del archivo tar dañado - archivo de paquete dañado
No se escribió ningún informe «apport» porque ya se ha alcanzado el valor de «MaxReports»
                                                                                         dpkg-deb: error: el subproceso copiado se mató con la señal (Tubería rota)
Se encontraron errores al procesar:
 /var/cache/apt/archives/linux-libc-dev_3.2.0-48.74_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Un paquete no se pudo instalar. Intentado recuperarse:
El problema no se soluciona con hacer "sudo aptitude update" o "sudo aptitude full-upgrade" o "sudo apt-get install -f"
Finalmente eliminé el paquete guardado en la memoria caché.
sudo rm /var/cache/apt/archives/linux-libc-dev_3.2.0-48.74_amd64.deb
sudo aptitude update && sudo aptitude full-upgrade -y

jueves, 9 de mayo de 2013

Compartir red inalámbrica por ethernet en Ubuntu

Hace poco compré un reproductor de discos Blueray que puede conectarse a redes a través de un puerto Ethernet.

Desgraciadamente, en la sala donde se encuentra no llegan cables Ethernet sino la red inalámbrica doméstica.

Como mi computadora portátil suele estar en esa misma sala, decidí utilizarla como puente inalámbrico-cableado. La distro en la computadora es Ubuntu 12.04.

Para ello
  1. Hice clic secundario en el ícono de redes en la esquina superior derecha.
  2. Seleccioné la opción Editar las conexiones.
  3. Hice clic en la pestaña "Cableada" de la ventana que apareció.
  4. Hice clic en Añadir.
  5. En "Cableada", bauticé la conexión con el nombre de mi preferencia ("Compartir", por ejemplo), me aseguré de que esté marcado "Disponible a todos los usuarios" y "Conectar automáticamente". Seleccioné la dirección física (MAC) de la tarjeta de red Ethernet en el menú desplegable.
  6. En ajustes IPv4, en método, seleccióne compartida con otros equipos.
Luego, conecté el reproductor a la computadora utilizando un cable Ethernet cruzado y configuré el reproductor para que tomase los parámetros automáticamente por DHCP. Esta es la manera como el está configurada la red inalámbrica en el enrutador.

domingo, 30 de diciembre de 2012

Escritorio Remoto a Windows desde Ubuntu

Por motivos de trabajo, necesitaba poder entrar remotamente en servidores Windows desde la casa.
Ubuntu trae por defecto un cliente VNC, pero esta no es la tecnología predominante en Windows.
Necesitaba un cliente para RDP.
Después de buscar en google, conseguí la solución: Remmina
Para instalarla en Ubuntu, sólo hace falta ejecutar
$ sudo aptitude install remmina
Una vez instalado, se abre la aplicación, se introducen los datos del servidor, y listo.

martes, 23 de octubre de 2012

Si no quiere funcionar la inalámbrica en Ubuntu

Tengo una portátil Compaq que cuando arranco en Windows 7 se conecta a las redes inalámbricas sin problemas, pero si la arranco en Ubuntu 12.04 no se deja activar.
El error específico que recibo es "La red inalámbrica está desactivada por el interruptor físico".
Primer paso: Identificar mi tarjeta de red
$ lspci | egrep -i wifi
02:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8188CE 802.11b/g/n WiFi Adapter (rev 01)
Luego de buscar en Internet tanto el error como el modelo de la tarjeta, encuentro una primera opción:
$ sudo rfkill unblock all
Algunas personas comentan que les funcionó. No fue mi caso.
Así que seguí buscando y conseguí un procedimiento que he visto antes y que parece ser la medida de último recurso con las computadoras portátiles:
  1. Apagar la computadora
  2. Retirar la batería y el cargador
  3. Presionar el botón de encendido por 30 segundos
  4. Colocar la batería y/o el cargador nuevamente
  5. Encender la computadora
  6. Entrar en la pantalla de configuración de la BIOS y restablecer la configuración por defecto
  7. Iniciar Ubuntu
Ubuntu arrancó sin problemas y pude navegar inalámbricamente



jueves, 31 de mayo de 2012

Si la consola no autocompleta

Acostumbrado a la alta disponibilidad de aplicaciones y repositorios asociados a Debian y sus derivados, además de la gran cantidad de tutoriales disponibles para Ubuntu, se hizo insostenible mantener SUSE como distribución de uso principal.
Instalé Ubuntu en una nueva partición, indicándole cuál partición usar como /home. Sin embargo, pulsar el tabulador en la consola no funcionaba como es lo usual: no se autocompletaban comandos invocados con sudo, no se autocompletaban las opciones de apt-get y aptitude, además de otras molestias menores.
Luego de mucho indagar me di cuenta que el problema yacía en el archivo de configuración de la consola ~/.bashrc que había sido heredado de SUSE.
Bastó ejecutar
cp /etc/bash.bashrc ~/.bashrc
Y luego descomentar el tramo  de autocompletación en consolas interactivas en ~/.bashrc

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi
Ahora sólo hace falta cerrar la consola y abrirla de nuevo. Ya está cargado el nuevo ~/.bashrc

martes, 3 de abril de 2012

Respaldos con Squashfs

Tengo un montón de archivos en la computadora del trabajo que deseo guardar como referencia, sin que ocupen mucho espacio en disco.
Inicialmente había creado archivos tar.xz, sin embargo abrirlos extraer un pequeño archivo de un contenedor de varios gigas se demora demasiado para mi gusto.
Fue entonces cuando me encontré con un artículo que explica como utilizar SquashFS para este propósito. SquashFS crea un sistema de archivos comprimido de sólo lectura utilizando la librería XZ.
Para saber si nuestro sistema Linux es compatible con SquashFs basta con ejecutar
$ modinfo squashfs
Instalar en Ubuntu
Sólo hace falta instalar el paquete squashfs-tools utilizando el Centro de Software Ubuntu, Synaptic o ejecutando
$ sudo apt-get install squashfs-tools
Instalar en SUSE
Se instala el paquete squashfs utilizando Yast o ejecutando
# zypper in squashfs
Utilizar la herramienta
Luego basta con invocar el programa mksquashfs sobre los directorios a comprimir
$ mksquashfs carpeta1/ carpeta2/ archivo.sfs
Y tendremos el archivo comprimido archivo.sfs cuyo contenido es el de las dos carpetas indicadas en el paso anterior. Para poder acceder la información que allí se encuentra, basta con ejecutar:
$ sudo mount -t squashfs -o loop archivo.sfs /mnt #en Ubuntu
# mount -t squashfs -o loop archivo.sfs /mnt #en SUSE
Ahora para acceder a los archivos solo tenemos que buscarlos en la ruta /mnt
$ cd /mnt
$ ls
Para desmontar el archivo sólo basta ejecutar
$ sudo umount /mnt #en Ubuntu
# umount /mnt #en SUSE
Listo!

domingo, 25 de septiembre de 2011

Sincronizar teléfonos Blackberry en Linux

Una de las debilidades de Linux es la sincronización de los teléfonos móviles con el sistema. Existen algunas aplicaciones como Gammu/Wammu para los teléfonos Nokia, y seguro hay algo por allí para los teléfonos con Android. Yo pensé que mi BB y mi PC estaban condenadas a sólo conectarse como unidad de almacenamiento externa, pero encontré un proyecto que está muy bien encaminado para saldar esta brecha.
Se trata de Linberry, una aplicación en español desarrollada para Ubuntu y compatible con otras plataformas Linux. La puedes descargar acá. Permite sincornizar diversos datos de usuario e incluso utilizar el teléfono como modem.
Otra opción, de la cual he leído algo pero todavía no he probado es barry. Sería interesante ver una comparación de funcionalidades de ambas opciones.

jueves, 12 de mayo de 2011

Ver un portal con dominio suspendido

El otro día mi novia me pidió ayuda para conseguir una información específica de una oficina pública, y yo como usuario súper avanzado de Google salté de una vez a hacer esas consultas avanzadas - que ahora agrupan bajo el término Google Hacking.
Pero la oficina no se dejaba: sus sitios estaban caídos, sus perfiles en las redes sociales no tenían la información, y los sitios de terceros sobre la oficina tampoco.
Cuando ya estaba listo para tirar la toalla, decidí consultar los datos WHOIS de los dominios de la oficina, pero no encontré la información que buscaba allí. Lo que sí encontré fue la información de que el registrante del dominio lo había suspendido (eso explicaba que los sitios estuviesen caídos) Y los servidores DNS que el sitio había provisto (¡Bingo!). Algo me decía que con esta información podía circunvenir la suspensión del dominio.
Lo primero que intenté fue agregar esos servidores de nombre a la conexión de internet que utilizaba a través de la consola de Network-Manager. Fracaso.
Luego, pensando que podía ser algo de Network-Manager, me fui derechito a editar /etc/resolv.conf. Fracaso.
Entonces me puse a pensar en alguna herramienta que me permitiese resolver el dominio pasándole el servidor de nombre como parámetro. Ya sabía que nslookup resolvía dominios, pero no sabía si se permitía especificar el servidor de nombres, así que consulté el manual y ví que la sintaxis que deseaba era nslookup dominio servidor. Segundo avance: tenía la dirección IP del servidor que alojaba el contenido de la página.
Pensando que tenía a Dios agarrado por la chiva, navegué directamente a la dirección IP, para encontrarme un panel (cpanel, creo) de esos que tienen los servicios de alojamiento. Fracaso.
Finalmente, se me prendió el bombillo y decidí editar el archivo /etc/hosts y agregar la línea "ip dominio", y luego al navegar a la dirección: ¡Éxito!
Espero les sea de utilidad.

miércoles, 11 de mayo de 2011

Ruby on Rails en Ubuntu

Ruby me ha llamado la atención desde cuando estudiaba en la universidad, sin embargo terminé dándole unas cuantas vueltas al asunto. Ahora que finalmente me decidí a probarlo para un proyectico personal, me encuentro con el conflicto fastidioso entre el ruby viejo de Ubuntu y la última versión del marco de desarrollo Ruby on Rails.
Afortunadamente, San Google me permitió hallar una buena guía en Internet que procedo a resumir y traducir al castellano. Mi sistema es una computadora bajo Ubuntu Lucid (10.04).
  1. Poner la casa en Orden
  2. sudo aptitude update && sudo aptitude full-upgrade
  3. Instalar las dependencias para descargar y compilar todo
  4. sudo apt-get install build-essential git-core curl
  5. Descargar e Instalar Ruby Version Manager (RVM)
  6. bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
  7. Configurar RVM
  8. echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"' >> ~/.bashrc
    . ~/.bashrc
  9. Verificar las dependencias de RVM
  10. rvm notes
    ...
    # For Ruby (MRI & ree) you should install the following OS dependencies:
    ruby: aptitude install build-essential bison openssl libreadline6 libreadline6-dev
    curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0
    libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf
  11. Instalar las dependencias de RVM (salida de comando anterior)
  12. sudo aptitude install build-essential bison openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf
  13. Instalar Ruby
  14. rvm install 1.9.2
  15. Configurar Ruby
  16. rvm use 1.9.2
  17. Verificar Ruby (opcional)
  18. ruby -v
    ruby 1.9.2p136 (2010-12-25 revision 30365) [x86_64-linux]
  19. Configurar versión predeterminada de Ruby
  20. rvm --default use 1.9.2
  21. Instalar Rails
  22. gem install rails
  23. Instalar Complemento para MySQL (opcional)
  24. sudo aptitude install libmysqlclient16-dev
    gem install mysql
  25. Instalar Complemento para PostgreSQL (opcional)
  26. sudo aptitude install libpq-dev
    gem install pg

¡Listo! Ahora a revisar las guías y tutoriales para desarrollar en esta plataforma. Para mayores detalles sobre los pasos de esta guía, pueden ir al artículo original o la documentación de RVM