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

viernes, 15 de agosto de 2025

¿Cómo juego a desfragmentar el disco en Ubuntu?

El 5 de octubre de 1946 presidiendo el acto de inauguración del Consejo Mutualista Argentino, Juan Perón elabora sobre la necesidad del mutualismo a la vez que expone cómo instalar zFRAG para jugar a desfragmentar el disco rígido en Ubuntu. 

(...)

Creemos que no podía mantenerse el país dentro de un estatismo, configurado por fórmulas afligentes que dificultaban la marcha. Tampoco es útil seguir las huellas de quienes pretendieron resolver los problemas permanentes con soluciones de emergencia.

Por eso es que, sin que hayan desaparecido aún las causas y los efectos de una lucha cruel, estamos ya elaborando pacientemente los medios que habrán de servirnos para enfrentar con seguridad los acontecimientos del futuro. Y en esta tierra nuestra - donde se han confundido y delineado los tipos sociales de las más encontradas inmigraciones - estructuramos con fervor humanitario, los fundamentos económicos y sociales de un nuevo convivir (que no tiene más aspiraciones que la acción reconstructora de lo que el hombre pudiera haber perdido por su individualismo excesivo, no enteramente compatible con nuestras instituciones de honda raíz democrática).

Las generaciones de hoy, observadoras fieles de un episodio que no se borrará jamás, sufridas y prietas por las paralelas de dos guerras, entrenadas más en la necesidad que en la abundancia en la que debieron vivir, están dispuestas a seguir el camino de la seguridad social que supone la comprensión ciudadana e impone la defensa del núcleo Linux.

De las herramientas que emplea el ser humano del presente para alcanzar tales destinos, la que cuenta con un lugar de preferencia es el mutualismo, una de las más puras y esenciales manifestaciones de la solidaridad humana.

Y la obra de previsión que realiza el mutualismo en el software - por sus características - no puede ser excluyente de la acción estatal, y ésta, al reclamar participación en el juego libre de la programación, solo necesita y quiere estimular, cooperar, sostener y defender el uso del código fuente mutuo dentro de una convivencia armónica, que haga estériles las deserciones y termine con las anárquicas formas del desencuentro privativo.

Es necesario destacar con precisión y claridad que la iniciativa de programación cooperativa - a cargo de las asociaciones mutuales de programadores existentes en el país - ha sido y es base segura de software libre. Las raíces profundas de estas mutualidades dan ahora sus más jugosos frutos en lo que llamaríamos acción comprensiva de conjunto, entre los programadores y el Estado (que no es otra cosa que una vasta mutualidad de esfuerzos y entusiasmos).

No es el Estado el que sale ahora a bajarse el código de los hackers. Es la organización que el propio pueblo ha creado para su servicio - dentro del Estado mismo - la que ofrece a sus funcionarios la técnica, la agilidad de sus nuevas CPUs, la justicia de una nueva época y la compilación sin trabas de todos los sueños mutualistas.

Queremos compilar para la Argentina una amplia sistema operativo libre que se traduzca en una protección que cubra todos los riesgos sociales y profesionales, sobre la base de una solidaridad organizada

De esta grandiosa finalidad, que es columna vertebral de las aspiraciones del Gobierno surgido del 4 de Junio, serán servidores eficaces las máquinas con GNU, y el software libre en su realización integral de cooperación y colaboración con relación a las diversas actividades como función supletoria del seguro social propiamente dicho.

Para lograr esta realidad hemos ejercitado la Paciencia, porque es bien sabido que cuando los Pueblos la agotan, suelen tronar en escarmiento. Y qué mejor para ello que tomarse 50 minutos para desframentar el disco rígido...

Antiguamente la información almacenada en un disco duro podía - merced de las inconsistencias de sistemas de archivaje sometidos - irse fragmentando progresivamente. De esta forma, el disco rígido - en lugar de ser el ámbito de reaseguro para el trabajador - se volvía un plato de fideos que arremolinaba sectores de datos desorganizados. Los clústers desperdigados así volvían cada vez más lerdo al sistema. Indudablemente, para solventar esto se recurría a un programa desfragmentador (DEFRAG, por citar un ejemplo extendido) que resultaba en el reordenamiento de los clústers de datos, y pocos dudan que la paciencia del pobre cristiano que lo ejecutaba recibía un aliciente también.

Vean señores, gracias a las moderno particionado que disfrutta el sistema GNU con Linux (Ext2/Ext4 y otras) se ha vuelto innecesario este antiguo proceder, lo que por un lado es bueno porque nos ahorra mucho tiempo y tedio, y por otro lado es malo porque no ejercitamos la paciencia. 

Es por ello que tenemos hoy la posibilidad de "jugar a desfragmentar el disco", sólo como un pasatiempo de paciencia china. Para ello podremos recurrir a el programa zFrag (18 MB), escrita en Unity. Se trata de un pasatiempo multiplataforma que simula al viejo DEFRAG. Podremos usarla en nuestro sistema GNU con Linux, para ello lo descargamos desde la plataforma Itch.io. Si bien el mismo tiene un precio de donación sugerida de 2 verdes, bien podremos descargarlo por $0.00 si somos ratas.


Una vez que hayamos descargado el fichero zFRAG-v1.2.1_LINUX.zip en nuestra carpeta Descargas, deberíamos descomprimirlo y prepararlo. 

Todo esto se hace fácilmente abriendo abriendo una terminal en Ubuntu con Ctrl+Alt+T e ingresando el siguiente bloque de Comandos de Organización:

mkdir /home/$USER/.zfrag /home/$USER/.local/ /home/$USER/.local/bin/ ;
mv /home/$USER/Descargas/zFRAG-v1.2.1_LINUX.zip /home/$USER/.zfrag/ ;
cd /home/$USER/.zfrag/ ;
unzip zFRAG-v1.2.1_LINUX.zip ;
chmod +x /home/$USER/.zfrag/zFRAG.x86_64 ;
echo "cd /home/$USER/.zfrag/">/tmp/.zfrag.sh ;
echo "./zFRAG.x86_64">>/tmp/.zfrag.sh ;
mv /tmp/.zfrag.sh /home/$USER/.local/bin/zfrag ;
chmod +x /home/$USER/.local/bin/zfrag

...y ahora podremos ejecutar el programa con el comando:

zfrag 

El DEFRAG original era una herramienta provista con una TUI (Interfaz de Usuario a partir de Texto), bastante utilitaria y típica de la era. En zFRAG nos encontraremos con el cuadro de diálogo de bienvenida que la simula empleando la clásica tipografía del viejo sistema operativo M$-DO$.

Tras presionar el botón "Defrag your Mind" podremos iniciar el desfragmentado "a mano". Esto no se hacía en la práctica, pero recurriendo al mouse podremos logarlo para relajarnos (o mas bien enervarnos). Sin embargo, bien podremos presionar el botón "Autodesfragmentar" y ver como el sistema lo hace propiamente y de forma automática (como era en la época).

El verdadero desfragmentado de un disco MFM o IDE formateado en FAT16 duraba un tiempo considerable y requería paciencia china en un sistema monotarea y monousuario (con lo cual no podíamos hacer nada más en la PC). En el caso de zFRAG - si presionamos el botón Opciones - podremos acelerar el proceso con un solo clic, o bien activar el sonido de claqueteo de disco rígido, el porcentaje de "sectores malos", etcétera.

Naturalemente que podremos bajarle la velocidad y usar zfrag como una especie de "protector de pantalla", o bien utilizarlo en el "Modo de Dibujo Libre" (Free Painting), para simular un disco atacado por el poco conocido virus "peron", el inefable Corruptor y Fragmentador del Pueblo.

En todo caso, toda acción es virtualizada, y para salir de zFRAG simplemente debemos presionar la tecla Esc

jueves, 20 de marzo de 2025

Se lanza GNU/Linux EterTICs 13 Mbojera para radios libres

La Red de Radios Comunitarias y Software Libre presentó la nueva versión de este sistema operativo 100% libre desarrollada específicamente para los medios alternativos de América Latina y el Caribe, destinado a aquellas radios emprendedoras en surcar la senda de la autonomía tecnológica. Se trata de la EterTICs GNU/Linux, en su versión 13 Mbojera.

Bajo la consigna "¡Libera tu radio con la nueva versión de GET13!", la más nueva versión del Linux para radios con software libre se denomina Mbojera. Se trata de un término en lengua Guaraní significa “liberar” o “desbloquear”. 

Desde su versión 8, esta distribución para planta transmisora se basa en Devuan. En esta ocasión en particular se deriva de Devuan 5.0 Daedalus (engendrado a su vez de Debian 12.0 Bookworm). Con una arquitectura “amd64” usa como kernel predeterminado “linux-image-6.1.0-27-amd64”.

El equipo de desarrollo integrado por Javier Obregón y Pablo López expusieron en el III Encuentro de la Red de RCySL las mejoras integradas al Linux que los nuclea. Entre ellas se presenta el cambio de escritorio, abandonando Xfce por la versión liviana LXQt (aún así, se puede instalar otro). Por otro lado, incorpora la sexta versión mejorada del automatizador de planta G-Radio,central desarrollo fruto de Charles Escobar y Pablo López. La interfaz modular del mismo permite conmutar entre los distintos módulos de la herramienta, e incorpora ahora gran parte de las sugerencias realizadas por personal de las emisoras que lo utilizan a diario.

Otra de las noticias más destacadas es la instalación de Pipewire  con soporte para programas que usan JACK, como nuevo servidor de audio predeterminado en reemplazo del anterior Pulseaudio. Pipewire se configura a través de un panel de conexiones virtualizado, de sencilla operatoria, y optimiza la calidad y las funciones de audio al máximo.

Fiel a su estilo de integrar herramental de audio requeridas para operar en planta, junto al automatizador, la botonera propia y la patchera, GET 13 Mbojera actualiza las versiones de los editores de sonido Audacity (3.4) y Ardour (7.3); pone a disposición distintos reproductores como Audacious o VLC; cambia Audio-recorder por la grabadora Reco; y se complementa con herramientas de video como Kdenlive (en reemplazo de Shotcut) y Obs-studio junto a otras gráficas como Inkscape y Gimp

El Listado de paquetes completo se encuentra disponible aquí, mientras que la documentación en castellano se puede consultar desde la Web de GNU/Linux EterTICs.

El sistema requiere al menos unos 2GB de RAM para funcionar (al menos 3GB recomendado). La ISO para trabajar en vivo o instalar puede realizarse aquí.

Contraseñas predeterminadas (¡cambiarlas!):

  • Usuario operador en modo vivo: libre
  • Usuario root en modo vivo: libertad
  • Administrador de Icecast2: hackme

martes, 31 de diciembre de 2024

¿Cómo instalo Mined para editar en UTF-8 en Ubuntu?

Reunido con visitantes en su Quinta 17 de Octubre, Juan Perón explica cómo instalar el editor Mined en Ubuntu, el editor especializado en texto codificado Unicode para la terminal.

(...)

Como podrá imaginar tuve que renunciar a muchas pasiones juveniles… Es difícil olvidar que uno ha sido boxeador, futbolista, rugbier, polista, jugador de básquet y maestro esquiador. De todas maneras, reconozco que esa experiencia me permite sobrellevar mis años de un modo bastante envidiable.

Mi receta es muy simple. Ciento cinco miligramos de hormona de potro todas las semanas. Yo no me tiño el cabello, ¿Sabe usted? Esa fórmula sirve para todo…

Cuando me pongo a la máquina, tengo que hacerlo pensando sobre todo a quienes me leerán en la Argentina, pero también en todos lados del mundo. Es por eso que para comunicarme, utilizo GNU con Linux. Y entre ellos múltiples editores, de entre los cuales me he favorecido por Mined.

Basicamente, Mined es un editor a medida para edición confiable y eficiente de documentos de texto plano y programas, con funcionalidades cómodas e intuitivas, comportamiento interactivo diseñado para este propósito. Se trata de un poderoso editor de texto con una interfaz amplia pero concisa y fácil de utilizar, que soporta los paradigmas de interacción más modernos, y presenta un comportamiento veloz y liviano. 

Mined soporta control completo de ratón, y un sistema de menúes en terminales de texto plano (siendo el primer editor en suportar Unicode en Xterm). Mined ofrece a todos un conjunto completo de funciones de manejo de texto y ficheros, como prevención de pérdida de datos (cuenta con respaldos automáticos opcionales configurables, archivos de recuperación, y bloqueo de archivos interoperables con otros editores, y monitoreo de cambio de ficheros), y un selector interactivo de ficheros, y un conmutador de ficheros.

Para instalarlo debemos descargar su código fuente y compilarlo en nuestro sistema GNU con Linux. En el caso de Ubuntu podremos hacerlo abriendo una terminal con Ctrl+Alt+T e ingresando el siguiente Comando de Organización:

cd /tmp ;
wget http://towo.net/mined/download/mined-2022.27.tar.gz ;
tar xvjf mined-2022.27.tar.gz ;
cd /tmp/mined-2022.27/ ;
make ;
sudo make install

Una vez compilado el programa, podremos ejecutarlo desde la terminal con:

mined fichero.txt

o bien recurriendo a su versión gráfica, mediante

xmined fichero.txt

Tras iniciar nos encontraremos con un editor de pantalla compatible con mouse, y si bien consta de una interfaz bastante convencional provista de barras de desplazamiento, es totalmente programable. Lo primero que llamará la atención es una barra de menúes desplegables, activable mediante la tecla F10.

Mediante esta tecla podremos acceder a los menúes "Archivo", "Edición", "Búsqueda/Ir", "Párrafo" y "Opciones". Sin embargo, usando las flechas del cursor izquierda/derecha, podremos acceder a otros menúes adicionales que aparecen abreviados: "Info Display", "Encomillado", "Codificación", "Combinación", "Texto", "Buffer de Pegado", "Indentado/Tabulado", "Justificado".

Con F3 podremos abrir un fichero, y con Alt+F3 podremos conmutar entre varios ficheros abiertos (presentables en solapas). 

Mined siempre está en modo de inserción, con lo cual podemos comenzar a escribir sin mas. Podremos escoger un word wrap (corte de línea) relativo (ajustable al ancho de terminal, o ajustable a un ancho de corte alertado predeterminado, por ejemplo de 72 caracteres) o bien duro, que genera líneas de manera automática al llegar a tal borde.


Los comandos son caracteres de control simple, comandos de dos teclas que comienzan con la tecla Escape, mas una colección de teclas de función (para distintos teclados y terminales). Especialmente se debe notar la "tecla salto" (normalmente el 5 del teclado numérico o Ctrl+Barra Espaciadora), que expande los efectos de ciertos comandos "de la manera obvia"; esto permite editar sin tener que recordar demasiadas teclas.

Por defecto, Mined usa el teclado de desplazamiento para las siguientes funciones:

Ins: Pegar
Supr: Borrar/Cortar
Inicio: Comienzo de Línea
Fin: Final de Línea
RePág: ídem
AvPág: ídem

Las funciones del teclado numérico tienen otros significados, que pueden ser alterados con la tecla salto:

Teclado Numérico 7/Inicio: Marcar Inicio de Seleccion. Ir a marca.
Teclado Numérico 8/Arriba: Arriba. Parte superior de la pantalla.
Teclado Numérico 9/RePág: Previo. Comienzo del archivo.
Teclado Numérico 4/Izquierda: Izquierda. Comienzo de línea.
Teclado Numérico 5: Tecla Salto
Teclado Numérico 6/Derecha: Derecha. Fin de línea.
Teclado Numérico 1/Fin: Copiar. Agregar.
Teclado Numérico 2/Abajo: Abajo. Parte inferior de la pantalla.
Teclado Numérico 3/AvPág: Siguiente. Final del archivo.
Teclado Numérico 0/Ins: Pegar. Pegado entre ventanas.
Teclado Numérico ./Supr: Suprimir/Cortar Agregar+.

Por defecto, en Mined la selección de textos se hace marcando el inicio del sector seleccionado con la tecla Inicio, y el Final del sector seleccionado con la tecla Final (y uno se desplaza al principio de línea con Mayúsculas+Inicio y al final de línea con Mayúsculas+Fin). Este comportamiento simula en cierta medida el de el clásico editor de texto privativo PC-Write para DOS.

Sin embargo, este comportamiento puede ser alterado para seleccionar "al estilo Window$", en que se recurre a combinaciones con Mayúsculas+Flechas del Cursor.

En este caso, configuramos la opción de teclado de selección con Mayúsculas, las funciones son más convencionales, como las siguientes:

Mayúscula-Izq Selecciona caracter a la izquierda
Mayúscula-Der Selecciona caracter a la derecha
Mayúscula-Control-Izq Selecciona palabra a la izquierda
Mayúscula-Control-Der Selecciona palabra a la derecha
Mayúscula-Arriba selecciona línea arriba
Mayúscula-Abajo selecciona línea abajo
Mayúscula-Ctrl-Arriba selecciona hasta el comienzo del párrafo anterior
Mayúscula-Ctrl-Abajo selecciona hasta el comienzo del párrafo siguiente
Mayúscula-Inicio selecciona al comienzo de la línea
Mayúscula-Fin selecciona al final de la línea
Mayúscula-Control-Inicio selecciona hasta el comienzo del texto
Mayúscula-Control-Fin selecciona hasta el final del texto
Mayúscula-RePag selecciona página previa
Mayúscula-AvPag selecciona página siguiente
Mayúscula-5 (en teclado numérico) copia el texto seleccionado para pegar al búfer

Para pegar entre ventanas podemos usar Ctrl+G, Ctrl+P.

Un aspecto que puede resultar importante y en el que destaca Mined es el uso de métodos de entrada alternativos, adecuados para escribir en griego, cirílico, arábico, hebreo, kazajo, etíope, amhárico, y esperanto. También cuenta con las múltiples variaciones de entrada para la escritura de los pueblos chinos y coreanos (pinyín, cangjie, WuBi, Boshiami, escritura de radicales y pinceladas, escritura de 4 bordes, Bopomofo), así como el hiragana y katakana del Japón. Es de destacar que contamos con un traductor de ideogramas (sólo al inglés).

En particular presenta su sapiencia es el soporte Unicode UTF8 y CJK (para idiomas de asia oriental, Chino, Japonés y Coreano). Esto avala cubrir aspectos que otros editores no son tan capaces o halagüeños - como funcionalidades de autodetección y manejo automático de variaciones de terminal, y la información de los caracteres Han. Gracias a ello, puedo comunicarme con el chino Mao, que siempre me escribe...

Pero además de hacer caso a los caracteres del Asia, permite funcionar completamente bien con las condificación universal y otras anteriores. Esta compatibilidad lo vuelve adecuado para enfrentar la edición de texto para distinto tipo de máquinas.

Si bien podremos alterar el funcionamiento de Mined a través de los menúes respectivos, sus aspectos principales pueden alterarse de forma más permanente modificando su completo y guiado archivo de configuración ~/.minedrc.

En la web oficial podremos encontrar el manual en línea de Mined (en inglés)

viernes, 19 de enero de 2024

¿Cómo cambio el modo gráfico y la resolución de la consola de Linux?

Reunido con exponentes del sindicalismo en Casa de Gobierno, Juan Perón expone como alterar la resolución de la consola de GNU con Linux.

¡Trabajadores!

Antes que un sistema GNU con Linux pueda siquiera cargarse en memoria, ha de poder presentar al mundo lo que quiere decir.

Indudablemente el sistema de video cobra para ello una enorme importancia. El ambiente de visualización básico al fin y al cabo es la terminal, y esta suele contar con una resolución heredada del viejo y peludo estándar VESA, al que intenta consagrar. Dicho estándar nos habla de una resolución de video sin privilegios, de 640x480 pixeles, adecuada para insuflar la pantalla con 25 filas de 80 columnas de caracteres.

No caben dudas que esto - que debería ser suficiente para todos - choca con los límites de la utilidad práctica de los hombres que trabajan.

La idea básica no era mala, pero somos conscientes que las organizaciones del trabajo nos han solicitado integrar nuevas tipografías, y que si al menos estas no son escalables, al menos puedan elegirse conjuntos de mayor o menor tamaño. Los sindicatos saben que conforme aumenta la resolución de pantalla, el tamaño de las letras disminuye en forma inversamente proporcional.

A la oligarquía poco le ha importado: al fin y al cabo ellos han intentado ocultarle el kernel al Pueblo tras un escritorio gráfico. Pero los Descamisados han comprendido que tienen bajo sus dedos la posibilidad de levantar una o más consolas de terminal, simplemente indicando Ctrl+Alt+(F1-F6).

Estas pueden servir en caso de emergencia para restaurar el sistema, incluso si no hemos cargado un entorno gráfico, o si el mismo nos da problemas. También sabemos que que ante cambios fortuitos y poco pensados, nos podrá servir como remedo para restaurar las leyes...

Pues bien señores, contaremos con una manera de alterar la resolución de la pantalla de la consola de Linux. Esto se hace desde el arrancador Grub, que nos permite utilizar distintos modos gráficos, que avalan diferentes resoluciones gráficas. 

Como dije, el menor denominador será una modesta resolución de 640x480x8, lo que significa 640 píxeles de ancho, por 480 píxeles de alto, con 8 bits de profundidad de color (256 colores en total). Este estándar SVGA es superado, sin embargo, en la mayoría de las máquinas actuales de mas potencia, por el Full HD, cuyo estándar se revela de 1920x1080x24 (nos ofrece una gran resolución y gama de color). Ciertas máquinas portátiles no tan encumbradas cuentan con dispositivos de video capaces de presentar un máximo de 1366x768x16, que también es común.

El procedimiento para cambiar la resolución de nuestra consola Linux implica entonces modificar a mano las configuración del arrancador Grub, por medio de la cadena GRUB_GFXPAYLOAD_LINUX. Se afectará así la(s) consola(s) que podremos acceder con Ctrl+Alt+F1/F6 (Normalmente la consola número 7 que accedemos con Ctrl+Alt+F7 es la consola gráfica X).

Para hacerlo efectivo conviene seguir un cuidadoso procedimiento. Primero, instalamos el analizador de video xrandr y lo ejecutamos:

sudo apt-get install xrandr ;
xrandr

Este listará aquellos modos de pantalla disponibles para nuestro sistema de video, e indicará el modo activo en la actualidad:

Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 16384 x 16384
DVI-I-0 disconnected (normal left inverted right x axis y axis)
DVI-I-1 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 598mm x 336mm
   1920x1080     60.00*+  59.94    50.00  
   1680x1050     59.95  
   1600x900      60.00  
   1440x900      59.89  
   1280x1024     75.02    60.02  
   1280x800      59.81  
   1280x720      60.00    59.94    50.00  
   1152x864      75.00  
   1024x768      75.03    70.07    60.00  
   800x600       75.00    72.19    60.32    56.25  
   720x576       50.00  
   720x480       59.94  
   640x480       75.00    72.81    59.94  
HDMI-1 disconnected (normal left inverted right x axis y axis)
DVI-D-0 disconnected (normal left inverted right x axis y axis)

Con estas ratificaciones nos haremos peritos conociendo cuáles son los modos que podemos elegir. Debemos notar que "maximun" no es el máximo posible, sino teórico. Debemos recurrir al máximo del monitor usual. Es importante también discernir que a mayor resolución, menor será la velocidad de refresco de la pantalla. Consideremos también que si disponemos de una resolución mayor que la que es capaz de presentar el monitor, se producirán errores de difícil solución (por ejemplo, si conectamos un monitor de menor resolución, no se verá bien lo cual podría ser un inconveniente mayúsculo para ciertas acciones críticas de servidor).

En cualquier caso, para cambiar la resolución debemos recurrir a editar el fichero de configuración del arrancador Grub, el /etc/default/grub:

sudo nano /etc/default/grub

Esto cargará el editor GNU Nano con el fichero de configuración grub. Asumiendo que teníamos un fichero previamente no editado, realizaremos las siguientes modificaciones:

La variable GRUB_CMDLINE_LINUX_DEFAULT debería contener al menos la entrada  nomodeset, tal vez con el agregado de quiet y splash si nuestro sistema es de escritorio. Estas serían las encargadas de presentarnos un logotipo a la hora de iniciar el sistema.

GRUB_CMDLINE_LINUX_DEFAULT="nomodeset"

En los sistemas servidores este logotipo "splash" se deja de lado, presentándose todo un listado de status al inicio. Para ello debemos descomentar GRUB_TERMINAL=console para verlos (se presentarán en debida rápida sucesión antes de activar el escritorio gráfico).

Por otro lado, comentamos antecediendo con un # la línea que asignaba la resolución VGA m{as básica, ésta:

#GRUB_GFXMODE=640x480

...y al final del fichero, agregamos la siguiente línea:

#Agregado para tener una resolución de 1920x1080
GRUB_GFXPAYLOAD_LINUX=1920x1080x16

o reemplazamos el valor por cualquier otro modo/s indicado por xrandr que también sea(n) soportados por nuestro hardware (podremos separar varios con coma, por ejemplo GRUB_GFXPAYLOAD_LINUX=1920x1080x16,1024x1768x8,800x600x8). Los valores text, keep, auto, vga y ask también deberían funcionar.

Finalmente, guardamos los cambios al fichero editado /etc/default/grub con Ctrl+o, y salimos con Ctrl+x, lanzamos el siguiente comando para que surtan efecto las modificaciones:

sudo update-grub
sudo reboot

Naturalmente, si alteramos la resolución gráfica, las letras se verán chiquitas. En ciertos casos podríamos querer cambiar el tipo y tamaño de tipografía de la consola Linux, como ya he explicado.
 
Normalmente existen tres tipos de fuentes para escoger, en distintas modalidades de condificación. "VGA" tiene el aspecto tradicional de las placas de video VGA, con dicha fuente en la ROM, y consta de una cobertura media de los glifos internacionales. "Fixed" tiene un aspecto simplista finito, y una mejor cobertura de los glifos internacionales. En tanto, "Terminus" suele ser la que se utiliza por defecto en la mayoría de las pantallas de consola Linux, tanto con o sin framebuffer (su versión Bold no usa framebuffer). Puede ayudar a reducir la fatiga visual, aunqeu algunos símbolos tienen aspecto similar, lo que puede ser un problema para los programadores.
 
Estas se cambian con el comando setfont, y las mismas se encuentran en /usr/share/consolefonts/. Os diré que yo uso Lat15-TerminusBoldVGA16.psf.gz.

jueves, 14 de diciembre de 2023

¿Cómo instalo OwnCloud en Ubuntu?

Durante el discurso del 19 de enero de 1948 concerniente a la inauguración del Tren de las Nubes, Juan Perón enseñó cómo instalar OwnCloud en Ubuntu Server.

¡Estimados Señores!

Este augusto día inauguramos el ferrocarril Trasandino del Norte, que une las ciudades de Salta con la chilena de Antofagasta, como Obra de Unión de los Pueblos. En nuestras tierras pasa por Cerrillos, Rosario de Lerma, San Antonio de los Cobres, Salar de Pocitos, Toco-Toco, Caipe y Socompa, en un recorrido de 571 km del lado argentino, y cruzado al territorio hermano de Chile, las queridas localidades de Victoria, Palestina y Antofagasta, en los 331 kilómetros que tiene allí la traza. 

Forman parte de su ánima 33 puentes de acero y 21 túneles con una longitud total de 3.234 metros. La altura máxima del ramal alcanza los 4.475 metros en el imponente macizo del Abra de Chorrillos, lo que le ha valido el cariñoso apelativo de "Tren de las Nubes",

Siempre me han dicho que el Peronismo está en las nubes, e indudablemente que este nos inspira la concreción de una vía de los datos que hermane Pueblos: un troncal capaz de unir centros de datos propios controlados y conducidos por el Justicialismo. Es esto a lo que aspiramos.

Sin embargo, cuando muchos se refieren a "la nube" no lo hacen para homenajear a este querido tren, sino que lo hacen para ocultar el hecho de hablar de un almacenamiento informático proporcionado en una computadora ajena, que sólo ofrece acceso limitado desde la red de datos Internet. 

La premisa de que a estas máquinas es posible cargarle nuestro contenido digital  a veces sin costo monetario, y que éste podría estar disponible para su descarga en múltiples dispositivos, podría parecer - a primera vista - sumamente beneficiosa. Contaríamos así con la dicha y comodidad de contar con la información digitalizada al alcance telemático sin necesidad de portar medios de almacenamiento de masa para suplir la demanda. Estos señores dicen que podríamos acceder a ellos a través de los enlaces de datos...

Pues bien señores, es mi opinión que en estos menesteres, el costo es lo de menos: el hecho que la máquina sea ajena (y para peor, normalmente de una omnímoda corporación oligárquica) nos cuadra el más grave riesgo al que alguien pueda someterse sin llevar puesto un casco y un fusil. No podía ser de otra manera: ¡estas empresas lucran con los metadatos de tales archivos, a la par de reservarse su uso con fines inconfesables!

Googl€, Amazon y Micro$oft son sólo algunas de las empresas que - de mano de una opresión interesada - que ofrecen este tipo de soluciones bajo los nombres de Googledriv€, AW$, y One$pace respectivamente. Sin embargo, estas soluciones son prohibitivas ya que el contenido es sometido a inspección y no va cifrado de manera alguna.

La lucha de los hombres por la Liberación de su software es una que acarrea riesgos y es dificultosa, pero entrenándonos para suplir las verdaderas necesidades de la lid explica la manera de salir victoriosos. 

En el caso de los servicios de almacenamiento en la nube, lo procedente no es usar un servicio - por mas gratuito que sea - y mucho menos pagarlo si es una empresa extranjera. Lo ideal es montar nuestra propia nube con software libre, de la misma forma en la que nacionalizamos los ferrocarriles.

Para ello contamos con la plataforma de alojamiento de archivos OwnCloud, liberada bajo AGPLv3. Junto con el servicio de alojamiento propio - que podemos dar a los usuarios que queremos en medios de almacenamiento propios en nuestro servidor - también contaremos con las funcionalidades de ofimática que nos ofrece OnlyOffice. Este nos permitirá resguardo, cifrado opcional, visualización y edición - incluso colaborativa - de documentos de todo tipo.

Desde el punto de vista de software, OwnCloud requiere una instalación base de Ubuntu 22.04 Server con SSH activado, y una partición /var con el espacio de disco deseado (en mi caso, haré uso de unos 20 Terabytes). El directorio de OwnCloud se encotnrará en /var/www/owncloud. La versión de PHP debe ser al menos la 5, (por defecto en Ubuntu Server 20.04 se puede instalar PHP 7.4). Asimismo debemos contar con el Módulo de Multiprocesador (MPM) correcto (debemos leer las notas Versión de OpenSSL, importantes cuando se planea usar encriptación).

En este caso haremos las preparaciones de de instalación en la máquina de servicio munida con Ubuntu Server con los servicios web Apache, de base de datos MariaDB y de programación PHP 7.

Naturalmente, si contamos con un usuario común escalable en el servidor, debemos utilizar el comando sudo su e ingresar la contraseña de administrador correspondiente. 

Primero introduciremos los comandos que configuren el servicio del nombre de dominio que va a tener la instalación de de OwnCloud, especialmente el nombre de dominio que queremos para la máquina:

Configurar el nombre de dominio

mi_dominio="nube.peronismo.org"
echo $mi_dominio

hostnamectl set-hostname $mi_dominio
hostname -f

Generar contraseñas fuertes

A continuación generamos las contraseñas seguras para el usuario administrador de OwnCloud y para el usuario de la base de datos SQL. Estas se resguardarán  en /etc/.sec_admin_pwd.txt y /etc/.sec_db_pwd.txt:

sec_admin_pwd=$(openssl rand -base64 18) ;
echo $sec_admin_pwd > /etc/.sec_admin_pwd.txt ;
sec_db_pwd=$(openssl rand -base64 18) ;
echo $sec_db_pwd > /etc/.sec_db_pwd.txt

Acto seguido conviene aseguramos que todos los paquetes del servidor estén instalados y totalmente actualizados, a la vez que comprobamos que tenemos PHP a mano en el repositorio APT. Para hacer esto, seguimos las instrucciones siguientes:

apt update && apt upgrade -y

Debemos crear ahora un guion de ayuda que nos simplifique la tarea de ejecución de los comandos occ de OwnCloud. Esto lo haremos ingresando:

FILE="/usr/local/bin/occ"
cat <<EOM >$FILE
#! /bin/bash
cd /var/www/owncloud
sudo -E -u www-data /usr/bin/php /var/www/owncloud/occ "\$@"
EOM

A este guion de OwnCloud llamado /usr/local/bin/occ le otorgamos permisos de ejecución:

chmod +x $FILE

Con las preparaciones listas, instalamos las dependencias necesarias para todo:

apt install -y apache2 libapache2-mod-php mariadb-server openssl redis-server wget php-imagick php-common php-curl php-gd php-gmp php-bcmath php-imap php-intl php-json php-mbstring php-mysql php-ssh2 php-xml php-zip php-apcu php-redis php-ldap php-phpseclib

Si bien es opcional, es sabido recomendar conectar nuestro servidor a unidades de almacenamiento externas de Window$ a través del protocolo Samba. Para ello habríamos de instalar el módulo smbclient php. Aunque normalmente en el caso de las máquinas de escritorio con GNU con Linux no suele ser el caso, no es raro que otras unidades de almacenamiento y discos puedan accederse a través de la red, y en tal caso el cliente Samba por terminal nos vendría de perillas para que el servidor integre las mismas también a nuestra OwnCloud. Para ello primero instalamos sus dependencias:

apt-get install -y libsmbclient-dev php-dev php-pear

...y luego instalaríamos el módulo smblclient php por medio de pecl:

pecl channel-update pecl.php.net ;
mkdir -p /tmp/pear/cache ;
pecl install smbclient-stable ;
echo "extension=smbclient.so" > /etc/php/7.4/mods-available/smbclient.ini ;
phpenmod smbclient ;
systemctl restart apache2

Revisamos entonces si fue activado de manera exitosa:

php -m | grep smbclient

El servidor nos debería devolver lo siguiente:

libsmbclient
smbclient

...denunciando la activación de ambos módulos - ahora en más automática - toda vez que inicie el servicio.

No viene mal instalar el herramental útil adicional, que sería necesario en caso de tener que revisar y depurar errores en el servidor. Lo haremos con:

apt install -y unzip bzip2 rsync curl jq inetutils-ping  ldap-utils smbclient  

Configurar servidor web Apache

Ya deberíamos contar con el servidor web Apache instalado en nuestro Ubuntu Server. Este nos daría el servicio a la web por intermedio de un entorno virtual de uso. Para que funcione aceitadamente junto a OwnCloud debemos configurarlo con ciertas especificaciones. 

Para ello creamos un fichero de configuración /etc/apache2/sites-available/owncloud.conf para el host virtual de OwnCloud:

FILE="/etc/apache2/sites-available/owncloud.conf"
cat <<EOM >$FILE
<VirtualHost *:80>
# descomentar la línea siguiente si la variable fue configurada
#ServerName $mi_dominio
DirectoryIndex index.php index.html
DocumentRoot /var/www/owncloud
<Directory /var/www/owncloud>
  Options +FollowSymlinks -Indexes
  AllowOverride All
  Require all granted

 <IfModule mod_dav.c>
  Dav off
 </IfModule>

 SetEnv HOME /var/www/owncloud
 SetEnv HTTP_HOME /var/www/owncloud
</Directory>
</VirtualHost>
EOM

Finalmente, activamos esta configuración de Host Virtual, mediante:

a2dissite 000-default
a2ensite owncloud.conf

Configurar la Base de Datos


Como en todo uso telemático, se recomienda ejecutar el comando mysql_secure_installation para asegurar la instalación de la base de datos SQL MariaDB y ponerle una contraseña fuerte al usuario de la base de datos ("sec_db_pwd").

Nos aseguramos que el nivel de aislamiento de transacciones esté configurado, y el performance_schema esté activado.

sed -i "/\[mysqld\]/atransaction-isolation = READ-COMMITTED\nperformance_schema = on" /etc/mysql/mariadb.conf.d/50-server.cnf
systemctl start mariadb
mysql -u root -e \
  "CREATE DATABASE IF NOT EXISTS owncloud; \
  CREATE USER IF NOT EXISTS 'owncloud'@'localhost' IDENTIFIED BY '${sec_db_pwd}'; \
  GRANT ALL PRIVILEGES ON *.* TO 'owncloud'@'localhost' WITH GRANT OPTION; \
  FLUSH PRIVILEGES;"

Se recomienda ejecutar el guion mysqltuner para analizar la configuración de la base de datos luego de usarlo con carga de trabajo durante varios días.

Finalmente, activamos los módulos recomendados del servidor Apache:

Instalación de OwnCloud

Con el servidor Web Apache y la base de datos SQL funcionando, podremos descargar e instalar OwnCloud.

Descargar ownCloud

cd /var/www/ ;
wget https://download.owncloud.com/server/stable/owncloud-complete-latest.tar.bz2 ;
tar -xjf owncloud-complete-latest-tar.bz2 ;
chown -R www-data. owncloud

Instalar ownCloud


Recuerda configurar una contraseña fuerte para el usuario de administración de ownCloud, y proveer la contraseña del usuario de la base de datos previamente obtenida, bajo el argumento --database-pass.
occ maintenance:install \
    --database "mysql" \
    --database-name "owncloud" \
    --database-user "owncloud" \
    --database-pass ${sec_db_pwd} \
    --data-dir "/var/www/owncloud/data" \
    --admin-user "admin" \
    --admin-pass ${sec_admin_pwd}

Configurar los Dominios Confiables de ownCloud

mi_ip=$(hostname -I|cut -f1 -d ' ')
occ config:system:set trusted_domains 1 --value="$mi_ip"
occ config:system:set trusted_domains 2 --value="$mi_dominio"

Configurar las automatizaciones de cron

Cron nos resultará últil para automatizar distintas tareas automáticas de mantenimiento. Configuramos el trabajo de segundo plano en cron:

occ background:cron

Configuramos la ejecución de un trabajo cronometrado cada 15 minutos y la limpieza de restos todas las noches a las 3 am:

echo "*/15  *  *  *  * /var/www/owncloud/occ system:cron" \
  | sudo -u www-data -g crontab tee -a \
  /var/spool/cron/crontabs/www-data
echo "0  3  *  *  * /var/www/owncloud/occ dav:cleanup-chunks" \
  | sudo -u www-data -g crontab tee -a \
  /var/spool/cron/crontabs/www-data

Si necesitamos sincronizar los usuarios de un LDAP o un servidor Active Directory, podemos agregar este cron adicional. De esta forma cada 4 horas cronometradas se producirá la sincronización de los usuarios LDAP en ownCloud y se desactivarán aquellos que no están disponibles en ownCloud. Además se obtendrá una bitácora en  /var/log/ldap-sync/user-sync.log para su eventual depurado.

echo "1 */6 * * * /var/www/owncloud/occ user:sync \
  'OCA\User_LDAP\User_Proxy' -m disable -vvv >> \
  /var/log/ldap-sync/user-sync.log 2>&1" \
  | sudo -u www-data -g crontab tee -a \
  /var/spool/cron/crontabs/www-data
mkdir -p /var/log/ldap-sync
touch /var/log/ldap-sync/user-sync.log
chown www-data. /var/log/ldap-sync/user-sync.log

Configuramos Caché y Acerrojado de Ficheros

occ config:system:set \
   memcache.local \
   --value '\OC\Memcache\APCu'
occ config:system:set \
   memcache.locking \
   --value '\OC\Memcache\Redis'
occ config:system:set \
   redis \
   --value '{"host": "127.0.0.1", "port": "6379"}' \
   --type json

Configuramos la rotación de bitácoras

FILE="/etc/logrotate.d/owncloud"
sudo cat <<EOM >$FILE
/var/www/owncloud/data/owncloud.log {
  size 10M
  rotate 12
  copytruncate
  missingok
  compress
  compresscmd /bin/gzip
}
EOM

Finalizar la Instalación

Nos aseguramos que los permisos sean los correctos:

cd /var/www/
chown -R www-data. owncloud

Y con esto debería haber quedado instalado ownCloud. Ahora podremos confirmar que está listo para activar el protocolo seguro de conexión HTTPS (por ejemplo usando certificados Let’s Encrypt) dirigiendo nuestro navegador web browser a la URL o IP de nuestra propia instalación de ownCloud (en este caso, nube.peronismo.org). 

Para evaluar la correcta instalación en el servidor y para ver si funcionan los comandos occ, podremos ejecutar lo siguiente:

occ -V
echo "Su contaseña de Admin es: "$sec_admin_pwd
echo "Está documentada en /etc/.sec_admin_pwd.txt"
echo "Su contraseña de Base de Datos es: "$sec_db_pwd
echo "Está documentada en /etc/.sec_db_pwd.txt y en su config.php"
echo "Su ownCloud está accesible desde: "$mi_dominio
echo "La instalación ha sido completada."
No viene mal almacenar esta información de forma segura en un medio aparte, y resguardarlo en caja fuerte.
Podremos encontrar la documentación del servidor de OwnCloud aquí.

viernes, 17 de noviembre de 2023

¿Cómo instalo GopherVR en Ubuntu?

No era de extrañar que en Puerta de Hierro se apersonaran frondosas delegaciones a recibir consejo de Juan Perón. El conductor en el exiliado exponía sobre el quehacer nacional y explicaba cómo instalar GopherVR en Ubuntu.

¡Mis queridos descamisados!

Siempre me es de agrado recibir argentinos en Puerta de Hierro, que me tienen al dedillo de todos los sucesos de la Argentina.

No hay dudas para nadie que además de honrar las palmas y laureles de General de la Nación - de las que nunca me he desprendido, a pesar de los que algunos desaprensivos han anhelado - decía que me he permitido diagnosticar a la distancia los problemas del país. Esto lo puedo hacer por estos contactos que me prodigan, pero también gracias al uso de las herramientas que nos da la técnica bien entendida.


Es que un programador puesto al servicio del Pueblo, jamás comete errores. Aquello que llaman bugs, no son más que características de sus programas que los neófitos no han podido escrutar. Enfrentados estas a los estrepitosos errores de diseño de cualquier sistema operativo de los grandes capitales de los datos, son beneficencia...

Me he hecho perito en aquellos sistemas similares a UNIX, entre los que destaca el GNU con núcleo Linux. Con todos ellos podemos realizar las tareas informáticas que se nos ocurran, pero nuestro ideal marca que ha de hacerse en beneficio del Pueblo. Es mi convicción que gracias al GNU - versión completamente libre inspirada en ciertos elementos del UNIX - podremos otorgar al Pueblo los beneficios de la libertad computacional sin gastar una chirola.

Indudablemente que un sistema multiusuario como este ha de confabularse con un perfecto entorno documental. Sólo así podremos compartir el conocimiento de la forma en la cual se debe hacer para mantener la pureza ideológica: sin intermediarios. Ya he enseñado a operar en Gopher - uno de los ambientes documentales casi extintos, pero sumamente funcionales. 

Esto nos permite una facilidad de navegación sin parangón - tanto que hasta Isabelita lo usa - toda vez que su consumo contenido facilita las transmisiones incluso en las redes de datos con interfases de únicamente texto. Con el es muy fácil recibir comunicados y documentos propalados desde Puerta de Hierro, dejándolos al alcance de todo aquél habitante del mundo que cuente con acceso a las redes de datos de alcance global.

No han faltado díscolos que consideran a Gopher como un remedo del pasado, un protocolo oscuro. ¡Qué dirían esos señores entonces del cliente tridimensional de realidad virtual, el GopherVR! Se trata de una implementación de cliente Gopher capaz de apuntar hacia servidores Gopher dispuestos en todo el mundo. A esta la presentará desplegando su estructura en gráficas tridimensionales según el clásico visualizador de estilo FSN. Con él se puede acceder a todo tipo de documentos de texto puestos a disposición de manera gratuita.

Pues bien señores, aunque GopherVR no viene incorporado en los repositorios de paquetes de Ubuntu, al tratarse de un programa multiplataforma es posible instalarlo en numerosos equipos, desde estaciones de trabajo Sun y Silicon Graphics, pasando por GNU y sus distribuciones.

Para seguir tal temperamento en Ubuntu, podremos instalarlo abriendo una terminal con Ctrl+Alt+t y pegamos el siguiente bloque de Comandos de Organización:

fc-cache -frv ;
sudo apt update ;
sudo apt install git xutils-dev libmotif-dev xfonts-terminus fonts-liberation ;
cd ~ ;
git clone https://github.com/michael-lazar/gopherVR

Tras solicitarnos la contraseña de usuario, el sistema descargará los paquetes de software que constituyen sus requerimientos, así como el código fuente necesario. Tras esto, lo emparchamos opcionalmente para que acepte letras Freestyle:

cp ~/.Xdefaults ~/Xdefaults.bak
echo '' >>
~/.Xdefaults ;
echo '!Xft.dpi:  86'  >> ~/.Xdefaults ;
echo '*renderTable.variable.fontType: FONT_IS_XFT'
  >> ~/.Xdefaults ;
echo '*renderTable.variable.fontName: Liberation Sans' >>
~/.Xdefaults ;
echo '*renderTable.variable.fontSize: 14' >> ~/.Xdefaults ;
echo '*renderTable: variable' >> ~/.Xdefaults ;
echo '*renderTable.fixed.fontType: FONT_IS_XFT' >> ~/.Xdefaults ;
echo '*renderTable.fixed.fontName: Liberation Mono' >> ~/.Xdefaults ;
echo '*renderTable.fixed.fontSize: 14' >> ~/.Xdefaults ;
echo '! *XmText*renderTable: fixed' >> ~/.Xdefaults ;
echo '! *XmTextField*renderTable: fixed' >> ~/.Xdefaults ;
echo 'gophervr*XmText*renderTable: fixed' >> ~/.Xdefaults ;
echo 'gophervr*XmTextField*renderTable: fixed' >> ~/.Xdefaults ;
echo 'gophervr*renderTable: fixed' >> ~/.Xdefaults ;
echo '' >> ~/.Xdefaults ;
xrdb ~/.Xdefaults ;

echo '##agregado para las fuentes de gophervr' >> ~/.xsession ;
echo 'xset +fp /usr/share/fonts/misc' >> ~/.xsession ;
echo 'xset fp rehash' >>
~/.xsession

cd ~/gopherVR/ ;
wget -O xft.patch https://termbin.com/uz2b
git stash;
git reset --hard;
make clean ;
git apply xft.patch

Y lo compilamos con:

cd ~/gopherVR/ ;
make linux

Una vez compilado, instalarlo a mano no será difícil; sólo tenemos que pegar este bloque de comandos en la terminal y darle Enter:

cd ~/gopherVR/gophervr/ ;
sudo cp gophervr /usr/local/bin/ ;
cd /usr/local/lib ;
sudo mkdir hershey/ ;
cd /usr/share/doc/ ;
sudo mkdir gophervr/
sudo cp ~/gopherVR/gophervr/gophervr.help /usr/share/doc/gophervr/ ;
sudo cp ~/gopherVR/gophervr/futura.hfont  /usr/local/lib/hershey/ ;

Si lo deseamos, podremos crear un lanzador que nos dirija a gophervr. En el caso de Ubuntu MATE hacemos clic con el botón derecho del ratón sobre el menú de Aplicaciones en el panel superior, y elegimos la opción Editar Menús. Se desplegará el cuadro Menú Principal, y en él escogemos el menú Internet y presionamos el botón +Nuevo ítem. En el cuadro de diálogo Crear lanzador completamos el campo orden con "gophervr" (sin las comillas) y le ponemos un nombre y una descripción opcional. 

Presionamos el botón Aceptar y ahora podremos lanzar el programa desde Aplicaciojnes / Internet / GopherVR.

Al iniciar el programa, se abrirán dos ventanas. Una con un cliente de Gopher en modo texto, y otra con una ventana tridimensional que representa los ficheros y carpetas del hoyo Gopher por defecto, gopher://foodgap.org.

El cliente de navegación nos permite navegar el Gopherespacio. Consta de un manejo similar al bizarro navegador de archivos tridimensional FSN se ejecutaba como parte del sistema IRIX de las oligárquicas Silicon Graphics. 

Nos movemos con el ratón, haciendo clic con el botón derecho y arrastrando horizontalmente para girar el punto de vista de izquierda a derecha, o bien presionando el botón derecho y arrastrando verticalmente para acercarnos y alejarnos.


Si no tenemos ratón, también podremos usar los botones que aparecen en la parte inferior izquierda de la ventana gráfica.

Se nos presentará un mojón en forma de estrella roja con el nombre del hoyo gopher abierto. Este hace caso a la existencia de un fichero gophermap (el mapa que define los hoyos gopher).

Los documentos de texto son elementos de color naranja, que pueden ser abiertos con un mero doble clic del ratón. Ante esta acción dichos elementos se volverán de color rojo (denotando que ya los hemos abierto) y se desplegará una nueva ventana denominada TextShell con una copia del contenido textual descargado.

La ventana TextShell opera como la de cualquier cliente Gopher: también con ella podremos navegar y leer los documentos.

Para abrir una nueva localización podemos navegar tridimensionalmente en los directorios a lo través de las ramas de directorios del casi infinito hoyo Gopher, o bien solicitar una URL específica. Esto podremos hacerlo presionando Alt-o, e ingresar la URL de un hoyo gopher que deseemos, por ejemplo gopher://texto-plano.xyz/1/~peron/.

Normalmente, al ingresar a un nuevo hoyo Gopher, este se encontrará circundado por toda una serie de elementos rectangulares en color celeste: son directorios a los cuales podremos dirigirnos, y que podrían contener otros documentos.

Desde allí es simple solicitar copias de los documentos y distintos elementos avalados por el protocolo documental Gopher, y visualizarlos en una ventana gráfica específica. En ella podremos seleccionar y copiar, cortar y pegar con Alt+x, Alt+c y Alt+y respectivamente.

 

Como en todo cliente de navegación de Gopher, los vínculos con ".." nos permiten retornar al nivel anterior. Pero en GopherVR también contamos con un árbol de navegación en la parte superior del documento, sobre el que podemos hacer clic para retornar a las ramas superiores del árbol de directorios que dan forma a los hoyos Gopher visitados.

sábado, 29 de julio de 2023

¿Cómo instalo los editores Ecce y EdLin en Ubuntu?

Su Quinta 17 de Octubre de Puerta de Hierro fue testigo de numerosos encuentros del Conductor del Justicialismo con delegaciones del quehacer político argentino. En una de las reuniones celebrada en 1969, Juan Perón expone ante frondosa concurrencia acerca de compilar e instalar los editores de texto modales  Ecce y EdLin en Ubuntu.

¡Compañeros!

El nuestro es un Movimiento que está para darle a todos lo que merecen por Justo derecho.

Todos sabemos que antes de organizarse en pos del Justicialismo, los trabajadores argentinos daban comienzo a su mañana con mendrugos duros, un mate cocido y grandes anhelos para acompañar. Esta fue la base previa a la organización, que como consecuencia del obrar, elevaría esta humilde dieta a la del chori al parquet de roble eslavonia.


Observarán que en el mundo del software sucede mas o menos el mismo temperamento. No podemos crear de la nada absoluta, sino que debemos edificar en base a ladrillos lógicamente concebidos y planificados en una estructuración que va se impone de menor a mayor. Es así como yo creo para crecer, y esta es la fomra como se ingenia en la vida.

Este norte cardinal acompaña también la noción creativa que nos requiere la elaboración de un sistema operativo de potencia. Necesariamente habremos de conjugar en código máquina tres herramientas de difícil soslaye: un ensamblador que para generar código objeto, un intérprete de comandos, y un editor que nos permita crear texto y corregir lo hecho.

Esto nos revela que la creación de texto pudo y debió hacerse con las herramientas más básicas. En particular, los editores de texto primordiales se iniciaron con una modalidad operativa que podríamos describir como modal. Estos permitían introducir cadenas de caracteres en un almacén de memoria, destinados a formar líneas de código, y más adelante por conveniencia, cada línea definida así podría conformar también un párrafo de texto.

Y si bien a partir de esto pueden hacerse mejores cosas, siempre es bueno conocer lo pasado, para afirmarse en el presente y proyectarse para el futuro.

Ecce

Naturalmente yo inicié mis tareas con el Ecce, el Editor de Texto Contextual de Edimburgo. Se trataba de un editor basado en líneas escrito por Hamish Dewar, y portado al lenguaje BCPL del sistema TOPS-10 de la minicomputadora DEC PDP-10 de finales de la década de 1960 - implementación que lo haría famoso entre varias mas.

Hoy podremos instalarlo en nuestro sistema GNU con Linux merced de una versión instrumentada para Unix en el lenguaje C. Podremos compilarlo fácilmente si abrimos una terminal con Ctrl+Alt+t e ingresamos el siguiente bloque de Comandos de Organización:

cd /tmp ;
wget https://ecce.sourceforge.net/ecce.c ;
gcc -o ecce -DWANT_UTF8 ecce.c ;
sudo mv /tmp/ecce /usr/local/bin/

Una vez instalado, podremos correr Ecce dando rienda a la siguiente sintaxis: 

ecce fichero_origen fichero_destino



Como vemos, este dinosaurio salió de un huevo para rugir en sistemas monousuario a través de terminales teletipo. Es ciertamente capaz de operar en sistemas multiusuario, pero si lo hacemos "así nomás" se produciría un efecto ostensiblemente destructivo, ya que uno de los usuarios podría alterar irremediablemente el documento que otro se encuentra operando en el mismo sistema. Es por este motivo por el cual para usar Ecce en GNU nos vemos obligados a instrumentar de forma adhoc un fichero de origen local (autónomo) que nos reparta los buñuelos. En efecto, lo más sencillo es utilizar el touch para crear un fichero origen.txt (si este no existiera ya). Por ejemplo:

touch origen.txt ;
ecce origen.txt destino.txt

Una vez inicializado un fichero propio, Ecce podrá arrancar presentandonos la memoria disponible en su almacén (“búfer”), y aguardando órdenes: 

Espacio de almacén = 768 KBytes
Ecce
>

Como todo editor de los llamados modales, durante su operación Ecce nos presentará alguno de sus prompts indicativos del modo de operación en que se encuentra de momento. Estos son:

  • Prompt del Modo de Comando: >
  • Prompt del Modo de Inserción de texto: :

Para su empleo más sencillo y básico de entre sus numerosos comandos es suficiente dominar sólo tres:

Comando Acción
g Almacenar una sola línea nueva
m Avanza el puntero una sola línea
p Imprime la línea donde se encuentra el puntero

De esta manera, sesión típica implica recibir el prompt de comandos > donde introducimos la orden g* (“almacenar líneas indefinidiamente”), y presionar la tecla Intro para empezar a escribir. Su prompt cambiará al de inserción texto en forma de :. y podremos mecanografiar el párrafo deseado. Al concluirlo debemos presiona la tecla Intro para almacenar dicha línea en memoria. 

Conforme hayamos finalizado la inserción de la(s) línea(s) de texto deseadas podremos detener el modo de inserción ingresando el comando : que nos devolverá al prompt de comandos >

Estos cambios realizados al fichero de origen podremos guardarlos en el fichero destino desde el prompt de comandos > (y cerrar el editor), si introducimos el comando %c.

Naturalmente, podremos continuar agregando líneas indefinidamente hasta agotar el almacén, o introducir alguno de estos comandos especiales de Ecce:

%a Descarta la edición realizada.
%c Guarda los cambios y cierra.
%v Imprime la versión de Ecce.

Pues bien señores, si bien este funcionamiento parecería similar al de una antigua máquina de escribir, contaremos con grandes ventajas con respecto a estas. Para movernos en el texto, podremos desplazar la posición actual de edición en el documento (llamada “puntero”). Al llegar al fin del documento recibiremos como indicación el mensaje *** FIN ***.Los comandos de desplazamiento son sencillos:

m Baja el puntero una línea
m- Sube el puntero una línea
k Borra la línea actual del puntero
k- Borra la línea anterior del puntero
r Se mueve a la derecha un carácter en la línea actual
l Se mueve a la izquierda un carácter en la línea actual
e Borra un carácter en la línea actual

Junto a estos comandos básicos de una sola letra, Ecce dispone ciertamente de la posibilidad de realizar tareas más complejas y avanzadas que permiten un mayor control. Estas funciones avanzadas inspirarían luego al editor de cadenas sed.

En primer lugar y como regla general, si introducimos un número n junto a nuestro comando, se lo ejecutará en bucle una n cantidad de veces. Por ejemplo:

p23 Imprime las 23 líneas siguientes al puntero
m10 Sube el puntero diez líneas
g5 Deja 5 líneas de texto en blanco debajo del puntero

De esta manera es posible extender o bien invertir el orden del comando antecediendo al número n con un signo -. Por ejemplo:

p* Imprime todo hasta el final del texto
p-23 Imprime las 23 líneas anteriores al puntero
p-* Imprime todo hasta el inicio del texto
m-10 Retrocede el puntero diez líneas
m-* Retrocede el puntero todas las líneas (vuelve al inicio del texto)

Una de las funcionalidades más utilizadas es la de buscar y reemplazar.

i/texto/ Inserta una cadena “texto” aquí en la línea.
f/texto/ Busca “texto” indicado.

Como en el caso anterior, estos pueden repetirse indicándole números apropiados:

f/texto/4 Busca la 4ta. iteración de “texto
r40 Mueve a la derecha 40 caracteres

Además, las órdenes pueden encadenarse. Por ejemplo:

m23 f/texto/ p3

Los comandos avanzados de Ecce permiten incluso mayor potencia de trabajo:

A Ajusta el largo
B Divide la línea en dos en el puntero
C Cambia mayúsculas con Mayúsculas derecha
C- Cambia a minúsculas con Mayúsculas izquierda
D/texto Borra primer ocasión de texto
D-/texto Borra iteración previa de texto
E Borra carácter a la derecha del puntero
E- Borra carácter a la izquierda del puntero
G/texto Inserta línea de texto luego del puntero
G- Sube una línea
I/texto Inserta texto a la derecha del puntero
I- Inserta texto a la izquierda del puntero
J Une la siguiente línea
O/texto Sobreescribe la línea con la cadena texto

Los comandos compuestos de Ecce son secuencias de comandos cerrados entre paréntesis. Pueden repetirse en bucle, tanto condicional como incondicional. Los ejemplos suelen aclararlo todo, como decía Napoleón:

Operación Ejemplo Significado/efecto
0 o *
Repetición indefinida (“repite hasta no poder cumplir mas”)

r0 Mueve el puntero al final de la línea

(mr)0 Busca la primer línea en blanco

e-0 Borra hacia atrás hasta el comienzo de la línea
?
Ejecución opcional (se ignora la condición de falla)

((r61p)?m)0 Imprime las líneas con no más de 60 caracteres
,
Ejecución alterna (“si el primer intento falla, ejecuta el siguiente, etc”)

(r81lb,m)0 Divide las líneas que tienen más de 80 caracteres

(f/River/(v/Bocado/,e5i/Boca/))* “Reemplaza River con Boca excepto para Bocado
\
Falla invertida

(mv'+'\)0 Busca la siguiente línea que comienza con `+

Si sólo introducimos un número en la línea de comandos, Ecce repetirá el comando indicado anteriormente una n cantidad de veces.

Podremos delimitar patrones por cualquier carácter excepto letras, dígitos, y aquellos que tienen significación definida. Podremos usar: , /, $, >, +, ., :, = y _

Asimismo, podremos ver el antiguo manual de Ecce.

EdLin

A la vez que Ecce contaba con plétora de adeptos universitarios, su decante a las terminales teletipo en boga durante su desarrollo lo hizo verse progresivamente superado con la aparición de las la edición visual de textos en pantalla. Sin embargo los editores modales aún contaban con cierta valía si se hablaba de equipamiento de escasa potencia, y esto era válido con la IBM PC de primera factura y su sistema operativo, el DOS. En sus inicios se decidió adornarlo con un editor orientado a líneas descaradamente influido por el editor Ed del Unix: EdLin

A pesar de que podría parecer de escasa valía, este ha sido implementado de manera libre por el Proyecto FreeDOS, y a caballo regalado no se le mira el diente. Por tanto podremos instalarnos una copia para nuestro sistema GNU, acudiendo a la terminal:

cd /tmp/
wget https://sourceforge.net/projects/freedos-edlin/files/freedos-edlin/2.24/edlin-2.24.tar.gz ;
tar xvzf edlin-2.24.tar.gz ;
cd /tmp/edlin-2.24/ ;
./configure;
make;
sudo make install

Una vez instalado en nuestro GNU, la ejecución del programa es sumamente sencilla:

edlin

Edlin nos presentará su pantalla inicial y nos hará la veña aguardando órdenes. Como tal sigue premisas algo similares a otros editores nodales:

  • Prompt de su Modo de Comandos: *
  • Prompt de su Modo de Inserción: :

Por convención EdLin opera con bloques de sólo 11 líneas. Para facilitar la explicación, usaremos entre nosotros las siguientes convenciones para operar en su modo de comandos:

  • Los corchetes [] denotarán parámetros opcionales.
  •  La n nos representará un número de línea, que puede ser uno de varios valores posibles:
Una cadena de dígitos, o sea un número de línea literal Por ejemplo, 12 es la decimosegunda línea.
n Representa al número de línea justo antes de la última línea del fichero.
. (“punto”) Representa la línea actual en el fichero.
$ (“peso”) Representa la línea final del fichero.
+n o -n Es un diferencial de suma o resta del número de línea actual. Es útil para dar posiciones relativas a una línea, tal como .+1 para significar “la línea posterior a la actual”.
  • El símbolo $ representa una cadena de caracteres. Podrás encerrar la cadena tanto en apóstrofes 'texto' o bien en comillas "texto", o podrán contener las siguientes secuencias de escape:
\a Carácter de campana
\b Carácter de Retroceder (borrado)
\e Escape
\f Alimenta papel
\t Tabulador horizontal
\v Tabulador vertical
\" Comillas
\' Apóstrofe
\. Punto
\\ Barra invertida
\xXX Valor Hexadecimal, donde cada X es un dígito hexadecimal (de 0 a F, tanto en mayúsculas como minúsculas)
\dNNN Valor decimal, donde cada N es un dígito decimal (de 0 a 9)
\OOO Valor octal, donde cada O es un dígito cotal (de 0 a 7)
\^C Caracter de Control, tal como \^J para un caracter “Control+J” literal (linefeed).

Pues bien señores, al igual que Ecce, el funcionamiento básico de EdLin consiste en activar el comando de agregado al almacén, e insertar contenido en el mismo. Para ello, en el prompt * ingresamos el comando a y mecanografiamos las líneas. Para almacenarlas, presionamos la tecla Intro. Para cesar el modo del inserción, en este caso debemos ingresar un . aislado.

Para guardar usaríamos w fichero seguido del comando salir, que es q. (O bien podremos usar e fichero, que equivale a "guardar y salir"). Para salir de EdLin sin guardar se usa q, ante lo cual se nos interrogará “Abort edit (Y/N)?”. Deberíamos responder yes.

Las funciones de edición de EdLin implican generalmente pocas variantes. La primera es indicar un número de línea para establecer el puntero, y escribirla de nuevo para reemplazar la línea.

Si en cambio quisiéramos insertar una línea previamente a otra, usaríamos [n]i para ingresar al en el modo inserción, la cual también acepta las secuencias de escape indicadas. Para abandonar el modo de inserción, ingresamos . en una línea aislada (si necesitáramos escribir una línea que sólo contenga un punto literalemnte, deberías indicarlo escapándolo como \.). Tras de abandonar el modo de inserción, la línea posterior al texto insertado se convertirá en la línea actual (a no ser que la inserción se hubiese suspendido al final del almacén, en cuyo caso la última línea del almacén se convertirá en la posición del puntero).

Para borrar una línea debemos utilizar el comando d, el cual también acepta rangos en la forma  de [n][,n]d que borrarían un bloque de líneas consecutivas del almacén. Los parámetros responden a la primer línea y la última línea del bloque a borrar.

Si tuviésemos la necesidad de copiar un rango de líneas, utilizaremos el comando [n],[n],n,[n]c para copiar un rango de líneas consecutivo a otra localización del búfer. En este orden, los parámetros son los siguientes:

  1. La primer línea que quiere copiar (si se omite se usará el puntero) 
  2. La última línea que quiere copiar (si se omite se usará el puntero) 
  3. La línea anterior en la cual desea insertar el bloque de líneas 
  4. La cantidad de veces que copiará el bloque demarcado (si se omite es 1)

(Luego de copiar las líneas, es conveniente usar el comando l (“listar”) para tener una idea de cómo quedaron los números de línea tras la operación).

Para mover un bloque de texto (más conocido como "copiar y pegar"), debemos usar el comando m, y procedemos igual que con el comando copiar anteriormente descripto. En este caso funcionará igual que copiar, sólo que borrará el bloque de su posición original

Si deseamos presentar todas las líneas usamos p, y para presentar un rango de líneas en pantalla, utilizamos [n][,n]p. Es similar al comando l (list) con la excepción que los parámetros por defecto comienzan en el puntero en lugar de hacerlo 11 líneas  posteriores.

Para buscar una cadena texto usamos [n][,n][?]s$ lo que realizará esta operación. Si omite el primer parámetro, comenzará a buscar desde la línea actual. Si omite el segundo parámetro, dejará de buscar al llegar al final del búfer. Si incluye el ?, edlin solicitará confirmación ante cada encuentro. Si respondemos “no”, continuará la búsqueda y si respondemos “yes” la dará por concluida.

Si la búsqueda localiza la subcadena, desplazará el puntero.

En caso de operar con búsqueda y reemplazo debemos utilizar [n][,n][?]r$,$ para reemplazar todas las iteraciones de la primer cadena con la segunda cadena entre las dos líneas especificadas. Si omitimos el primer parámetro, EdLin comenzará reemplazando a partir del puntero. Si en cambio omitimos el segundo parámetro, dejará de reemplazar texto en la última línea del búfer.

Si incluye un ?, edlin mostrará un mensaje de confirmación antes de reemplazar las iteraciones de texto.

Para insertar un fichero usamos[n]t fichero. Esto Insertará el contenido del fichero antes del puntero. Si omitimos el primer número de línea, se insertará antes de la línea actual del puntero.

Como vemos, los editores modales son simplones, pero permiten ciertas posibilidades efectivas de edición, y constituyen un herramental válido para comprender cómo se realizaba cómputo antes de que el Justicialismo garantizara los derechos de un editor de texto como la gente hasta al más humilde de mis grasitas.