viernes, 30 de octubre de 2020

Escanear con multifuncional HP sin cuenta HP

Este artículo es una parte desahogo y otra parte solución. El problema es que el software HP no me deja escanear sin iniciar sesión con cuenta HP.

Cuando comenzó la cuarentena por la pandemia de Covid-19, decidí comprar una impresora para usar en el hogar. Mis requisitos eran:

  • Multifuncional: para no tener que comprar luego un escáner por separado.
  • A color: para poder imprimir sin salir de casa (cuarentena), y no tener que comprar otra impresora más adelante.
  • En red: para que todos en la casa pudiésemos imprimir desde cualquier habitación y cualquier dispositivo.
  • Mantenimiento bajo: Con esto quedaron descartadas las impresoras de cartucho. Y entre láser y tinta continua, tinta continua tiene un costo inicial menor.

La opción ganadora en ese momento, por precio y fecha de entrega fue HP Inkjet Wireless 415. Una impresora multifuncional, a color, con conectividad de red inalámbrica (Wi-Fi), a tinta continua.

La aplicación por defecto para escanear de Windows es realmente básica. Así que instalé los controladores HP, y el software adicional para imprimir y escanear.

Todo marchaba bien hasta hace aproximadamente un mes, cuando quise escanear desde la aplicación HP, y me solicitó crear una cuenta HP. Al principio me pareció un poco molesto, ya que me obligaba a buscar la opción de "no quiero tener que iniciar sesión con ustedes para imprimir con el dispositivo que compré y es de mi propiedad". No conseguí dicha opción así que me molesté un poco más, porque ahora iba a tener que buscar en internet donde habían escondido la opción de escanear sin ser espiado. Conseguí otros usuarios con el mismo problema que yo, y las opciones que vi en el momento fueron: ceder y usar una cuenta HP, conformarme con la funcionalidad de la aplicación para escanear que viene por defecto con Windows, o no usar el escáner en absoluto. Ahí me molesté mucho más, porque ninguna de esas opciones me gustó. 

Me vi obligado a consultar posibles aplicaciones para escanear con licencia libre o abierta. Afortunadamente, vi que habían buenos comentarios sobre NAPS2, por lo cual decidí probarlo y funcionó de maravilla. Acto seguido desinstalé el spyware de HP de mi equipo.

Conclusión

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.

lunes, 16 de octubre de 2017

Combinar archivos de PDF utilizando pdftk

Necesitaba combinar unos archivos PDF de forma que el archivo final incluyera diversos rangos de cada uno de los archivos de entrada en un orden específico. Para eso utilicé la herramienta pdftk, la cual permite indicar la secuencia de rangos que conformarán el archivo de salida .
pdftk A="archivo1.pdf" B="archivo2.pdf" cat A1 B1 A3-20 output salida.pdf

viernes, 13 de octubre de 2017

Descargar archivos en Google Cloud Storage

Estaba haciendo unas pruebas con las API de Google y quise descargar un archivo alojado en la nube de Google para hacer pruebas locales.
Para utilizar una dirección de la forma
gs://proyecto/archivo.txt
Basta utilizar el URL
http://storage.googleapis.com/proyecto/archivo.txt

martes, 3 de octubre de 2017

Crear paquete deb con Checkinstall

  1. Instalar los requisitos mínimos para utilizar checkinstall
    sudo aptitude install build-essential checkinstall
  2. Descargar archivo TAR.GZ con el código fuente de la aplicación.
  3. Descomprimir el archivo TAR.GZ
    tar -xzvf paquete-versión.tar.gz
  4. Entrar en la carpeta descomprimida
    cd paquete-versión
  5. Configurar
    ./configure
  6. Instalamos las dependencias de compilación utilizando el comando:
    sudo aptitude install dependencia1 dependencia2 #etc 
  7. Compilar
    make
  8. Crear e instalar paquete
    sudo checkinstall -D --nodoc -y

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