Mostrando las entradas para la consulta apt-get ordenadas por relevancia. Ordenar por fecha Mostrar todas las entradas
Mostrando las entradas para la consulta apt-get ordenadas por relevancia. Ordenar por fecha Mostrar todas las entradas

Actualizar nuestro sistema Linux

Mantener nuestro sistema actualizado nos brinda más funcionalidad, corrección de posibles errores en versiones previas y sobre todo mayor seguridad.
En este caso vamos a actualizar una Raspberry, la cual no tiene conectado ningún periférico y tenemos administrarlo de forma remota.
Accedemos mediante ssh
ssh <dirección ip raspberry> -l <nombre usuario>
Los siguientes pasos son similares, para nuestra administración en local o en remoto
Actualizamos los repositorios que se encuentran listados en el archivo /etc/apt/sources.list. Realizamos la comprobación si nuestros paquetes tienen una versión mejorada.
sudo apt-get update
Aun no hemos actualizado nuestro sistema. Esta tarea la realizaremos con el comando:
sudo apt-get dist-upgrade
Actualizando paquetes instalados en Raspberry
Actualizando paquetes instalados en Raspberry

Otra forma seria
sudo apt-get upgrade 
Entre las dos opciones que tenemos,  dist-upgrade nos facilitará la actualización resolviendo posibles conflictos con las dependencias.
upgrade
upgrade is used to install the newest versions of all packages
currently installed on the system from the sources enumerated in
/etc/apt/sources.list. Packages currently installed with new
versions available are retrieved and upgraded; under no
circumstances are currently installed packages removed, or packages
not already installed retrieved and installed. New versions of
currently installed packages that cannot be upgraded without
changing the install status of another package will be left at
their current version. An update must be performed first so that
apt-get knows that new versions of packages are available.


dist-upgrade
dist-upgrade in addition to performing the function of upgrade,
also intelligently handles changing dependencies with new versions
of packages; apt-get has a "smart" conflict resolution system, and
it will attempt to upgrade the most important packages at the
expense of less important ones if necessary. The dist-upgrade
command may therefore remove some packages. The
/etc/apt/sources.list file contains a list of locations from which
to retrieve desired package files. See also apt_preferences(5) for
a mechanism for overriding the general settings for individual
packages.

Como resolver dependencias rotas

Como resolver dependencias rotas de una instalación basada en Debian.

En una entrada anterior intentaba solucionar la instalación fallida de un paquete:

Resolver dependencias al instalar un paquete

Pero al desinstalar o purgar una aplicación, puede que por error se borró alguna librería de la que dependa otro programa o servicio. Una de las formas que nos recomienda el propio sistema es la ejecución del script:


sudo apt --fix-broken install


Dependencias rotas

 


Si no ha habido éxito, como fue mi caso ejecutaremos los siguientes comandos

Lo primero que haremos es intentar configurar paquetes que han sido desempaquetados, pero no configurados. Para ello ejecutaremos el siguiente comando en la terminal:


sudo dpkg --configure -a


Seguidamente limpiaremos la cache local de paquetes .deb 


sudo apt-get clean && sudo apt-get autoclean


Regeneramos la caché de los repositorios con el parámetro –fix-missing. De este modo intentaremos detectar y reparar problemas de dependencias en nuestro sistema operativo.


sudo apt-get update --fix-missing


Corregiremos las dependencias rotas. Para ello ejecutaremos el siguiente comando en la terminal: 


sudo apt-get install -f

 

En este punto mi problema se solucionó, restaurando el sistema y pudiendo ejecutar


sudo apt-get dist-upgrade


Para poder actualizar el sistema. 

Resolver dependencias al instalar un paquete

La instalación de paquetes en linux, en algunos casos, suele ser frustrante; sobre todo si el programa que queremos instalar tiene la necesidad de tener instalados previamente en nuestro equipo otros paquetes para que funcione.
Instalaciones incompletas nos bloquea el instalador para nuevos paquetes.
En mi caso instalado el paquete
sudo dpkg -i webmin_1.900_all.deb
Quedo incompleta su instalación, ya que dependía de la instalación de paquetes que no se encontraban en el sistema:
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias     
Leyendo la información de estado... Hecho
Tal vez quiera ejecutar «apt --fix-broken install» para corregirlo.
Los siguientes paquetes tienen dependencias incumplidas:
 webmin : Depende: libauthen-pam-perl pero no está instalado
          Depende: apt-show-versions pero no está instalado
E: Dependencias incumplidas. Intente «apt --fix-broken install» sin paquetes (o especifique una solución).
Ejecutando el comando apt-get
sudo apt-get --fix-broken install
 Leyendo lista de paquetes... Hecho
Creando árbol de dependencias     
Leyendo la información de estado... Hecho
Corrigiendo dependencias... Listo
Se instalarán los siguientes paquetes adicionales:
  apt-show-versions libauthen-pam-perl
Se instalarán los siguientes paquetes NUEVOS:
  apt-show-versions libauthen-pam-perl
0 actualizados, 2 nuevos se instalarán, 0 para eliminar y 0 no actualizados.
1 no instalados del todo o eliminados.
Se necesita descargar 0 B/52,8 kB de archivos.
Se utilizarán 172 kB de espacio de disco adicional después de esta operación.
¿Desea continuar? [S/n] s
Seleccionando el paquete libauthen-pam-perl previamente no seleccionado.
(Leyendo la base de datos ... 367984 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar .../libauthen-pam-perl_0.16-3build5_amd64.deb ...
Desempaquetando libauthen-pam-perl (0.16-3build5) ...
Seleccionando el paquete apt-show-versions previamente no seleccionado.
Preparando para desempaquetar .../apt-show-versions_0.22.7ubuntu1_all.deb ...
Desempaquetando apt-show-versions (0.22.7ubuntu1) ...
Configurando libauthen-pam-perl (0.16-3build5) ...
Configurando apt-show-versions (0.22.7ubuntu1) ...
** initializing cache. This may take a while **
Configurando webmin (1.900) ...
Webmin install complete. You can now login to https://localhost:10000/
as root with your root password, or as any user who can use sudo
to run commands as root.
Fueron satisfechas las dependencias y terminando correctamente la instalación, en este caso, de Wemin

Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

E: No se pudo bloquear /var/lib/dpkg/lock-frontend - open (11: Recurso no disponible temporalmente)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

Alguna vez nos podemos encontrar con este mensaje al intentar instalar un paquete en nuestra distribución Linux. Esto es debido a que hemos realizado una instalación fallida, se ha apropiado de alguno de los archivos necesarios para ejecutar apt-get.
Vamos a averiguar que proceso ha secuestrado nuestros archivos utilizando el comando: lsof

lsof [PARÁMETROS] [ARCHIVO..]
En la invocación del comando lsof, se permite identificar que procesos están utilizando el o los archivos indicados.

Ejecutando este comando para averiguar quien nos tiene bloqueado el archivo que necesitamos para comenzar nuestro nuevo proceso de instalación.

sudo lsof /var/lib/dpkg/lock-frontend

Obtenemos dos informaciones un WARNING y el culpable:

lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
apt-get             15206 root    4uW  REG    8,2                     0 9962051 /var/lib/dpkg/lock-frontend


El usuario root intentó lanzar el comando apt-get y por alguna razón no termino con exito y bloqueo el archivo. De la información anterior nos quedamos con el PID, que es el identificador para matarlo

sudo kill -9 15206

Y con esto liberamos del secuestro los archivos necesarios que nos impedía continuar con nuestra tarea. En este caso la instalación de un nuevo paquete. 
 



 

Los siguientes paquetes se han retenido

Realizando tareas de mantenimiento del sistema, este me respondió con el mensaje:


sudo apt-get full-upgrade 

Leyendo lista de paquetes... Hecho

Creando árbol de dependencias       

Leyendo la información de estado... Hecho

Calculando la actualización... Hecho

Los siguientes paquetes se han retenido:

  rawtherapee

 

A partir de aquí ya no me permite actualizar el sistema

Una de las soluciones que encontré fue, curiosamente, actualizar el paquete que se encontraba retenido, utilizando el comando:

sudo apt-get upgrade <nombre paquete retenido>


sudo apt-get upgrade rawtherapee

Leyendo lista de paquetes... Hecho

Creando árbol de dependencias       

Leyendo la información de estado... Hecho

Calculando la actualización... Hecho

Los siguientes paquetes se ELIMINARÁN:

  rawtherapee-data

Los siguientes paquetes se han retenido:

  gparted

Se actualizarán los siguientes paquetes:

  rawtherapee

1 actualizados, 0 nuevos se instalarán, 1 para eliminar y 1 no actualizados.

Se necesita descargar 17,3 MB de archivos.

Se utilizarán 28,9 MB de espacio de disco adicional después de esta operación.

¿Desea continuar? [S/n] s

Des:1 http://ppa.launchpad.net/dhor/myway/ubuntu bionic/main amd64 rawtherapee amd64 5.8-1dhor~bionic [17,3 MB]

Descargados 17,3 MB en 1s (21,4 MB/s)  

dpkg: rawtherapee-data: problemas de dependencias, pero se desinstalará de todas formas

 tal y como se solicitó:

 rawtherapee depende de rawtherapee-data (= 5.3-1).

(Leyendo la base de datos ... 551670 ficheros o directorios instalados actualmente.)

Desinstalando rawtherapee-data (5.3-1) ...

(Leyendo la base de datos ... 550717 ficheros o directorios instalados actualmente.)

Preparando para desempaquetar .../rawtherapee_5.8-1dhor~bionic_amd64.deb ...

Desempaquetando rawtherapee (5.8-1dhor~bionic) sobre (5.3-1) ...

Configurando rawtherapee (5.8-1dhor~bionic) ...

Procesando disparadores para gnome-menus (3.13.3-11ubuntu1.1) ...

Procesando disparadores para hicolor-icon-theme (0.17-2) ...

Procesando disparadores para mime-support (3.60ubuntu1) ...

Procesando disparadores para desktop-file-utils (0.23+linuxmint8) ...

Procesando disparadores para man-db (2.8.3-2ubuntu0.1) ...


 

E: Sub-process /usr/bin/dpkg returned an error code (1)

A la hora de hacer uso de apt-get bien para instalar, borrar, o actualizar el sistema. Al principio parece que toda va bien pero al final del proceso me indica que ha habido un error y me muestra:

E: Sub-process /usr/bin/dpkg returned an error code (1)

Al parecer al realizar las tareas cotidianas de actualización del sistema, algún paquete a quedado retenido y no permite continuar.

Uno de las formas que encontrado para poder liberar el proceso, que ha quedado atrapado. Es accediendo a la carpeta:

/var/lib/dpkg/info

En esta carpeta se recoge información sobre los paquetes instalados, o en proceso de instalación.

La solución es descubrir que paquete ha quedado retenido y borrar la información sobre el. Por ejemplo utilizando el comando

sudo apt-get update

Nos saldrá el paquete que está creando esta situación, seguido de E: Sub-process /usr/bin/dpkg returned an error code (1)

Accedemos al directorio:

cd /var/lib/dpkg/info

Y borramos los archivos relacionados con el paquete que ha quedado retenido. En mi caso eran varios y último era man-db

sudo rm man-db.*

Volvemos a actualizar las lista de paquetes:

sudo apt-get update

Y ya podemos actualizar nuestro sistema e instalar nuevos paquetes. 

No tiene suficiente espacio libre en /var/cache/apt/archives/

 No tiene suficiente espacio libre en /var/cache/apt/archives/


sudo du -sh /var/cache/apt/archives

Quedarse sin espacio no es lo más habitual si utilizas grandes computadoras. Pero es problema muy común en ordenadores antiguos, o como es el caso en una Raspberry a la hora de actualizar el sistema operativo.

Primero vamos a averiguar que cantidad de memoria está ocupando los archivos en la caché. Utilizaremos el comando du (Uso de Disco) con el argumento -sh

  • -s, pantalla Resumir sólo un total para cada argumento.
  • -h, tamaños de impresión. Formato legible por el hombre (por ejemplo, 1K 234M 2G)

sudo du -sh /var/cache/apt/archives


sudo apt clean

En mi caso el espacio ocupado por la caché de los repositorios es de 85Mb. Y después de utilizar el comando apt clean reducimos al tamaño de una carpeta vacía.
sudo apt clean

sudo apt-get clean

 

 




Servicio multimedia con Plex

Una alternativa para organizar nuestros archivos multimedia es instalando un servidor Plex. Plex es un software privativo, que podremos utilizar de forma gratuita con algunas limitaciones, para embellecer nuestra bibilioteca multimedia y añadir portadas y metadatos, que si utilizamos un servidor DLNA Por ejemplo en el cliente para Smartphone solo nos permite ver un minuto en streaming. En este caso vamos a instalar su servidor en una Raspberry en la que hemos conectado un disco duro, donde se encuentran alojados nuestros archivos. Pero también podremos instalarlo en nuestro ordenador o en un NAS. Esta aplicación es multiplataforma y es posible instalar el servidor y/o su cliente en múltiples dispositivos y plataformas. La APP se encuentra disponible en el catálogo de las principales Smart TV.




Para tener la garantía de que nuestro servidor se encuentre actualizado en todo momento, añadiremos su repositorio en en nuestra lista.

echo deb https://downloads.plex.tv/repo/deb public main | sudo tee /etc/apt/sources.list.d/plexmediaserver.list

Añadiremos las fimras del nuevo repositorio
 
curl https://downloads.plex.tv/plex-keys/PlexSign.key | sudo apt-key add

Refrescaremos las lista de repositorios:

 sudo apt-get update

Y una vez que acabe la operación de actualización realizaremos la instalación de nuestro servidor Plex

 sudo apt-get install plexmediaserver

Instalar Plex server
 
Al final de la instalación nos pedira confirmación para reescribir el archivo que hemos creado al principio donde incluimos donde se encuentra los repositorios de Plex. Confirmaremos la acción por omisión que sera N.

Y ya tendremos  instalado nuestro servidor multimedia. La configuración la realizaremos desde el servicio web creado por le servidor.


En tudireccionip pondremos la dirección ip donde hemos instalado nuestro servidor multimedia Plex.



 La utilización de Plex requiere el registro de una cuenta. Si disponemos de ella podemos vincularlo a nuestro servidor, si no es asi deberemos crear una cuenta nueva.




Nos recuerdan que podremos aumentar las prestaciones si pagamos por el servicio premium.




Daremos nombre a nuestro servidor y añadiremos bibliotecas vinculadas a las carpetas donde se encuentren nuestros archivos mutiltimedia. Caundo más organicemos seamos más elegante será nuestra biblioteca y más facil sera acceder a aquello que queremos reproducir.




Hay muchas opciones de configuración, que resulta muy interesante de investigar para sacarle el maximo rendimiento. Al vincular nuestra cuenta si queremos volver a la configuración de nuestro servidor, podemos volver desde el navegador a través de l a dirección web

 
Ya solo nos quedaría instalar el cliente de Plex en nuestro reporductor multimedia y disfrutar de nuestra biblioteca.



GImageReader lector OCR simple y ligero

El reconocimiento óptico de caracteres expresado con frecuencia con la sigla OCR (del inglés Optical Character Recognition), es un proceso dirigido a la digitalización de textos desde una imagen o por ejemplo de un PDF. En muchos casos tenemos una imagen o un PDF que contiene texto, bien obtenido desde una fotografía, o de un escaneo de un documento, y nuestra intención es obtener ese texto para poder ser usado en: un articulo, o en los apuntes de la escuela. Para evitar mecanografiar la fotografía, hay programas que son capaces de reconocer el texto que contiene el archivo gráfico, capturarlo y así poder ser exportado a otro documento, o permitir un copia-pega.


GImageReader es un lector OCR simple, ligero, gratuito y multi-plataforma para ordenador que nos facilitara la tarea de obtener texto de imágenes o de archivos PDF.

Las funciones que esta aplicación permite realizar son las siguientes:

  • Importar documentos PDF e imágenes desde el disco, dispositivos de escaneado, porta papeles y capturas de pantalla.
  • Procesar múltiples imágenes y documentos de una sola vez
  • Definir del área de reconocimiento manual o automática
  • Reconocer a texto sin formato o documentos hOCR
  • Mostrar el texto reconocido directamente junto a la imagen
  • Procesar el texto reconocido, incluida la revisión ortográfica
  • Importar documentos o imágenes cuyo texto se encuentre en diferentes idiomas
  • Generar documentos PDF a partir de documentos hOCR


- Generar documentos PDF desde el documento hOCR

  • Ubuntu

    Ubuntu: Disponible en ppa:sandromani/gimagereader
Se encuentra disponible en los repositorios de las principales distribuciones linux, y es posible instalarlo desde terminal:
  • Fedora:
yum install  tesseract tesseract-langpack-es gimagereader

  • Aprcity o derivados de Arch

yaourt -S gimagereader

  Si no tenemos tesseract instalado, toca ejecutar:

sudo pacman -S tesseract tesseract-data-eng tesseract-data-spa

    •  En Ubuntu y derivadas como Linux Mint

    sudo add-apt-repository ppa:sandromani/gimagereader

    sudo apt-get update

    sudo apt-get install gimagereader tesseract-ocr tesseract-ocr-spa tesseract-ocr-eng

     El funcionamiento, como ya he dicho, es muy simple. En este caso vamos a hacer una captura de pantalla que contiene texto e imágenes, y vamos a digitalizar el texto para exportarlo a un PDF.

    Pegar imagen que ha sido copiada y capturada en el navegador

    Añadimos un archivo, pegamos una imagen o realizamos una captura de pantalla
    Se nos mostrara el documento seleccionado
    Podemos ajustar de forma manual el área que queremos capturar o dejar que el programa haga su magia y reconozca los textos que contiene.
    Si fuera necesario podemos manipular la imagen para aumentar o disminuir el brillo, contraste, resolución de pantalla, o invertir los colores.
    Una vez se muestran las áreas que contienen el o los texto que queremos digitalizar, le indicaremos en que idioma se encuentra escrito, gImageReader reconocerá el texto y nos mostrará a continuación los textos que ha reconocido. 
    Podremos copiarlo o guardarlo en en un archivo de texto plano, que nos permitirá manipular más tarde.
    En este caso te he descrito los pasos para una imagen, pero el potencial de la aplicación va más allá por que es capaz de digitalizar documentos PDF que no sean editable y exportarlo a un PDF que puedas modificar.
    Vista rápida de la captura de texto de una imagen

    Stacer mantiene nuestro sistema limpio

    Igual que en nuestra casa, debemos realizar labores de mantenimiento y limpieza en nuestro equipo linux, si queremos que se mantenga en plena forma. 
    Stacer es una aplicación diseñada para este fin.


    Con un diseño simple y muy cuidado nos mostrará gráficas sobre el uso de nuestro hardware e información sobre nuestro sistema.
    También dispone de un administrador de tareas. Donde podremos controlar las aplicaciones que se encuentran en ejecución y finalizar aquellas que sean zombies.

    Unas de las funciones más potentes y que recuerda a la popular aplicación de mantenimiento de Windows Ccleaner es localizar los archivos que no son ya necesarios y que ocupan el espacio de nuestro disco



    Tiene una versión totalmente en castellano y nos permite arrancar al inicio.

    Para instalarlo podemos descargar los paquetes de instalación

    https://sourceforge.net/projects/stacer/

    O si dispones de distribución linux basado en Debian podremos añadir el repositorio e instalar Stacer

    sudo add-apt-repository ppa:oguzhaninan/stacer -y
    sudo apt-get update
    sudo apt-get install stacer -y

    Cómo cambiar el idioma del teclado en terminal Linux

     

    Teclado en ingles

    Al realizar una instalación en Linux es posible configurar el tipo de teclado utilizado y la configuración regional, para que podamos las características del idioma castellano. Pero si no ha sido posible, podremos configurarlo a posteriori. Este artículo y el anterior están muy relacionados, o sugiero echar un vistado para una correcta configuración Cambio de idioma y caracteres a español terminal Linux

    El comando que utilizaremos será

    setxkbmap

    Pero para ello deberemos tener instalado la libreria x11-xkb-utils

    sudo apt-get install x11-xkb-utils

    Y ahora si cambiaremos la configuración de distribución del teclado español

    sudo setxkbmap es

    o

    sudo setxkbmap -layout 'es,es' -model pc105

     

    Para que esta nueva configuración tenga efecto deberemos reiniciar el sistema

    Como borrar y eliminar todos los archivos de una aplicación

     Si necesitas más espacio, o la aplicación que instalaste no ha cumplido tus expectativas. Tienes que desinstalar la aplicación, pero si lo utilizas con las herramientas gráficas puede ser que los archivos de configuración y de perfil del programa permanezcan en el disco duro.

    En terminal vamos a desinstalar y purgar la aplicación, vamos a borrar con una sola línea todos los archivos y carpetas relacionados con el programa.

    sudo apt-get --purge remove <Nombre del paquete a desistalar>

    • sudo: Nos permitirá ejecutar el comando con privilegios de administrador
    • apt-get: Comando que puede agregar o eliminar paquetes del sistema.
    • --purge: Le indicamos al comando que borre los archivos de configuración relacionados con la aplicación que queremos desinstalar.
    • remove: Borrar el paquete nombrado.


    Añadir botón apagado encendido Raspberry

    Raspberry es un pequeño ordenador, de bajo coste que podemos utilizar como PC  de sobremesa o como servidor, sin necesidad de conectarle ningún periférico (pantalla, teclado, ratón). En este último caso, la labor de apagado solo es posible desconectando la corriente, con el consabido riesgo de pérdida de datos, y creamos archivos corruptos que impidan y/o dificulten su posterior encendido. También es posible que dañemos la tarjeta SD y debemos sustituirla o formatearla y volver a volcar el sistema operativos e instalar servicios que teníamos instalados y configurarlos otra vez.

    Una forma de evitar este tedioso proceso es incluir un botón de apagado, que también nos será válido para volver a encenderlo si lo dejamos en stand-by.


    Para ello utilizaremos el interfaz I/O del que dispone la Raspberry



    El interfaz GPIO dispone de unos terminal macho numerados. Disponiendo las Raspberry en esta posición su disposición sera de izquierda a derecha y de arriba abajo empezando del 1 al 40


    En nuestro caso utilizaremos los pines 4 y 6 donde colocaremos nuestro botón para realizar el apagado de nuestro pequeño ordenador. 

    Realizaremos un pequeño bricolaje. La manera más sencilla sería con la utilización de dos cables que en una de sus puntas se encuentran una punteras hembras aisladas y en la otra punta de los cables soldar un pequeño pulsador. También podremos utilizar una placa de pruebas para, más adelante poder ampliar nuestros proyectos.


    Dependendiendo del sistema operativo que utilicemos, es posible que tengamos que realizar la instalación de ciertas librerías para que los scripts de Python funcionen correctamente

    sudo apt-get install python-is-python3

    sudo apt-get -y install python3-rpi.gpio

    Los siguientes scripts que manejan los eventos provocados por la pulsación del botón colocado entre el pin 5 y 6 han sido copiados de la página 

    Soloelectronicos.com

     Crearemos un archivo ejecutable para Python que llamaremos listen-for-shutdown.py

    sudo nano listen-for-shutdown.py

    Copiaremos el siguiente script el archivo que hemos creado y guardaremos su contenido


    #!/usr/bin/env python


    import RPi.GPIO as GPIO

    import subprocess



    GPIO.setmode(GPIO.BCM)

    GPIO.setup(3, GPIO.IN, pull_up_down=GPIO.PUD_UP)

    GPIO.wait_for_edge(3, GPIO.FALLING)


    subprocess.call(['shutdown', '-h', 'now'], shell=False)

     

    Seguidamente moveremos el archivo a la carpeta /usr/local/bin/

    sudo mv listen-for-shutdown.py /usr/local/bin/

    Y le daremos atributos de ejecución

    sudo chmod +x /usr/local/bin/listen-for-shutdown.py

    Si tenemos nuestra Raspberry en stand-by, bien por que la hemos apagado desde la línea de comandos o desde nuestro botón de apagado. También es posible encenderlo desde el mismo botón, para ello crearemos un nuevo archivo. 

    sudo nano listen-for-shutdown.sh

    Y copiaremos y guardaremos el siguiente código:


     #! /bin/sh


    ### BEGIN INIT INFO

    # Provides:          listen-for-shutdown.py

    # Required-Start:    $remote_fs $syslog

    # Required-Stop:     $remote_fs $syslog

    # Default-Start:     2 3 4 5

    # Default-Stop:      0 1 6

    ### END INIT INFO


    # If you want a command to always run, put it here


    # Carry out specific functions when asked to by the system

    case "$1" in

      start)

        echo "Starting listen-for-shutdown.py"

        /usr/local/bin/listen-for-shutdown.py &

        ;;

      stop)

        echo "Stopping listen-for-shutdown.py"

        pkill -f /usr/local/bin/listen-for-shutdown.py

        ;;

      *)

        echo "Usage: /etc/init.d/listen-for-shutdown.sh {start|stop}"

        exit 1

        ;;

    esac


    exit 0

     

    Una vez guardado moveremos el archivo a la carpeta  /etc/init.d/

    sudo mv listen-for-shutdown.sh /etc/init.d/

    Y le concederemos privilegios de ejecución:

     sudo chmod +x /etc/init.d/listen-for-shutdown.sh

    Ahora registramos la secuencia de comandos para ejecutar en el arranque y le pasaremos el parámetros de arranque con los dos siguientes comandos.

    sudo update-rc.d listen-for-shutdown.sh defaults

    sudo /etc/init.d/listen-for-shutdown.sh start

    En mi caso tenia instalado Ubuntu Server como sistema operativo. Y es posible que al ejecutar el script te aparezcan uno o varios mensajes de error. Si es asi te dejo los articulos que publique para solucionarlos, y que vuestro botón de apagado funcione correctamente.

    Mensaje de error /usr/bin/env: ‘python’: No such file or directory

    Mensaje de error import RPi.GPIO as GPIO ModuleNotFoundError: No module named 'RPi'


    Usuario desconocido redis en el archivo statoverride

    Uno de los problemas que arrastra Linux en la desinstalación de aplicaciones es que no se purgan completamente. Todos los archivos de configuración y librerías de las que dependia pernmanecen instaladas en el sistema. Eso, como ha sido en mi caso, puede causar un problema de secuestro de procesos. En este caso no podía instalar ni actualizar mi distribución Linux.

    Mensaje de error al actualizar Linux


    dpkg: erro fatal irrecuperable, abortando::
    usuario desconocido 'redis' en el archivo statoverrride
    E: Sub-process /usr/bin/dpkg returned an error code (2)
    Un paquete no se puedo esntalar. Tratando de recuperrarlo:

    Buscando al usuario 'redis' no aparece en el sistema lo único que encuentro es una referencia en el arranque del sistema Boot system : Systemd.

    redis-server

    Redis, que significa Remote Dictionary Server (servidor de diccionarios remoto), es un rápido almacén de datos clave-valor en memoria de código abierto que se puede utilizar como base de datos, caché, agente de mensajes y cola. El proyecto se inició cuando Salvatore Sanfilippo, el desarrollador original de Redis, trataba de mejorar la escalabilidad de su startup italiana. Redis ofrece ahora tiempos de respuesta inferiores al milisegundo, lo que permite que se realicen millones de solicitudes por segundo para aplicaciones en tiempo real de videojuegos, tecnología publicitaria, servicios financieros, sanidad e IoT. Redis es una opción muy habitual en aplicaciones de almacenamiento en caché, administración de sesiones, videojuegos, tablas de clasificación, análisis en tiempo real, datos geoespaciales, servicios de vehículos compartidos, chat/mensajería, streaming de contenido multimedia y publicación/suscripción.

    Deshabilitamos el arranque automático. Redis no es un programa que se encuentre actualmente en mi sistema y al no haber purgado correctamente me esta impidiendo actualizarme.
    La siguiente acción es acceder al archivo statoverride y borrar la linea creada por "usuario" "redis"

    sudo nano /var/lib/dpkg/statoverride

    Fichero statoverride
     

    Buscando veo que el servidor se instaló al probar Steam. Asi que continuo con la desinstación y purga de redis-server
     
    sudo apt-get purge redis-server
    sudo apt-get purge redis-server
     

    Una vez borrado la carpeta /home/usuario,/steam Ya podremos operar con normalidad y nos permite actualizar el sistema.

    Lynx navegador web para terminal

    Lynx aparte de ser un lince es un navegador web y cliente de gopher en modo texto, que podremos utilizar en nuestro terminal.

    Es muy común que para aliviar la carga de potencia sea necesario prescindir del entorno gráfico. Pero que a la vez tengamos que consultar manuales o artículos de ayuda accediendo a páginas web que se encuentran en internet. Para estos casos podremos utilizar Lynx, el entorno es muy simple y en modo texto, aunque si que podremos visualizar imágenes accediendo a los hiperenlaces.



    Para poder instalar Lynx:

    Ubuntu  

    sudo apt install lynx

     

    Debian

     sudo apt-get install lynx


     Arch Linux

     sudo pacman -S lince


     Fedora

    sudo dnf instalar lynx


     OpenSUSE

     sudo zypper instalar lynx


    MS-DOS

     http://ftp.gnu.org/pub/gnu/gzip/gzip-1.2.4.msdos.exe

    Una vez instalado el funcionamiento es muy simple, solo tendremos que invocar al navegador y la dirección que deseamos visitar. En este caso si queremos acceder a enfaseterminal.com utilizariamos secuencia de comando:

    lynx enfaseterminal.com


     Para navegar utilizaremos las teclas ⇑⇓ o la barra de espaciadora para ver la siguiente página

    Para visitar el hipervínculo utilizar

    Para volver hacia atrás 

    Para poder salir de la navegación utilizar Q

    Recuerda que es un navegador simple y no soporta los nuevos estándares multimedia

    El navegador que está utilizando no es compatible con las últimas tecnologías web (HTML5 y CSS3) necesarias para el funcionamiento correcto de este sitio web. Para conseguir una plena compatibilidad le recomendamos estos otros navegadores: Chrome, Firefox, Safari e Internet Explorer (en sus dos últimas versiones y con la vista de compatibilidad desactivada).

     

    En caso de necesitar ayuda utlizar el comando

    lynx

     

    Actualizar Pi-Hole

    En una entrada anterior ya recomendamos la utilización de Pi-Hole para realizar un bloqueo por denegación de DNS de direcciones maliciosas o la publicidad de las páginas que visitamos o de los equipos que queremos monitorizar.
    Para actualizarlo, accederemos a través de SSH al terminal donde tendremos corriendo Pi-hole y ejecutaremos la instrucción:

    pihole -up 1

    Y ya está, ha sido sencillo. 

      [i] Checking for updates...

      [i] Pi-hole Core:     update available

      [i] Web Interface:    update available

      [i] FTL:              update available


      [i] Pi-hole core files out of date, updating local repo.

      [✓] Check for existing repository in /etc/.pihole

      [i] Update repo in /etc/.pihole...HEAD is now at cbc3fbd Merge pull request #3989 from pi-hole/release/v5.2.3

      [✓] Update repo in /etc/.pihole


      [i] If you had made any changes in '/etc/.pihole/', they have been stashed using 'git stash'


      [i] Pi-hole Web Admin files out of date, updating local repo.

      [✓] Check for existing repository in /var/www/html/admin

      [i] Update repo in /var/www/html/admin...HEAD is now at 3ff33a3 Merge pull request #1704 from pi-hole/release/v5.3

      [✓] Update repo in /var/www/html/admin


      [i] If you had made any changes in '/var/www/html/admin/', they have been stashed using 'git stash'


      [i] FTL out of date, it will be updated by the installer.


      [✓] Root user check


            .;;,.

            .ccccc:,.

             :cccclll:.      ..,,

              :ccccclll.   ;ooodc

               'ccll:;ll .oooodc

                 .;cll.;;looo:.

                     .. ','.

                    .',,,,,,'.

                  .',,,,,,,,,,.

                .',,,,,,,,,,,,....

              ....''',,,,,,,'.......

            .........  ....  .........

            ..........      ..........

            ..........      ..........

            .........  ....  .........

              ........,,,,,,,'......

                ....',,,,,,,,,,,,.

                   .',,,,,,,,,'.

                    .',,,,,,'.

                      ..'''.


      [✓] Update local cache of available packages

      [i] Existing PHP installation detected : PHP version 7.4.3

      [i] Performing unattended setup, no whiptail dialogs will be displayed


      [✓] Checking apt-get for upgraded packages... 19 updates available

      [i] It is recommended to update your OS after installing the Pi-hole!


      [i] Installer Dependency checks...

      [✓] Checking for dhcpcd5

      [✓] Checking for git

      [✓] Checking for iproute2

      [✓] Checking for whiptail

      [✓] Checking for dnsutils


      [✓] Supported OS detected

      [i] SELinux not detected

      [i] Performing reconfiguration, skipping download of local repos

      [✓] Resetting repository within /etc/.pihole...

      [✓] Resetting repository within /var/www/html/admin...

      [i] Main Dependency checks...

      [✓] Checking for cron

      [✓] Checking for curl

      [✓] Checking for iputils-ping

      [✓] Checking for lsof

      [✓] Checking for netcat

      [✓] Checking for psmisc

      [✓] Checking for sudo

      [✓] Checking for unzip

      [✓] Checking for wget

      [✓] Checking for idn2

      [✓] Checking for sqlite3

      [✓] Checking for libcap2-bin

      [✓] Checking for dns-root-data

      [✓] Checking for libcap2

      [✓] Checking for lighttpd

      [✓] Checking for php7.4-common

      [✓] Checking for php7.4-cgi

      [✓] Checking for php7.4-sqlite3

      [✓] Checking for php7.4-xml

      [✓] Checking for php7.4-json

      [✓] Checking for php7.4-intl


      [✓] Enabling lighttpd service to start on reboot...

      [✓] Checking for user 'pihole'


      [i] FTL Checks...


      [✓] Detected x86_64 processor

      [i] Checking for existing FTL binary...

      [✓] Downloading and Installing FTL

      [✓] Installing scripts from /etc/.pihole


      [i] Installing configs from /etc/.pihole...

      [i] Existing dnsmasq.conf found... it is not a Pi-hole file, leaving alone!

      [✓] Copying 01-pihole.conf to /etc/dnsmasq.d/01-pihole.conf


      [i] Installing blocking page...

      [✓] Creating directory for blocking page, and copying files

      [i] Backing up index.lighttpd.html

          No default index.lighttpd.html file found... not backing up


      [✓] Installing sudoer file


      [✓] Installing latest Cron script


      [✓] Installing latest logrotate script

      [i] Backing up /etc/dnsmasq.conf to /etc/dnsmasq.conf.old

      [✓] man pages installed and database updated

      [i] Testing if systemd-resolved is enabled

      [i] Systemd-resolved does not need to be restarted

      [✓] Restarting lighttpd service...

      [✓] Enabling lighttpd service to start on reboot...

      [i] Restarting services...

      [✓] Enabling pihole-FTL service to start on reboot...

      [✓] Restarting pihole-FTL service...

      [✓] Deleting existing list cache

      [i] Neutrino emissions detected...

      [✓] Pulling blocklist source list into range


      [✓] Preparing new gravity database

      [i] Using libz compression


      [i] Target: https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts

      [✓] Status: Retrieval successful

      [i] Received 58568 domains


      [i] Target: https://mirror1.malwaredomains.com/files/justdomains

      [✗] Status: Not found

      [✗] List download failed: no cached list available


      [i] Target: https://www.sunshine.it/blacklist.txt

      [✓] Status: Retrieval successful

      [i] Received 82108 domains


      [✓] Storing downloaded domains in new gravity database

      [✓] Building tree

      [✓] Swapping databases

      [i] Number of gravity domains: 140676 (131363 unique domains)

      [i] Number of exact blacklisted domains: 6

      [i] Number of regex blacklist filters: 0

      [i] Number of exact whitelisted domains: 16

      [i] Number of regex whitelist filters: 1

      [✓] Flushing DNS cache

      [✓] Cleaning up stray matter


      [✓] DNS service is listening

         [✓] UDP (IPv4)

         [✓] TCP (IPv4)

         [✓] UDP (IPv6)

         [✓] TCP (IPv6)


      [✓] Pi-hole blocking is enabled


      [i] The install log is located at: /etc/pihole/install.log

    Update Complete! 


      Current Pi-hole version is v5.2.3.

      Current AdminLTE version is v5.3.

      Current FTL version is v5.4.

    Montar disco duro usb en linux

    En está ocasión quería montar un servidor dlna en una Raspberry. Para ello tenía que montar un disco duro externo en un sistema basado en Linux.
    Antes de nada hay actualizar nuestro sistema para que reconozca el sistema de archivos utilizado por Windows NTFS, por que es el sistema en el que esta formateado mi disco duro y no quiero formatearlo para no perder datos.

    sudo apt-get install ntfs-3g

    Luego deberemos averiguar si nuestro sistema ha reconocido nuestro disco duro y donde se encuentra localizado para poder montarlo

    sudo blkid

    /dev/sda2: LABEL="Seagate Expansion Drive" UUID="9026****626679C4A" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="74fd**27-****-483e-bc23-******0"

    /dev/mmcblk0: PTUUID="b78***38" PTTYPE="dos"

    /dev/sda1: PARTLABEL="Microsoft reserved partition" PARTUUID="fca0fbe2-***-49b4-8e51-***ec23"

    En mi caso el disco duro se encuentra en el directorio:

    /dev/sda2

    Crearemos un directorio donde montaremos nuestra unidad usb y donde accederemos a su contenido.

    sudo mkdir /media/discousb

    Le indicaremos a nuestro sistema operativo que monte de forma automática nuestro disco duro en la carpeta que hemos creado. Para ello deberemos editar el archivo fstab que se encuentra en el directorio etc

    sudo nano /etc/fstab

    Descargar video y audio con youtube-dl

    En esta entrada se muestra el uso de la aplicación youtube-dl que permite descargar video y/o audio de servicios de publicación audiovisuales tales como:

    • BBC iPlayer
    • CNN
    • Dailymotion
    • Dropbox
    • Facebook
    • Google Drive
    • LiveLeak
    • Lynda
    • Metacafe
    • Metacritic
    • Openload
    • Streamango
    • Tonton
    • Vid.me
    • Vimeo
    • YouTube
    • Crunchyroll
    • Música
    • 8tracks.com
    • AudioMack
    • Bandcamp
    • Beatport
    • Deezer
    • EveryonesMixtape
    • Freesound
    • Hearthis.at
    • Myspace
    • SoundCloud
    • más....
    Recuerda que algunos audios y videos que se encuentran alojado en estos servicios, pueden estar tutelados bajo licencias privativas y por consiguiente con derechos de autor. Y que deberás actuar en consecuencia a las leyes de tu país.

    Youtube-dl es una aplicación liviana y multiplataforma (Windows, Linux) que nos permite descargar de internet contenido audiovisual a nuestro ordenador, en formatos que podemos utilizar de forma offline, sin conexión a red. Principalmente está enfocado a descargar video y audio del servidor de contenido multimedia Youtube , aunque puede ser utilizado otras plataformas.

    Se encuentra en los repositorios oficiales de Debian

     sudo apt-get install youtube-dl

    Si no disponemos de distribucion basada en Debian, descargamos el archivo de la aplicación y le daremos privilegios de ejecución.

     sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl

    o

    sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl

    Y le daremos permisos daremos permisos de ejecución

     sudo chmod a+rx /usr/local/bin/youtube-dl

    En sistemas Linux es posible que necesitemos instalar el paquete ffmpeg, para la conversión en distintos formatos de audio y video

    Youtube-dl no tiene entorno gráfico, y deberá ser ejecutado el terminal

    Para descargar el archivo en nuestro ordenador, primero deberemos navegar por los distribuidores de contenido favoritos y obtener la dirección url del video del queremos tener copia offline.

    Te dejo unos ejemplos con las opciones básicas, si quieres profundizar más o no encuentras la configuración adecuada, siempre puedes consultar la documentación de youtube-dl

    • Descargar un archivo de <url> donde se encuentre alojada el ejecutable
      • youtube-dl <url>
    • Descargar un archivo de  <url> en una carpeta concreta.
      • Linux usaremos comillas simple para indicar la ruta de la carpeta: youtube-dl -o '<carpeta donde queremos guardar el archivo>' <url>
      • Windows no es necesario usar comillasyoutube-dl -o  <carpeta donde queremos guardar el archivo>' <url>
    • Youtube-dl nos permite descargar ficheros en gran variedad de formatos de audio y video, dependiendo de la fuente. Para listar las opciones disponibles para un medio:
      • youtube-dl --list-formats <url>
    • Descargar video en formato determinado
      • youtube-dl -f mp4 <url>
    • Para descargar el multimedia en todos los formatos soportados
      • youtube-dll --all-formats <url>
    • Para descargar el audio y convertirlo a formato mp3. Recuerde que en Linux, tendremos que tener instalado el paquete ffmpeg.
      • Windows: youtube-dl -x --audio-format mp3 <url>
      • Linux: youtube-dl --format mp3 <url>
    • Descargar con la máxima calidad
      • Mejor video y audio: youtube-dl -f best <url>
      • Mejor audio y convertirlo a mp3: youtube-dl -f bestaudio -x --audio-format mp3 <url>
      • Mejor calidad de video: youtube-dl -f bestvideo <url>
    • Descargar con la mínima calidad disponible
      • Peor video y audio: youtube-dl -f worst <url>
      • Peor audio y convertirlo a mp3: youtube-dl -f worstaudio -x --audio-format mp3 <url>
      • Peor calidad de video: youtube-dl -f worstvideo <url>
    • Descargar varias direcciones que hemos listado en un archivo de texto, indicando cada url en una línea.
      • youtube-dl -a <archivo que contiene url>
    • Descargar el video y los subtitulos, siempre y cuando estén habilitados
      • youtube-dl --embed-subs <url>
    • También permite la descarga de listas de reproducción, simplemente hay que indicar el URL de la lista en lugar del URL del vídeo. La url del la lista tiene que ser: https://www.youtube.com/playlist?list=<lista>
      • youtube-dl <url playlist>

    • Para descargar solo una parte de una lista de reproducción 
      • youtube-dl --playlist-start 5 --playlist-end 10 <url playlist>
    • ERROR: 7UiyB3zXm3c: YouTube said: Unable to extract video data
      • youtube-dl --update
    Algunas de las ventajas de usar youtube-dl son:
    • Es compatible con muchas más páginas web que sus competidores.
    • Es un programa pensado para usarse desde la terminal, lo que lo hace muy ligero y rápido.
    • Es un software libre y gratuito, lo que te garantiza su transparencia y seguridad.
    • No contiene , ni muestra publicidad, como si ocurre con ciertas aplicaciones web.