Trucos sobre manejo de softwarelibre y gnu linux. También a los programas que hago en gambas3, python, java, etc.... Consejos y trucos sobre otros programas: excel, word, internet, instalación de programas, Arduino y demás....
Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic
Consultas, Desarrollo de programas y petición de presupuestos:
Al instalar una versión de python3, se me produce un error cada vez que intento instalar .deb o probar comandos que no están instaladado: Por ejemplo:
$ neofech Traceback (most recent call last): File "/usr/lib/command-not-found", line 28, in <module> from CommandNotFound import CommandNotFound File "/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py", line 19, in <module> from CommandNotFound.db.db import SqliteDatabase File "/usr/lib/python3/dist-packages/CommandNotFound/db/db.py", line 5, in <module> import apt_pkg ModuleNotFoundError: No module named 'apt_pkg'
Instalar WINE en Linux Mint 19 XFCE4 Correctamente
Actualice hace tiempo linux mint 19, y hoy me ha hecho falta usar wine. Me dio problemas instalarlo normalmente, y entonces encontré este video de Cesar donde explica como hacerlo:
No te olvides que dentro de una semana tenemos una nueva emisión de #MaratonLinuxero conmemorativa del #FLISOL2019. El sábado 20 a partir de las 21:00 (UTC) anímate y participa: preguntas a los Organizadores Nacionales, sorteos y mucho más. @maratonlinuxero
Como cambiar la codificación de caracteres de windows a linux: ISO-8859-1 a UTF-8
Origen del problema:
Me descargué un archivo en formato txt de la web, y cuando lo fui a abrir desde libreoffice writer, me aparecían caracteres raros donde debían de ir caracteres acentuados:
¿que ha pasado? ¿por qué ocurre este problema?
Es problema es la codificación ASCII del juego de caracteres que usa Windows (la ISO-8859-1) que es diferente a la usa Linux (la UTF-8).
Nota: ¿como se que juego de caracteres tiene el archivo?
Con el comando file -i nombre_archivo.txt, nos informa del juego de caracteres que usa el fichero:
Varias Soluciones del problema
Solución 1:
He encontrado el comando iconv que realiza la conversión de los archivos codificados de un juego de caracterea a otro. Este sería la forma de convertir un archivo procedente de windows a linux:
Solución 2:
Os comento esta, porque fue la primera que encontré y además es muy "visual", y no necesita usar ningún comando. Se trata de abrir el archivo con sublime text, (este programa detecta el juego de caracteres y los muestra correctamente en linux), y luego procedemos a "copiar y pegar" el contenido del archivo en otro programa (por ejemplo en libreoffice) y ya lo tenemos convertido.
En linux podemos crear macros (pulsasión de teclas, movimientos del ratón, hacer click con el ratón, etc), con la herramienta cnee, que nos permite sin saber programar crear macros para automatizar tareas tediosas. Os dejo una serie de videotutoriales para que veais como se hace:
Nota:
Para empezar a grabar la macro:
cnee --record --mouse --keyboard -o macro.xns
Para ejecutar la macro:
cnee --replay -f macro.xns -ns
XNEE Creando y reproduciendo macros en linux (1º parte)
Xnee Trucos y Tips (2º parte):
Xnee: Editando el archivo .xns y asignar macros a gestos hechos con el ratón con el programa easystroke.
Lista de reproducción dedicada a los macros con linux:
Tips: Operaciones de Mantenimiento de tu sistema Linux
-Limpieza de Programas Grandes
Con el paso del tiempo, vamos instalando programas y programas, y nos olvidamos de borrarlos... Con la siguiente linea de comando podemos ver los 20 programas instalados que ocupan más sitio en nuestro sistema:
Y usando synaptic, podemos desinstalarlos los que no usemos.
-Quitar Kernels antiguos:
Los kernels ocupan poco sitio (sobre 150 mb),pero cada vez que se va a actualizar, se añaden y realmente solo nos interesa tener instalado 2 (el actual y uno anterior, por si da problemas el kernel actual con nuestro hardware).
Para hacerlo de forma aumática podeis usar este comando:
$sudo purge-old-kernels --keep 2
Nota:
Teneis que tener instalado la terminal byobu: $sudo apt install byobu
-Identificar directorios y archivos "grandes":
Una aplicación muy visual, que nos muestra el tamaño que ocupan nuestros directorios (y los ficheros que contienen), es filelight
En la siguiente imagen, usamos filelight para ver lo que ocupan los directorios y ficheros:
-Revisión de la carpeta de Descarga:
Borrar ficheros que no sean necesarios, o ya no lo usemos
-Programas de descarga p2p:
Revisión de la carpeta donde se descarga contenido descargado por los programas como Telegram, transmission, Deluge, etc
-Vaciar la carpeta de Papelera:
Tanto de nuestro usuario, como de otros (esto lo podrá hacer el administrador) que tengan cuenta en nuestro sistema. Incluida la carpeta de papelera del administrador que se encuentra en /root/.local/Trash
Video:
Añadido el 23/06/2018: -BleachBit:
Este es un programa que me han recomendado para borrados de archivos relacionados con el cache, contraseñas, cookies, historial, etc.. de los navegadores web, y programas que guarden historial y el propio sistema. Os dejo un video
Os dejo un nuevo curso de MiriadaX que acaba de salir, sobre linux:
Descripción de curso:
El objetivo del curso es proporcionar a los estudiantes los conocimientos teóricos y prácticos necesarios para empezar a utilizar el sistema operativo LINUX/UNIX, junto con un conjunto básico de herramientas y servicios en red, como entorno de soporte para el desarrollo de aplicaciones del software.
El curso incluye principios de diseño y conceptos de computación básicos, una guía para instalación del sistema en entorno nativo o como máquina virtual, los fundamentos básicos de uso y administración del sistema, nociones de programación Shell, la aplicación de un conjunto básico de herramientas para desarrollo de aplicaciones y la consolidación práctica global mediante prácticas y un proyecto guiado para el desarrollo de una aplicación en red basada en tecnologías Web con repositorio despliegue en Github.
Módulos del curso:
Módulo 0. Presentación y organización del curso.
Módulo 1. Instalación del sistema operativo Ubuntu
Módulo 2. La interfaz gráfica de Ubuntu.
Módulo 3. Introducción al sistema operativo UNIX.
Módulo 4. El sistema de archivos de UNIX.
Módulo 5. La interfaz de usuario de UNIX.
Módulo 6. Introducción a la programación Shell.
Módulo 7. Administración de sistema en Ubuntu.
Módulo 8. Entorno básico de herramientas de desarrollo en Ubuntu.
A fecha de hoy, 4 de febrero, solo me faltan que se suscriban 75 personas más a mi canal de youtube para seguir siendo Parthens de Youtube (cosa que he sido durante los últimos años), pero con el cambio de política de youtube, ahora, los pequeños canales, nos dejan fuera de monetizar nuestros videos..
Novedades:
Estoy pendiente de realizar una encuesta para el cambio de nombre del canal y empezar a subir un nuevo curso actualizado de video tutoriales sobre Gambas3, un softwarelibre para programar fácilmente en gnu/linux.
Mundo Linux: Marathon Linuxero próximo domingo 3 de diciembre
Otra entrega de este podcast, dedicado al mundo del softwarelibre:
"Nos ha encantado poder contactar con @gabocoronado890 y que se sume a nuestro proyecto. Estará el 3 de dciembre con nosotros. Nos hablará de los sistemas GNU/Linux frente a Windows y sus paradigmas."
El comando screenfetch, nos muestra información de nuestro equipo (ram, cpu, gpu) y distribución gnu/linux (nombre de la distro, kernel, tiempo que lleva encendido el ordenador, paquetes instalados, shell que usamos, resolucion, gestos de ventanas, tema de iconos y GTK y tipo de letra)
Información del comando screenfetch de mi sistema....
La forma más sencilla de instalar software en nuestra distribución linux mint, es usar el gestor de paquete, que nos muestra por categorías los programas disponibles:
Entrando en una de ellas, podemos "navegar" por una gran cantidad de software de todo tipo y con un simple click, instalarlo en nuestro sistema.
Existen multitud de comandos y herramientas que nos pueden ayudar a conocer el hardware de nuestro equipo, os dejo un resumen, de los que he encontrado más útiles:
Desde la terminal:
Listado resumido de nuestro hardware:
$sudo lshw -short
Conocer detalles de tu cpu:
Tenemos varias utilidades:
$lscpu
Para saber más: Postcad sobre Linux estructuras de Directorios y Logs
Encontré hace varios días un Postcad llamado Reality Cracking , donde tenían varios episodios dedicados a explicar la organización interna de las carpetas del sistema operativo linux (estructuras de los directorios) , y también nos hablaban de los logs ( https://es.wikipedia.org/wiki/Log_(registro) ), registros donde nuestro sistema va informando de lo que ocurre o/y problemas que surgen.
Son temas que seguros que si habéis tenido curiosidad os serán muy interesantes
Organización de las carpetas en un sistema Linux
Salida del comando less, mostrando información del syslog
Os dejo los enlaces, para que os lo podáis escuchar y/o descargar :
Muchos de mi "quinta", empezamos con microordenadores de 8 bits como los MSX, SPECTRUM, CPC, COMODORE, etc.. donde venía "de fábrica" el lenguaje de programación BASIC (con algunas variantes entre los distintos modelos de microordenador).
El antiguo lenguaje BASIC, ha tenido muchos prejuicios por los programadores profesionales, al ser un lenguaje que generaba el llamado "código espagueti". (por ejemplo por el uso de la sentencia "GOTO"). Pero esto es algo propio del quehacer de los programadores, no de propio lenguaje, otros lenguajes también tiene la instrucción GOTO (como C o como ensamblador) y no tienen esa mala fama.
BASIC se ha usado muchísimo tiempo en los institutos para enseñar a los alumnos programación y en la universidades del todo el mundo, por universitarios que lo han usado como herramienta "rápida" para elaborar programas para tediosos cálculos o crear prototipos de programas.
Con el paso de los años BASIC ha evolucionado. Un proyecto de softwarelibre llamado GAMBAS creado por Benoît Minisini nos permite tener un Basic Visual para nuestro sistema favorito Gnu/Linux que., capaz de crear aplicaciones gráficas con GTK ó QT, de una manera fácil y sencilla. Además sigue el paradigma de la programación orientada a objetos y programación orientada a eventos., teniendo a nuestra disposición clases, objetos, herencia, observadores, etc.
¿es lento Gambas?
Aqui podeis ver una tabla comparativa entre varios lenguajes y resultado de diversos test Benchmark:
Execution times are measured in seconds.
Benchmark
Python
Perl
Gambas
Gambas + JIT
sort
4,30
8,52
5,36
0,43
polynom
12,47
22,54
9,20
0,60
primes
5,98
9,49
3,84
0,68
nbody
6,02
7,77
5,43
0,93
mandelbrot
6,68
4,96
3,83
0,12
string
9,42
8,16
6,10
6,11
Os dejo un video donde podéis ver los programas que se pueden crear con esta poderosa herramienta: Gambas
No suelo copiar y pegar articulos de otros blogs, pero he hecho una mezcla entre varios artículos que hablan sobre los directorios y sistemas de fichero en gnu linux:
"Al ejecutar $ ls / listamos el contenido del nodo raíz del sistema de ficheros. Aparecen directorios como:
/dev, /etc, /proc, /sys, /var, /tmp y otros."
/es el directorio raíz. De aquí cuelgan todos los directorios del sistema. Dentro del directorio raíz encontramos varios subdirectorios importantes:
/bin contiene ficheros de comandos ejecutables utilizables por todos los usuarios. Aquí tenemos los programas que pueden lanzar todos los usuarios del sistema.
/sbin es para ejecutables de uso exclusivo por el superusuario. Son los necesarios para arrancar y montar el directorio /usr.
/home es un directorio donde se encuentran los directorios personales de los usuarios del sistema.
/usr contiene utilidades y programas generales de usuario:
/usr/bin contiene programas de uso general.
/usr/share contiene archivos compartibles, independientes de la arquitectura.
/usr/share/doc contiene cierta documentación del sistema.
/usr/share/man contiene los manuales.
/usr/etc contiene archivos de configuración de uso global.
/usr/include contiene las cabeceras de C y C++.
/usr/lib contiene las bibliotecas de nuestros programas.
/usr/sbin contiene los programas de administración del sistema.
/usr/src contiene los códigos fuente de nuestros programas.
/dev contiene archivos especiales de bloques y caracteres asociados a dispositivos hardware. Aquí encontramos todos los dispositivos físicos del sistema (todo nuestro hardware).
/lib contiene librerías y compiladores del sistema. Contiene las bibliotecas necesarias para que se ejecuten los programas que tenemos en /bin y /sbin únicamente.
/proc contiene los archivos que reciben o envían información al núcleo. No deberíamos modificar el contenido de este directorio.
/etc contiene los ficheros de configuración y utilidades para la administración.
/var contiene ficheros para el administrador. Este directorio contiene información variable, como registros, datos de los servidores, etc.
/boot contiene los archivos de configuración del arranque del sistema, como por ejemplo GRUB.
/media contiene todas las unidades físicas que tenemos montadas: discos duros, unidades de DVD, pen drives, etc.
/opt sirve para admitir ficheros nuevos creados tras la modificación del sistema. Es un punto de montaje desde el que se instalan los paquetes de aplicación adicionales. Podemos usarla para instalar aplicaciones que no vienen en los repositorios, por ejemplo, aquellas que compilamos a mano.
/tmp es donde se almacenan los archivos temporales.
Además hay 2 directorios especiales:
Directorio actual (.): es un directorio especial que hace referencia al directorio en el que estamos. Si referenciamos al directorio . nos estaremos refiriendo al directorio actual.
Directorio padre (..): es un directorio especial que hace referencia al directorio padre del directorio en el que estamos. Si referenciamos al directorio .. nos estaremos refiriendo al directorio padre del actual. El único directorio que no tiene directorio padre es el directorio raíz /.
AVERIGUAR QUÉ SISTEMAS DE FICHEROS ESTÁN MONTADOS
Dos comandos nos permiten examinar qué sistemas de ficheros y dónde están montados en nuestro sistema.
$ mount ó $ cat /etc/mtab
Su respuesta será algo similar a ésto:
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
/sys on /sys type sysfs (rw,noexec,nosuid,nodev)
varrun on /var/run type tmpfs (rw,noexec,nosuid,nodev,mode=0755)
varlock on /var/lock type tmpfs (rw,noexec,nosuid,nodev,mode=1777)
udev on /dev type tmpfs (rw,mode=0755)
devshm on /dev/shm type tmpfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
lrm on /lib/modules/2.6.22-14-generic/volatile type tmpfs (rw)
securityfs on /sys/kernel/security type securityfs (rw)
Estamos específicamente interesados en estos directorios: /proc, /sys, /var/run, /var/lock, /dev, /dev/shm, /dev/pts, /sys/kernel/security
El directorio /proc
procfs es un sistema de ficheros virtual, creado dinámicamente en memoria. Está usualmente montado en /proc.
El sistema de ficheros proc nos proporciona una interfaz a las estructuras de datos internas del kernel. Así podemos obtener información acerca del sistema y cambiar algunos parámetros del kernel en tiempo de ejecución (sysctl).
Podemos acceder a éste sistema de ficheros en modo texto:
P.ej: $ cat /proc/meminfo # muestra como está distribuida la memoria.
El directorio /proc/sys nos permite cambiar parámetros del kernel.
P.ej: $ sudo echo "fooname" > /proc/sys/kernel/hostname # cambia hostname de nuestro sistema.
Cada proceso tiene un subdirectorio en el sistema de ficheros proc denominado por su PID.
MONTAR EL SISTEMA DE FICHEROS: proc
$ mount -t proc proc /mnt/proc # Este comando monta un sistema de ficheros proc en /mnt/proc.
El directorio /sys
sysfs es un sistema de ficheros almacenado en la RAM e inicialmente basdo en ramfs. Proporciona una manera de exportar estructuras de datos del kernel, sus atributos y la relaciones entre ellos a espacio de usuario.
MONTAR EL SISTEMA DE FICHEROS: sys
$ sudo mount -t sysfs sysfs /sys # El sistema de ficheros sys está siempre activo y con éste comando podemos acceder siempre a él.
Sistema de ficheros tmpfs
Básicamente, tmpfs es un sistema de ficheros que utiliza la memoria RAM (y el swap) como su dispositivo, pero que reserva la memoria dinámicamente, al contrario que en un ramdisk. Por éso únicamente emplea la RAM que necesita.
tmpfs es un sistema de ficheros, no un dispositivo de bloques; símplemente lo montas y está allí. No es necesario usar el comando mkfs.
Este sistema de ficheros es usado en varios archivos y dispositivos como /tmp, /dev/shm, etc.
MONTAR UN SISTEMA DE FICHEROS tmpfs
$ sudo mount -t tmpfs tmpfs /mnt/tmpfs
/mnt/tmpfs tendrá una capacidad inicial muy pequeña, pero conforme se copien y creen nuevos ficheros, el driver de tmpfs reservará más memoria virtual e incrementará dinámicamente la capacidad del sistema de ficheros. Por lo mismo, conforme se vayan borrando ficheros de /mnt/tmpfs, el driver del sistema de ficheros tmpfs dinámicamente disminuirá el tamaño del sistema de ficheros y liberará los recursos de memoria.
La velocidad es la gran ventaja de tmpfs. Como reside en la RAM, el acceso es casi instantáneo. El swap también tiene un rendimiento elevado.
tmpfs no se preserva entre reinicios del sistema porque la memoria RAM es volátil.
Para evitar consumir toda la memoria virtual podemos pasar la opción size a tmpfs:
$ sudo mount tmpfs /tmp -t tmpfs -o size=64m
# Limita su tamaño a 64 megabytes. (muy interesante!!)
En la filosofía Unix cada dispositivo tiene asociado un fichero. El direcotrio /dev es el lugar donde los ficheros que representan dispositivos están almacenados.
udev es el controlador de dispositivos para la serie del kernel linux 2.6. Su función principal es manejar los nodos de dispositivos en /dev. Es el sucesor de devfs y hotplug, lo que significa que se encarga de actualizar el directorio /dev y llevar a cabo las acciones necesarias en espacio de usuario cuando se añaden o quitan dispositivos, incluyendo la carga de firmware.
$ sudo mount -t tmpfs udev /dev
El directorio /dev/pts
El sistema de ficheros devpts proporciona una interfaz para los pseudo dispositivos de terminal (pty). Habitualmente se montan en /dev/pts. Se crea dinámicamente un nuevo dispositivo cuando el dispositivo maestro multiplexador de pty, /dev/ptmx, se abre.
$ sudo mount -t devpts devpts /dev/pts
El directorio /dev/shm
Este dispositivo implementa la memoria compartida POSIX.
P.ej: La memoria compartida puede ser usada como una forma rápida de compartir datos entre programas.
$ sudo mount -t tmpfs shm /dev/shm
El directorio /tmp
Este directorio es donde los programas almacenan sus archivos temporales. No está garantizado que esos datos se preserven entre diferentes invocaciones al mismo programa.
/tmp debe ser borrado cada vez que el sistema se reinicia.
$ sudo mount -t tmpfs tmpfs /tmp
El sistema de ficheros securityfs
Este es un sistema de ficheros que utilizan los módulos del seguridad del kernel linux. Está montado en /sys/kernel/security
$ sudo mount -t securityfs securityfs /sys/kernel/security
El directorio /var/run
Contiene información de sistema y se borra cada vez que el sistema se reinicia.
$ sudo mount -t tmpfs varrun /var/run
El directorio /var/lock
Los ficheros de bloqueo (lock files) deben ser colocados en este directorio.
$ sudo mount -t tmpfs varlock /var/lock
REFERENCIA
La documentación del kernel proporciona buena información sobre sistemas de ficheros.
Para leerla, ejecuta estos comandos:
$sudo aptitude install linux-doc-2.6.22 $zless /usr/share/doc/linux-doc-2.6.22/Documentation/filesystems/proc.txt.gz $zless /usr/share/doc/linux-doc-2.6.22/Documentation/filesystems/sysfs.txt.gz $zless /usr/share/doc/linux-doc-2.6.22/Documentation/filesystems/tmpfs.txt.gz NOTA: Sustituye 2.26.22 por tu versión del kernel.
A continuacion teneis una lista con los directorios mas importantes del sistema y para que se usan. Para acceder a los mismos podeis usar el comando cd 'nombre del directorio'. Para ver el contenido de los mismos podeis usar el comando ls -l 'nombre del directorio'.
Directorio Descripción
-----------------------------------------------------------------------------------------
/bin/ Comandos/programas binarios esenciales (cp, mv, ls, rm, etc.),
/boot/ Ficheros utilizados durante el arranque del sistema (núcleo y discos RAM)
/dev/ Dispositivos esenciales, discos duros, terminales, sonido,
video, lectores dvd/cd, etc
/etc/ Ficheros de configuración utilizados en todo el sistema y que
son específicos del ordenador
/etc/opt/ Ficheros de configuración utilizados por programas alojados dentro
de /opt/
/etc/X11/ Ficheros de configuración para el sistema X Window (Opcional)
/etc/sgml/ Ficheros de configuración para SGML (Opcional)
/etc/xml/ Ficheros de configuración para XML (Opcional)
/home/ Directorios de inicios de los usuarios (Opcional)
/lib/ Bibliotecas compartidas esenciales para los binarios de /bin/, /sbin/ y
el núcleo del sistema.
/mnt/ Sistemas de ficheros montados temporalmente.
/media/ Puntos de montaje para dispositivos de medios como unidades lectoras
de discos compactos.
/opt/ Paquetes de aplicaciones estáticas.
/proc/ Sistema de ficheros virtual que documenta sucesos y estados del
núcleo. Contiene principalmente ficheros de texto.
/root/ Directorio de inicio del usuario root (super-usuario) (Opcional)
/sbin/ Comandos/programas binarios de administración de sistema.
/tmp/ Ficheros temporales
/srv/ Datos específicos de sitio servidos por el sistema.
/usr/ Jerarquía secundaria para datos compartidos de solo lectura (Unix system
resources). Este directorio puede ser compartido por
múltiples ordenadores y no debe contener datos específicos del
ordenador que los comparte.
/usr/bin/ Comandos/programas binarios.
/usr/include/ Ficheros de inclusión estándar (cabeceras de cabecera utilizados
para desarrollo).
/usr/lib/ Bibliotecas compartidas.
/usr/share/ Datos compartidos independientes de la arquitectura del
sistema. Imágenes, ficheros de texto, etc.
/usr/src/ Códigos fuente (Opcional)
/usr/X11R6/ Sistema X Window, versión 11, lanzamiento 6 (Opcional)
/usr/local/ Jerarquía terciaria para datos compartidos de solo lectura
específicos del ordenador que los comparte.
/var/ Ficheros variables, como son logs, bases de datos, directorio raíz
de servidores HTTP y FTP, colas de correo, ficheros temporales, etc.
/var/cache/ Cache da datos de aplicaciones.
/var/crash/ Depósito de información referente a caidas del sistema (Opcional)
/var/games/ Datos variables de aplicaciones para juegos (Opcional)
/var/lib/ Información de estado variable. Algunos servidores como MySQL y
PostgreSQL almacenan sus bases de datos en directorios subordinados de éste.
/var/lock/ Ficheros de bloqueo.
/var/log/ Ficheros y directorios de registro del sistemas (logs).
/var/mail/ Buzones de correo de usuarios (Opcional)
/var/opt/ Datos variables de /opt/.
/var/spool/ Colas de datos de aplicaciones.
/var/tmp/ Ficheros temporales preservados entre reinicios.