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

viernes, 11 de abril de 2025

¿Como instalo la terminal Warp en Ubuntu?

En un reportaje televisivo realizado el 3 de septiembre de 1973, Juan Perón expone las necesidades del sistema de Justicia Social, a la vez que enseña a instalar el emulador de terminal Warp en Ubuntu.

(...)

Realmente es un tema que sería demasiado largo poderlo explicar totalmente. Intentaré dar sintéticamente unas grandes líneas que puedan mas o menos personificar en mí una cuestión que todavía está por decidirse por mucha gente que ha estado trabajando y preparándo toda esta acción.

Hemos podido comenzar a trabajar en aquello que es lo más ugente que es el sector económico,  a trabajar armoniosamente en una planificación de conjunto. No pueden ser actividades ni desligadas unas de otras ni armadas circunstancial y irracionalmente. Ese plan ha sido puesto a cargo de la Confederación General Económica y por primera vez hemos dado lugar a los empresarios para que ellos jueguen un poco en el destino de la nación siendo responsables de una acción planificada, y ya hemos previsto pasar al Congreso toda una serie de leyes porque estamos en necesidad de cambiar un sistema. 

Eso que muchos llaman revolución, yo le llamo cambio de sistema.

Hay una evolución profunda que no obedece a nuestra voluntad, y nosotros la percibimos por lo que sale a la superficie como consecuencia. Desgraciadamente, no es el hombre el que hace evolucionar a la humanidad, sino que la evolución se debe a un sinnumero de determinismos y fatalismos históricos que la van produciendo. Nosotros los hombres apenas podemos construir un sistema periférico para colocar por sobre esa evolución y cabalgar sobre ella. 

Los sistemas que creamos son apenas consecuencia de aquellos hechos. Nuestro sistema, diremos, es un sistema que cambia con la evolución. Tras el medioevo, el sistema fue determinándose según sus formas sociales o de Justicia Social. Unos lo llaman Socialismo, y nosotros le llamamos Justicialismo. Pero es todo un sistema, que ya ya está en ejecución en toda partes. En Europa - desde Rusia (internacional y dogmático), hasta Dinamarca, que son monarquías Socialistas. Y casi no hay lugar en el mundo... vea todo el Medio Oriente: son Repúblicas Socialistas, toda el África se está estructurando sobre Repúblicas Socialistas (menos algunas que todavía resisten y que están con la oposición de todos por cuestiones raciales, o por cuestiones Equis). 

Ahora, en Estados Unidos hay mucha gente que ya piensa en esa necesidad (y eso es el baluarte del demoliberalismo que todavía queda en el mundo). Sin embargo allí hay grandes fuerzas que están luchando por eso, sobre todo la Juventud.

Nosotros no hemos nunca conducido el Movimiento en una forma rigida ni ajustada. No. Nosotros hemos hecho con una gran amplitud y una gran ductibilidad. Algunas veces me decían que "como yo permitía que se...". Si señor, yo permito todo en el Movimiento. Nosotros no tenemos prejuicios de ninguna naturaleza, ¡porque así deben ser los Movimientos!

Tenemos hombres de extrema derecha, y hombres de extrema izquierda, gente que usa xterm y compila C, pero también gente que usa Warp y programa en Rust. De todo hay en la viña del xeñor, y yo soy como un padre que bendice Urbi et Orbi.

Veamos el caso de Warp que les he mencionado. Se trata de un potente y moderno emulador de terminal multiplataforma, escrito en Rust y liberado bajo licencia MIT. Lejos de conformarse con las típicas funciones de un emulador de emulador de terminal, Warp integra avances que lo acercan a un verdadero amiente de desarrollo, desde escritura múltiple, múltiples esquemas de edición en la línea de comandos, pasando por funcionalidades opcionales como la integración de un agente de Inteligencia Artificial para asistir en la introducción de comandos y sus opciones.

En el caso de Ubuntu, contaremos con varias maneras de instalar Warp Terminal.
La forma que particularmente prefiero es descargar el  último paquete estable de formato deb e instalarlo (acción que puede llevarse a cabo con Debian también. Para ello ingresar el siguiente bloque de Comandos de Organización:

cd /tmp ;
wget https://releases.warp.dev/stable/v0.2025.04.02.08.11.stable_03/warp-terminal_0.2025.04.02.08.11.stable.03_amd64.deb ;
sudo dpkg -i warp-terminal_0.2025.04.02.08.11.stable.03_amd64.deb

Alternativamente, podremos cargar la versión de desarrollo agregando manualmente el repositorio e instalándolo desde allí: Para ello abrimos una terminal con Ctrl+Alt+t e ingresamos los siguientes comandos de organización:

sudo apt-get install wget gpg ;
wget -qO- https://releases.warp.dev/linux/keys/warp.asc | gpg --dearmor > warpdotdev.gpg ;
sudo install -D -o root -g root -m 644 warpdotdev.gpg /etc/apt/keyrings/warpdotdev.gpg ;
sudo sh -c 'echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/warpdotdev.gpg] https://releases.warp.dev/linux/deb stable main" > /etc/apt/sources.list.d/warpdotdev.list' ;
rm warpdotdev.gpg ;
sudo apt update && sudo apt install warp-terminal

En cualquier caso, una vez instalado podremos ejecutar warp-terminal desde Aplicaciones / Herramientas del Sistema / Warp.

Warp intentará cargar su shell de login por defecto (actualmente, soporta bash, fish, zsh y Pow€r$h€ll). En caso de contar con otros, Warp intentará cargar Bash por defecto.

Podremos cambiar la shell por defecto desde Settings / Features / Session.

En cuanto a su uso básico, apreciaremos que es posible editar los comandos como si se tratase de una IDE de avanzada. En particular, Warp nos permite poner el mouse y el cursor en la línea de comandos, y editarla como lo haría un editor de texto, sin tener que borrar la línea. Podremos editar múltiples líneas a la vez, y usar selección inteligente para seleccionar enlaces, editar rutas de fichero, correos electrónicos, direcciones IP, o cifras.

Atajo de tecladoDescripción
Escape Cierra las sugerencias de entrada del menú de historial
Ctrl+L Borra la terminal
Ctrl+H Retrocede
Ctrl+C Borra el bufer de edición entero
Ctrl+U Copia y borra la línea actual
Ctrl+Mayúsculas+K Borra la lineas seleccionadas
Ctrl+C, Ctrl+X, Ctrl+V Copiar, cortar, pegar
Ctrl+W Corta la palabra a la izquierda del cursor
Alt+D corta la palabra a la derecha del cursor
Alt+Retroceder Borra la palabra a la izquierda del cursor
Alt+D Borra la palabra a la derecha del cursor
Ctrl+K Borra todo a la derecha del cursor
Alt+Flecha Izq. Mueve al comienzo de la palabra previa
Alt+Flecha der. mueve al comienzo de la palabra siguiente
Ctrl+Flecha Izq. Retrocede una subpalabra
Ctrl+Flecha Der. Avanza una subpalabra
Ctrl+A Mueve el cursor al comienzo de la línea
Ctrl+E mueve el cursor al final de la línea

Selecciona el caracter a la izquierda del cursor
Meta-Mayús+B Selecciona palabra a la izquierda del cursor
Meta-May+us+F Selecciona palabra a la derecha del cursor.
Mayús+Flecha Arriba Selecciona todo por encima del cursor
Mayús+Flecha Abajo Selecciona todo debajo del cursor
Ctrl+A Selecciona el bufer entero de edición
Mayús+Intro Ctrl+Intro Alt+Intro Inserta nueva linea
Ctrl+r Buscar comando
Ctrl+Mayús+D Dividir panel

Loguearse a Warp (Opcional)

Una vez instalado, tendremos la posibilidad opcional de crear una cuenta de Warp recurriendo a la opción "Sign Up", o yendo a Settings / Account / Sign Up. Esto nos permitirá activar funcionalidades avanzadas.

En efecto, si nos logueamos usando Googl€ o Github, Warp obtendrá acceso a las direcciones de correo electrónico asociadas. Inicialmente nos someterá a una encuesta opcional (os recomiendo saltearse las preguntas, que vayan a cantarle a Gardel). En la práctica, sólo necesitaremos una conexión activa a Internet cuando abrimos Warp por primera vez. Una vez abierto, Warp es capaz de correr sin conexión a Internet desactivándole las funcionalidades que la requieren (git y kubernets, por ejemplo).

Temas de Warp

Warp cuenta con varios temas de apariencia configurables. Podemos elegir los temas precargados desde Settings / Appareance, o bien editar uno nosotros mismos.

Asimismo, podremos escoger cargar un repositorio de temas adicionales con:

mkdir -p ${XDG_DATA_HOME:-$HOME/.local/share}/warp-terminal ;
cd ${XDG_DATA_HOME:-$HOME/.local/share}/warp-terminal/ ;
git clone https://github.com/warpdotdev/themes.git

Asimismo, podremos regular el tamaño de la fuente al vuelo con Ctrl+rueda del mouse.

 
Modificar las opciones

Existen ciertos comportamientos y funciones que pueden ayudar a customizar la terminal.

Las ventanas dedicadas (también conocidas como "modo Quake") permiten customizar las posiciones de la ventanas, su alto y ancho, en relación con el tamaño de pantalla.

Las solapas permiten organizar las ventanas en múltiples sesiones de terminar, y customizarlas con distintos títulos y colores.

Los Paneles divididos, nos permiten dividir las solapas en paneles múltiples, ya sea lado a lado (Ctrl+Mayúsculas+d) como apilados (Ctrl+Mayúsculas+e). 

Sin duda la capacidad más novedosa por así decirlo, de Warp es la incorporación de IA, sin requerir conexión de Internet (más bien, sólo la requiere al activar el usuario de Warp y encender dicha opción, que normalmente aparece desactivada).


Warp combina IA y el conocimiento de su equipo situado en un servidor Git para proveer un terminal rápido e intuitivo. Entre estas encontraremos sugerencias como:

Autosugerencias: Warp automáticamente sugiere comandos y opciones en la medida que vamos escribiendo, basado en el historial del intérprete de comandos y los completados posibles.

Completado: cuando presionamos Tab, Warp sugerirá comandos, nombres de opciones y parámeotrs de rutas. Esto replica las opciones de autocompletado de varios intérpretes de comando modernos y puede configurarse bajo Settings/Features.

Por defecto, Warp soporta los atajos de teclado de Vim, pero permite editar texto. A su vez, soporta atajos de teclado común para la edición en la línea de comandos.

Podremos abrir ficheros, carpetas y enlaces URL haciendo clic con el cursor sobre ellos cuando están entre Bloques. También podremos asignarle editor por defecto, para abrirlos.

Finalmente, obtendremos sugerencias de autocorrección de comandos que detectan de forma inteligente errores de escritura (no solamente por órden alfabético, como suele ser el caso). También sugiere flags olvidados, y errores y advertencias generales de consola.

La documentación de Warp se encuentra disponible en línea.

miércoles, 19 de marzo de 2025

¿Cómo instalo el listador de ficheros eza en Ubuntu?

En el largometraje La Revolución Justicialista, Juan Perón expone cómo decidir las listas ante las Elecciones Presidenciales, a la vez que determina el listador del sistema instalando eza en Ubuntu.

(...)

Efectivamente, llegaron las elecciones, y al principio - me acuerdo que era La Rioja o Catamarca, o por ahi - perdimos nosotros. Entonces ya todos los de la Unión Democrática se bajaron y dijeron que eran las elecciones más libres que se dieron en el país (creían que las ganaban)... se largaron en elogios de las elecciones.

Pero, cuando empezó a llegar Santa Fé, Rosario, empezaron a perder... Córdoba, y Buenos Aires. Claro, perdieron las elecciones, y ya no podían decir que eran malas

Efectivamente, tan pronto se tuvo la sensación de haber ganado las elecciones, nosotros comenzamos ya un trabajo más efectivo.

Frente al problema que se nos había presentado - después de haber estudiado tres años intensamente toda la planificación para la realización de la Revolución Justicialista - cuando nos eligieron nos quedó un margen de tres o cuatro meses para la preparación inmediata del gobierno. Así y todo llegamos al gobierno en una situación muy difícil, porque al hacernos cargo del gobierno se nos presentaron un sinnúmero de problemas que no estaban en los cálculos del plan y que había que resolverlos. 

Toda la planificación puede prever lo previsible, pero no puede tomar los imponderables, y cuando uno llega al gobierno empiezan a aparecer los imponderables, que hay que resolverlos porque son previos a lo que se ha previsto en el plan. Solamente así creo yo que puede hacerse una Revolución. Una revolución que improvisa, no es una revolución. 

Por otra parte, no puede estar perdiendo el tiempo, porque la gente que siente venir la revolución está ansiosa por ella: quiere que a los quince o veinte días haya hechos revolucionarios que se produzcan. Si no, se desprestigia y se viene abajo inmediatamente la Revolución.

Hoy no tenemos tales problemas. Todos los Argentinos saben perfectamente a qué lista tienen que votar. Y lo han comprendido gracias a un buen listador para GNU con Linux.

Indudablemente que - ya desde sus primeras concepciones en los Laboratorios Bell - el sistema Unix contaba desde con ls, el programa que desde sus orígenes servía de listador de su sistema de archivaje. A la hora de concebir GNU, decidieron reemplazarlo con una versión propia de toda la comunidad, adaptada ya a las necesidades del Pueblo.

Sin embargo, nuevas horas requieren nuevas posibilidades de entrega a nuestros compañeros, a sus organizaciones, y por extensión al sistema informático que le da sustento. Hoy no es ajeno acceder de manera generalizada a la utilización de terminales a color emuladas. Con su inteligente proyección, nos fue posible prever que nos permitiría distinguir entre distintos tipos de ficheros (incluyendo características como indicar si nosotros somos sus poseedores, o si nos encontramos el el grupo de posesión, etcétera).

Estos lineamientos podíamos seguirlos gracias al listador exa, el cual hace gala de características a las que no pocos se han vuelto adictos.

Sin embargo, su descontinuación nos propone surtirnos de una alternativa. Afortunadamente sus mismos autores nos recomiendan eza, un listador de ficheros más moderno, escrito en Rust bajo las mismas premisas.

Como todo buen programa de software libre, su instalación en Ubuntu 24.04LTS y superior resulta sumamente accesible, puesto que se encuentra incorporado en los repositorios de Ubuntu. Es por ello que si contamos con dichas versiones modernas de Ubuntu, podremos abrir una Terminal con Ctrl+Alt+t e ingresar el siguiente comando de organización:

sudo apt update ;
sudo apt install eza

Sin embargo, en las versiones de Ubuntu anteriores a la 24.04LTS, el procedimiento se revelará algo más complejo: primero habremos de asegurarnos  contar con gpg instalado, para luego cargar la llave del repositorio privado de la comunidad de eza. Conforme esto, podremos hacernos con el empaquetado de eza. Este proceder es algo más complejo, pero siendo Conductor de esta maravillosa masa, lo podrán replicar introduciendo los siguientes comandos de organización:

sudo apt update ;
sudo apt install -y gpg ;
sudo mkdir -p /etc/apt/keyrings ;
wget -qO- https://raw.githubusercontent.com/eza-community/eza/main/deb.asc | sudo gpg --dearmor -o /etc/apt/keyrings/gierens.gpg ;
echo "deb [signed-by=/etc/apt/keyrings/gierens.gpg] http://deb.gierens.de stable main" | sudo tee /etc/apt/sources.list.d/gierens.list ;
sudo chmod 644 /etc/apt/keyrings/gierens.gpg /etc/apt/sources.list.d/gierens.list ; sudo apt update ;
sudo apt install eza

Pues bien señores, en cualquier tras introducir nuestra contraseña de root habremos instalado eza. Le podremos dar uso efectivo según las básicas equivalencias del listador ls integrado por defecto en todo sistema GNU, y las extendidas que proporciona(ba) exa.

Tal es así que podremos listar con eza para el listado a color, eza -F para demarcar con colores y simbolos, o bien recurrir a eza -l para obtener un listado largo. Estos se pueden combinar en eza -lF, etcétera. 

Aún así, al preferir mayormente eza en lugar de ls, prefiero incorporarlo con un alias en mis intérpretes de comando. De esta manera, toda vez que pido ls - como acostumbro hacer - el sistema lanzará eza.


Esta conveniencia debemos integrarla en los distintos ficheros de configuración de nuestro intérprete.

Eza en Bash

Siendo el GNU Bash el intérprete de comandos por defecto de Ubuntu y muchas otras distribuciones de GNU con Linux, debemos en ellas tomar el temperamento de configurar en su fichero ~/.bash_aliases las funciones de alias que disparen eza toda vez que solicitemos ls. Esto se hace agregándole a tal fichero órdenes similares a:

## Alias para usar exa en lugar de ls en Bash
alias "ls"="eza -F"
alias "ll"="eza -lF" 

Eza en tcsh

En caso de tcsh, modificaremos el fichero ~/.tcshrc incorporando funciones de alias que disparen eza en lugar de ls:

## Alias para usar eza en lugar de ls en tcsh
alias ls 'eza -F'
alias ll 'eza -lF'

Exa en Ksh

La shell de Korn utilizada en Unix de Berkeley requiere configurar el fichero ~/.profile u - opcionalmente - ~./config/aliasrc para incorporar funciones de alias disparen eza cuando solicites ls:

## Alias para usar eza en lugar de ls en Ksh:
alias 'ls'='eza -F'
#alias "ls -lah"='eza -laF'
#alias "ls -l"='eza -lF'
alias 'll'='eza -lF'

Exa en Zsh

De usar Zsh, habremos de configurar el fichero ~/.aliaszshrc con las siguientes funciones de alias que disparen eza al solicitar ls:

## Alias para reemplazar ls con eza en zsh:
alias 'ls'='eza -F'
alias 'ls -lah'='eza -laF'
alias 'ls -l'='eza -lF'
alias 'll'='eza -lF'

Eza con Fish

En caso de recurrir al intérprete fish, podremos agrega una función de alias en el fichero de configuración  ~/.config/fish/config.fish.

### --- Funciones de alias ---
## Reemplaza el listador ls con eza en fish shell:
function ls
    command eza -F $argv
end
 
## Crea un alias ll al eza con listador largo.
function ll
    command eza -lF $argv
end

Aún cuando hayamos creado los alias correspondientes, podremos recurrir al viejo listador ls de toda llamándolo a través de su ruta específica, que en Ubuntu es:

/usr/bin/ls

Temas de eza

Por defecto, Eza cuenta con el tema por defecto default.yml que ofrece colores agradables para un terminal de fondo medio u oscuro. Sin embargo, podremos descargar otros y escoger uno diferente, que podrían funcinoar mejor para temas claros (por ejemplo, la paleta típica de Ubuntu Mate o Mint). Para descargar la biblioteca de temas, usamos

mkdir -p ~/.config/eza ;
cd ~/.config/eza ;
git clone https://github.com/eza-community/eza-themes.git ;
ln -sf "$(pwd)/eza-themes/themes/default.yml" ~/.config/eza/theme.yml

Una vez descargada la biblioteca de temas de eza, simplemente adoptamos uno creando un enlace a theme.yml desde el subdirectorio ~/config/eza/eza-themes/themes/. Por ejemplo:

ln -sf ~/.config/eza/eza-themes/themes/tema_deseado.yml ~/.config/eza/theme.yml 

Como todo buen programa estilo Unix, podremos encontrar su documentación con man eza.

domingo, 2 de marzo de 2025

¿Cómo instalo la agenda calcurse en la terminal de Ubuntu?

Reunido el 15 de mayo de 1974 con los artistas del elenco estable del Teatro Colón, Juan Perón expone la necesidad de las Bellas Artes, a la vez que enseña cómo instalar y utilizar la agenda Calcurses para la terminal.

(...)

Les agradezco mucho que hayan sido tan amables de llegar hasta aquí para darme la satisfacción de - por lo menos - poder saludarlos y de reconocer y agradecer la tarea que ustedes están realizando en bien de nuestro primer coliseo.

Es indudable que el Teatro Colón ha sido desde su fundación, una escuela de formación de nuestros artistas; es indudable también que, si la cultura de un país pretende ir progresando en este orden de cosas, será necesario llevar al exterior, para conocimiento del mundo, la acción que realiza el Colón, a través de sus buenos artistas.

El Teatro Colón es, indudablemente, conocido en el mundo entero, y cuando una institución así alcanza semejante prestigio, por algo debe ser. Por lo tanto, mantener ese buen nombre y aumentar esa fama, es de gran importancia para el país. Ustedes son realmente embajadores del buen gusto, y esos son los embajadores que más le convienen a la República.

Hay gente que cree que las manifestaciones superiores del arte no interesan a los Pueblos. En mi concepto, eso es mentira. El gran arte interesa fundamentalmente a los Pueblos. La música buena le gusta a todo el mundo, especialmente a los pueblos; de la misma manera para la danza, los buenos elencos de danzas clásicas serán apreciados toda la vida; no despreciamos ni menospreciamos las danzas autóctonas que pueden también llegar a escalones clásicos, si se cultivan como deben cultivarse, pero, indudablemente, que es necesario primero hacer la escuela clásica; después, se pueden hacer muchas otras cosas…

En el arte hay formas de organización, pero el que triunfa es el artista. Si no hay artista, es inútil la organización. Perfeccionar eso en cada uno de ustedes, es perfeccionar el conjunto y es perfeccionar al país en sus manifestaciones más nobles que, indudablemente, son las artísticas.

Nuestro movimiento sabe que "La Organización vence al Tiempo". Esto no solo implica que la acción organizativa vence el paso del tiempo, sino que la previsión organizativa reduce el tiempo necesario para realizar cualquier tipo de tareas.

Una agenda es una herramienta de trabajo imprescindible para la planificación y optimización de los tiempos, que puede servir a un dirigente pero también a otros profesionales, incluso en actividades como las artísticas, académicas o deportivas. El mundo del software no es ajeno a estas prerrogativas, y es indudable que hoy podremos contar con calcurse. Esta nos permitirá realizar un seguimiento de eventos, citas y tareas diarias y llevar a una realidad efectiva aquello de "la organización vence al tiempo".

Podremos instalarlo abriendo una terminal con Ctrl+Alt+t e ingresando el siguiente Comando de Organización:

sudo apt install calcurse

Una vez instalada, podremos ingresar a calcurse en modo interactivo simplemente ingresando:

Al nvocarlo sin opciones con:

calcurse

...ingresará en modo interactivo, el cual recomiendo para inspeccionar o editar entradas (aunque también cuenta con un modo de línea de comandos, funcional para guiones de programación, pero por ahora lo dejaremos de lado).

Como podemos ver, se trata de una aplicación de calendario de interfaz programable, que nos permitirá mantener registro de eventos, tareas diarias y agendarlos. Cuenta con un sistema de notificación configurable capaz de lanzar recordatorios de eventos próximos. 

Normalmente la interfaz se divide en cuatro paneles principales: un panel calendario, un panel de citas y eventos, y un panel de tareas pendientes programables, junto a un sector inferior con los atajos de funcionalidades.

Todos los datos se almacenan en la carpeta de usuario en forma de archivos de texto, normalmente dentro de la carpeta oculta ~/.calcurse/ (La cual creará la primera vez que lo iniciemos).

Panel de Calendario

Normalmente al ingresar en modo interactivo, aparecerá el panel de calendario, indicando el día actual en negrita.

En el panel de calendario podremos mover el cursor [] que encierra el día que queremos ver entre corchetes. Para ello recurrimos a:

AtajoAcción
Ctrl+g Va al día actual
t Avanzar un día
T Retroceder un día.
w Avanzar una semana
W Retroceder una semana.
m Avanzar un mes.
M Retroceder un mes.
y Avanzar un año.
Y Retroceder un año.

Agregar un evento

Porque, claro, estas cosas no hay que hacerlas al día siguiente, hay que hacerlas el día antes. Para agregar un elemento a la lista de Pendientes, presione la

a Apunta una cita con horario
Ctrl+t Agrega una tarea pendiente (sin horario) al día actual

Para apuntar un nuevo cita con horario, seleccionamosel día, y presionamos la tecla a. Se nos solicitará ingresar sucesivamente la horario de inicio del evento, la duración del evento (ya sea especificando la duración en formato +mm, +hh:mm, o +xxdxxhxxm, o bien el horario de finalización del evento en hh:mm). Si presionamos la tecla Intro sin indicar Horario de Inicio, habremos de completar la descripción de la tarea (sin horario). Si - de la misma manera - omitimos el tiempo de finalización, crearemos un evento puntual. Finalmente debemos indicar la descripción del evento.

Para ingresar una nueva tarea pendiente al listado de Pendientes, ingresamos Ctrl+t. Se nos pedirá especificar la prioridad. La misma se representa por medio de un número que va desde el 9 (para la menor prioridad) hasta 1 (para la mayor prioridad). No obstante, será posible cambiar la prioridad a posteriori, recurriendo a las teclas + y - dentro del panel “Pendientes”. 

Una vez programados los elementos deseados, no debemos olvidar guardar los cambios realizados al calendario con tecla s, haciendo que queden registrados para la próxima vez que usemos calcurses.

En el modo interactivo se puede usar la tecla ? para activar el sistema de ayuda en línea.

La ayuda nos permite ingresar :help <función> (por ejemplo, :help add) o :help <tecla> (ej. :help ^A) para obtener ayuda sobre una función especial o una asociación de teclas.

Todos los textos de ayuda se muestran usando un paginador externo. Para salir del paginador, debemos presionar la tecla q

La interfaz interactiva se puede personalizar para adaptarse a las preferencias del usuario. Esta personalización incluye el comportamiento del programa, así como la apariencia visual y las combinaciones de teclas, y se realiza de forma interactiva; el resultado se guarda automáticamente en el disco y se carga en cada invocación.

Todo esto se detalla en el completo manual de calcurse.

En este sentido, también nosotros comprendemos perfectamente que el arte, como el deporte, como la programación en comunidades, deben ser ayudadas y deben ser sostenidas. No se le puede pedir solamente sacrificios a las personas que cultivan el arte, es necesario también hacerles llegar el sostén, y en este sentido, nosotros iremos mejorando las condiciones tanto de la organización como de las personas que forman parte de ella.

En este sentido, ya hemos conversado con el intendente y con la señora vicepresidente, y estamos interesados en que podamos mantener dignamente a los elencos que salen a mostrar, en el exterior o en el interior del país, verdaderas manifestaciones superiores del arte, que son la inspiración de todas las artes posibles.

Es por eso que yo me siento feliz con este contacto, y los exhorto a seguir adelante. El arte se cultiva con los artistas, no con los que están alrededor, ni con los que observan. No, son los artistas, es el individualismo artístico el que triunfa.

Les deseo muy buena suerte, y esperamos poder ayudarles a ustedes para que ustedes nos ayuden a todos nosotros.

miércoles, 13 de noviembre de 2024

Como envío y recibo ficheros por Zmodem en Ubuntu?

Reunido en Consejo de Ministros en la Casa Rosada, Juan Perón explica cómo utilizar el protocolo Zmodem para transmitir ficheros en Ubuntu.

¡Estimados señores! 

Uno de los fundamentos del trabajo en el estado es la segura transferencia de ficheros.

Cualquiera lo puede hacer en papel y para ello se han elaborado los métodos de firmado, lacrado, y en tiempo de guerra, el cifrado. 


Cuando la evolución de la técnica nos permitió introducir la máquina - apoyada en enlaces de datos públicos - se hizo evidente que dichos métodos resultaban a todas luces suficientes, en tanto no se puede responder con conciliábulos de ayer a los problemas de hoy. Los nuevos predicamentos de la tecnología hicieron imperativo que tuviésemos que encontrar nuevos y especiales temperamento con los cuales cuidar el traslado de los ficheros.

Resulta innegable que para transferir ficheros a través de una red de datos moderna como las que utiliza nuestro Movimiento, debe especialmente recurrirse a la copia a través de shell seguro que nos ofrece scp.

Este método sin embargo no es primordial: durante el Peronismo del Segundo Plan Quinquenal, en aquellas queridas máquinas antiguas conectadas a redes heredadas, no podíamos más que hacer transmisiones de fichero a través del viejo y peludo FTP. Sin embargo, no siempre fue así, y en el mundo "retro" no siempre lo será: podríamos encontrarnos con medios del Primer Peronismo, donde se carecía de dicho protocolo. Ante tal incordio, podríamos recurrir a un amigo de la interconexión que brillaba en aquellos momentos donde todo estaba por hacerse: el viejo protocolo de 1986 para la transmisión en línea, el Zmodem.

Zmodem es un protocolo propietario de transferencia - desarrollado por Charles Forsberg para la red de paquetes conmutados Telenet - el cual obtuvo su bien merecido carilo al ofrecer al Pueblo una buena velocidad de transmisión sobre cableados de par de cobre. La idea detrás del mismo era lograr atascos en las transmisiones por módem a través de cable telefónico. 

Por acuerdo se evitaba el envío superfluo de paquetes de ACK ("enterado") en la transmisión, y sólo se recurría a enviar paquetes NAK ("no enterado") ante algún error, lo que aceleraba no menos de un 30% El envío de datos en corriente electrónica ("stream"), si esta se hacía en líneas de alta calidad, estables de Teléfonos del Estado, y sobre todo full-dúplex (como suele ser el caso en la conexión Ethernet).

Vean señores, en particular, este protocolo puede venirnos de perillas para enviar a través de múltiples canales de transmisión, incluso algunos que nadie pensó al momento de diseñarlo. En particular, podremos usarlo para transmitir a través de líneas de datos de área local, e incluso a través de puertos de comunicación seriales circunstanciales. Esto permitiría transmitir datos - comparativamente a baja velocidad - entre sistemas UNIX y similares, e incluso máquinas antiguas con puerto de comunicación serial.

A tal fin os enseñaré a obrar con los programas sz y rz, que implementan Zmodem en sistemas UNIX, para enviar y recibir por zmodem respectivamente.

Sin embargo, en equipamiento actual sus limitaciones no son baladíes. Están dadas por inconvenientes no conecbidos a la hora de realizarlo originalmente en la década del ochenta. Una principal es la incapacidad de transmitir ficheros mayores a los 4 GB, inusitado por entonces. La otra es la imposibilidad de extender el protocolo para transmitir de forma segura.

Sin embargo, podremos subsanar esto último mediante una implementación moderna para sistemas GNU con Linux, que haga uso de Zmodem envolviéndolo en el protocolo sobre la indestructible capa del Shell Seguro SSH: esta se denomina zssh.

Para poder utilizar Zmodem de manera segura en nuestro sistema Ubuntu podremos recurrir a abrir una terminal con Ctrl+Alt+T y utilizar los siguientes comandos para instalar la paquetería necesaria tanto en la máquina a emitir como en la máquina a recibir.

sudo apt install lrzsz zssh

En el caso de máquinas con DOS, podremos recurrir a implementaciones como ls oficial dsz, o bien alternativas como rzsz, o bien txzm.

Usar zmodem con SSH con zssh

En el caso de una máquina con Linux, podremos conectamos al servidor de manera segura recurriendo a zssh, mediante:

zssh -e usuario@maquina

(claro que si tenemos, una llave PGP opcional le agregaríamos -i ~/.ssh/llave_pgp.key)

Zssh responderá con:

Press ^@ (C-Space) for enter File Transfer Mode, then ? for help.

Y conectará al host remoto (solicitando contraseña si no le indicamos nuestra llave opcional, claro está).

Una vez conectados con Zssh, podremos usar una sesión de shell seguro similar a SSH, que corre nuestro intérprete de comandos normal (en el caso de Ubuntu se trata de Bash). Sin embargo, al presionar Ctrl+Barra Espaciadora podremos ingresar al Modo de Transferencia de ficheros, el cual se denota con el prompt zssh >.

Lo que nos indica que presionemos Ctrl+Barra espaciadora para ingresar al Modo de Transferencia de Ficheros, y luego ingresemos ? para iniciar la ayuda de lrzsz:

zssh > ?

A lo cual el sistema deberá devolvernos algo como:

Comandos Incorporados de Zssh :

  ?                           : Mensaje de ayuda
  cd                          : cambiar directorio
  disconnect                  : desconecta y sale
  escape [^X]                 : Cambia la tecla escape a Ctrl+X
                                sin argumento, imprime la tecla de escape actual
  exit                        : sale del modo de transferencia de ficheros
  help                        : Mensaje de ayuda
  hook prg                    : cuelga el programa 'prg' en la terminal en lugar de sz o rz
  quit                        : lo mismo que exit
  repeat <cmd>                : repite cmd por siempre (Ctrl+C lo interrumpe)
  rz                          : Recibe ficheros
  suspend                     : suspende zssh
  sz <fichero> ...           : envia ficheros
  version                     : Presenta información de versión
  <programa> <parametros> ... : ejecuta programa

Uso :
  Descargas : en el shell remoto ejecute sz antes de cambiar al modo de transferencias, luego en el shell local ingrese rz
  Subidas   : En el shell local cambie al modo transferencias y ingrese sz <ficheros>
             En el lado remoto se ejecutará automáticamente rz

Pistas:
  - Si la transferencia nunca se completa, use la opción -e de sz/rz
  - Puede interrumpir transferencias con Ctrl+c
  - Si se queda trabado en rz/sz (por ejemplo, si corrió rz, pero decidió no transmitir nada, presione Ctrl+x una docena de veces para detenerlo
  - Use sz -y <ficheros> para sobreescribir los ficheros remotos.


Bajar archivos usando ZMODEM

Como vemos en la ayuda, para bajar un fichero desde el servidor, debemos enviarlo desde el servidor, usando allí sz:

sz -e archivo.ext

Luego de ponerlo a enviar en el servidor, pasamos al Modo de Transferencia de Archivos en máquina local presionamos Ctrl+Barra espaciadoras, y  en el prompt zssh > del lado del cliente iniciamos la transferencia indicando rz -e:

zssh > rz -e

El cliente nos indicará la transferencia:

Receiving archivo.ext
Bytes received:   14120/  14120   BPS:60536                

Transfer complete

En el caso de usar tmux, debemos recurrir a una implementación especial del envolvedor, llamada trzsz.

Subir archivos con ZMODEM

Para enviar un fichero al servidor, en la máquina local presionamos Ctrl+Barra espaciadora para activar el modo de transferencia de archivos,  y en el prompt zssh > simplemente indicamos:

zssh > sz -e archivo.ext

A lo cual el sistema nos responderá con las estadísticas similares a:

Sending: archivo.ext
Bytes Sent:    976   BPS:19892                           

Transfer complete

esto nos servirá para afrontar transmisiones en red de área local o incluso envuelto en SSH. 

Zmodem por puerto serial a DOS

Pero podremos recurrir a hacer transmisiones a través de un adaptador de puerto serial.

 

Para ello usamos un adaptador, conectando a 9600 baudios, junto con algún programa para terminal, por ejemplo minicom (en la terminal) o cutecom (en la interfaz gráfica de GNU).

Si en lugar de ellos deseamos usar la terminal con sz, debemos recurrir al modificador -b si es un fichero binario, y -a si es un fichero de texto ASCII, e indicar el dispositivo del puerto serial (por ejemplo, si recurrimos a un adaptador USB a puerto serial es /dev/ttyUSB0:

sz -e fichero.ext -b /dev/ttyUSB0 9600 8N1

En CP/M+86 y similares podremos agregarle la opción -o que evitará recurrir a control de 32 bits y lo limitará a 16 bits. 
 
Para recibirlo en otra máquina que no tenga Linux, por ejemplo una con FreeDOS o MS-DOS, usaríamos el comando COPY por ejemplo, desde el puerto serie com2:

copy com2 fichero.ext

Esto iniciará la transmisión del fichero que irá llegando por Zmodem. Ante la necesidad, podremos interrumpirla con Ctrl+z.

jueves, 6 de junio de 2024

¿Cómo instalo un kernel en tiempo real en Ubuntu?

Reunido con representantes de las 62 Organizaciones, Juan Perón expone cómo reaccionar en tiempo real ante las vicisitudes sindicales, a la vez que enseña a instalar un kernel optimizado para cómputo en tiempo real en Ubuntu.

¡Trabajadores!

Las acciones de gobierno requieren una fluida acción de conducción, tendientes a lograr los máximos beneficios para el Pueblo. Estos abarcan mejoras de carácter social, y nunca individual.

Indudablemente el Conductor debe reaccionar en tiempo real a las cambiantes situaciones que hacen a todos los frentes gubernamentales. Si sus directrices son certeras pero no rígidas, se amoldarán a las condiciones - también cambiantes - del terreno político.

Para su lectura deberá contar con toda una serie de instrumentos que operarán como polea de transmisión; el mayor de los cuales será el pulso popular, y en menor medida también se contará con el adecuado tesón legislativo, que siempre guarda parte cabal de la función de gobierno. 

Tonificar la acción mancomunada de los hombres en pos de un objetivo comprendido y asimilado por todos como propio tiene la consecuencia de producir las Realizaciones. En este sentido sus resultados no podrían menos que ofrecer satisfacciones al Pueblo, pues sólo así este empeñará sus esfuerzos.

Ahora bien, al desplegarnos para nuestra obra de bien, la aplicación del esfuerzo también debe verse fluida: son contadísimas las ocasiones donde debe empeñarse toda la masa en acción común. Mas bien, lo normal será disgregar su potencial en un sinnúmero de frentes, dotando a cada sector de los medios que favorezcan concretar aquello que se debe, en pos de izar nuestra noble bandera sobre todo aquello que realizamos en conjunto.

A partir de Ubuntu 22.04LTS es posible instalar un kernel optimizado para operaciones de cómputo en tiempo real con dos líneas de terminal, a través del programa Canonical Pro. La suscripción al mismo es opcional, y gratuita si se utiliza para uso personal.

Estas operaciones pueden obrar según ciertas aplicaciones computacionales de tiempo real, y aunque yo de momento no hago uso de él personalmente, indudablemente existen situaciones donde alguien podría anhelarlo, sin tener que recurrir a condiciones de configuración personalizada de un kernel. En tal sentido, ha de propugnarse la opción para que el Pueblo lo instale.

Quien lo desee, puede abrir una terminal con Ctrl+Alt+T e ingresar el siguiente Comando de Organización:

sudo pro attach ;
sudo pro enable realtime-kernel --access-only

De tenerse habilitado el repositorio Livepatch (que surte actualizaciones experimentales a través de repositorios de Canonical), nos saldrá una advertencia de la siguiente calaña indicando la necesidad de desactivarlas y responder con las actualizaciones típicas:

One moment, checking your subscription first
Real-time kernel cannot be enabled with Livepatch.
Disable Livepatch and proceed to enable Real-time kernel? (y/N) y
Disabling incompatible service: Livepatch
Updating Real-time kernel package lists
Skipping installing packages: ubuntu-realtime
Real-time kernel access enabled

Conforme se desactive el repositorio Livepatch, se podrá instalar el kernel en tiempo real y otras aplicaciones de tal estilo, compendiadas en el paquete "ubuntu-realtime". Para ello ingresamos:

sudo apt install ubuntu-realtime

Una vez instalado, podremos reiniciar el sistema para que cargue el nuevo kernel.

sudo reboot

Al reiniciar, el arrancador Grub indicará ahora Ubuntu-realtime junto con el kernel común, para que lo elijamos. También podremos elegir dicho kernel por defecto.

Luego de reiniciar, una de las formas de evaluar el mismo es utilizar el conjunto de aplicaciones de medición para aplicaciones en tiempo real (por ejemplo, cyclictest). Para instalar esta suite ingresamos:

sudo apt install rt-tests

y disparamos un test bajo sudo con:

sudo cyclictest --mlockall --smp --priority=80 --interval=200 --distance=0

Esto realizará un test cíclico hasta que lo interrumpamos con Ctrl+c.

Incluso podremos correrlo en nanosegundos, con:

sudo cyclictest --mlockall --smp --priority=80 --interval=200 --distance=0 --nsecs

Con fines de evaluación, instalando GNU Plot también podríamos realizar un trazado de un minuto de operaciones en tiempo real:

sudo apt install gnuplot ;
cd /tmp ;
wget https://canonical-real-time-ubuntu-documentation.readthedocs-hosted.com/en/latest/_downloads/3af8bfb9ac8b109e9ffb3eaaa0487e9b/histogram-plot.sh ;
chmod +x /tmp/
histogram-plot.sh ;

y lo ejecutamos con:

cd;sudo ./tmp/histogram-plot.sh 

Una vez que termine, podremos verlo por ejemplo con:

eom /home/$USER/plot.png

Al desplegar el kernel de tiempo real, notaremos menores tiempos de retraso (lag) que los indicados en las gráficas producidas con el kernel genérico.

miércoles, 21 de febrero de 2024

¿Cómo iniciar una versión de kernel específica en Ubuntu?

¡Trabajadores!

No siempre todos los cambios dan los resultados que queremos. 

Sabemos que Ubuntu es un sistema operativo de tipo GNU, que actualmente cuenta con varias líneas de núcleos de sistema operativo de tipo Linux. Cualquiera de estas pueden servir, pero tienen el sentido de complacer a distintos tipos de afiliados. Por defecto se adjuntan versiones veteranas específicas para servidor, que suelen estar ampliamente probadas, bajo el nombre de linux-generic. Conforme las versiones del kernel genérico de Ubuntu van avanzando, estos núcleos también lo hacen. En el caso de Ubuntu 22.04LTS, esta rama representa a kernels de la línea 5.15.

En el caso de las versiones de Ubuntu para uso en escritorio, se puede decidir instalar kernels de una versión más nuevas, la cual sigue una política de mejoras para hardware ("HWE"). El sentido es contar con soporte para hardware de más moderno desarrollo como el que se suele incluir en las PC más modernas. En el caso particular del Ubuntu 22.04LTS, podremos recurrir a instalar la rama 6.5.xx del Kernel Linux. Ya he explicado que desde un tiempo a esta parte esto se hace realidad efectiva desde la terminal, simplemente ingresando el comando:

sudo apt install linux-generic-hwe-22.04

Y finalmente, también podríamos decidir utilizar una versión de kernel incluso más moderna, de carácter experimental de avanzada, o como se dice en la jerga, "bleeding edge". No suelo recomendarlos en aras de la estabilidad del sistema, pero  naturalmente en el caso de Ubuntu 22.04LTS, se podrían instalar versiones de la rama 6.7.xx del kernel Linux mediante:

sudo apt install linux-generic-hwe-22.04-edge

Aunque un sistema Linux sólo corre un único kernel, es indudable que teniendo en nuestro sistemas las imágenes de varias de estas versiones de kernel, las copias antiguas permanecen como resguardo y reaseguro: nunca es una mala política pues ante cualquier eventualidad con una compilación de kernel (que podría fácilmente inutilizar nuestro entorno), podremos recurrir a alguna de las varias versiones anteriores como remedio.

Pues bien señores, el problema de instalar estas ramas de kernels hwe y hwe-edge, radica en el hecho de que si bien son bastante más avanzados que linux-generic, pueden presentar problemas en algunos casos específicos (sobre todo la rama Edge). Por otro lado, una vez que instalamos un kernel de avanzada, no es tan sencillo retornar a una versión anterior ya que normalmente Ubuntu inicia la última versión de Kernel que esté instalada en el sistema. Esto complica la remoción de las versiones más nuevas del kernel del sistema, si por destino, esta fuese la actitud que nos vemos obligados a tomar. Para hacerlo debemos iniciar un kernel de versión anterior.

Iniciar un kernel instalado específico:

Si tenemos varias versiones de kernel instaladas, al presionar la tecla Mayúsculas durante el arranque del sistema, el arrancador Grub nos presentará un menú de inicio donde deberíamos poder seleccionar la opción de arranque deseada. Usualmente, nos dá algunos segundos para elegir una opción del menú y luego escoge automáticamente la primera opción, que es arrancar el sistema operativo Ubuntu cargando en memoria la versión de kernel más moderna disponible.

Si la versión más moderna del kernel falla o tiene algún inconveniente, lo lógico sería escoger la opción "Advanced" o Avanzadas, y elegir una versión de kernel mas antigua desde el submenú de versiones. Si Ubuntu cargó correctamente, procederíamos a desinstalar la imagen antigua y actualizar el Grub con el comando sudo update-grub.

Sin embargo, existen ocasiones donde esto podría no funcionar: si no tenemos teclado en el servidor, o si se trata de una máquina de acceso remoto, ¡no podríamos escoger la opción!. 

Sin embargo, existe un método podremos especificar la versión de arranque "a mano". Esto implica obligatoriamente editar el fichero de configuración del arrancador grub a mano.

Primero hemos de arrancar el sistema y utilizar la terminal (Ctrl+Alt+t o una conexión SSH), y mediante este enlace podremos obtener un listado de los kernels instalados en tal sistema que Grub reconoce. Esto lo haremos mediante el siguiente comando de organización:

grep -Ei 'submenu|menuentry ' /boot/grub/grub.cfg | sed -re "s/(.? )'([^']+)'.*/\1 \2/"

Este nos devolverá como resultado un listado de Kernels instalados, que ilustran sus números de versión y el lugar que ocupan en el menú de Grub, por ejemplo:

menuentry  Ubuntu
submenu  Advanced options for Ubuntu
    menuentry  Ubuntu, with Linux 6.7.0-15-generic
    menuentry  Ubuntu, with Linux 6.7.0-15-generic (recovery mode)

    menuentry  Ubuntu, with Linux 5.15.0-94-generic
    menuentry  Ubuntu, with Linux 5.15.0-94-generic (recovery mode)
    menuentry  Ubuntu, with Linux 5.15.0-92-generic
    menuentry  Ubuntu, with Linux 5.15.0-92-generic (recovery mode)
menuentry  Memory test (memtest86+.elf)
menuentry  Memory test (memtest86+.bin, serial console)
menuentry  MS-DOS 5.x/6.x/Win3.1 (on /dev/sdf1)

Como vemos, esto nos devuelve las opciones del menú de arranque de Grub. Como es consabido, la primera opción suele ser siempre arrancar Ubuntu con el último kernel instalado. Si quisiéramos arrancar una versión específica más antigua de entre los kernels instalados para nuestro Ubuntu (por ejemplo la que dice "Ubuntu, with Linux 5.15.0-94-generic"), en el menú de Grub deberíamos ir a "Advanced" y elegir la tercera opción de la lista, específicamente "Ubuntu, with Linux 5.15.0-94-generic".

Primero lo respaldamos por precaución:

sudo cp /etc/default/grub /etc/default/grub.bak

...y luego lo editamos para arrancar una versión específica:

sudo nano /etc/default/grub

y cambiar la opción por defecto que elije el Ubuntu (la opción "0"), por otra que elija la opción Advanced y elija la tercera opción de la lista. En este caso, se debe indicar de la siguiente manera:

GRUB_DEFAULT="1>3"

Una vez guardado el fichero, actualizamos Grub para que surta efecto:

sudo update-grub

Esto indica "advanced/5ta opción de la lista de kernels". Tengamos en cuenta que si contamos con las opciones de Recovery mode, estas siempre reciben números pares, y las opciones sin recovery mode reciben números impares (como el 3 en este caso).

Luego podremos reiniciar el sistema con:

sudo reboot

y debería ejecutar el kernel solicitado, el 5.15.0-94-generic. Podríamos comprobarlo con el comando:

uname -a

Desinstalar líneas de kernels hwe

Ahora bien, una vez instalado el Kernel antiguo, en este caso podremos desinstalar ya los kernels mas modernos de las ramas hwe o hwe-edge, según nos planteamos. Para ello podríamos indicar:

sudo apt purge linux-generic-hwe-22.04*

...y una vez desinstalados, podremos también remover las imágenes de núcleos Linux modernas que nos nos interesan ya, por ejemplo, en este caso:

sudo apt purge linux-image-6*

(lo cual borrará todos los kernels superiores a 6). 

Ante estos menesteres jamás debemos olvidar volver a actualizamos el Grub, para que deje de hacer caso a kernels que ya han sido desinstalados:

sudo update grub

Si hicimos bien las cosas, no hemos desinstalado aquellos kernels de la rama 5.x (o la que corresponda a nuestra rama linux-generic de la versión de Ubuntu que estemos utilizando). Para asegurarnos de contar al menos con esta rama linux-generic - pues de lo contrario el sistema no arrancaría - ingresamos el comando de instalación que le corresponde:

sudo apt install linux-generic

Este debería indicar que ya está instalado, pues lo hemos hecho para asegurandos, por supuesto.

Finalmente volvemos a editar el fichero /etc/default/grub con

sudo nano /etc/default/grub

...y volvemos a modificar la línea GRUB_DEFAULT a su valor por defecto, para que quede:

GRUB_DEFAULT="0"

Y tras guardar los cambios del fichero de configuración con Ctrl+o y salir del editor GNU Nano con Ctrl+x, actualizamos Grub para que arranque la versión 5.x del kernel:

sudo update-grub

Si todo va bien, podremos reiniciar el sistema con:

sudo reboot

El sistema debería arrancar el último kernel de la línea linux-generic y habernos deshecho de aquellas líneas partidarias no deseadas.

martes, 23 de enero de 2024

¿Cómo mando archivos por Internet con croc en Ubuntu?

Desde la Quinta "17 de Octubre", Juan Perón expone sobre la necesidad de la solidaridad y enseña cómo transferir copias de ficheros de par a par con Croc en Ubuntu.

¡Mis queridos descamisados!

De poco sirve la libertad si no se configura en un ambiente de Justicia para con la sociedad en la que vivimos. El individualismo es una noción perniciosa que habilita al poderoso en desmedro de las Masas del Pueblo. Estas son las que deben organizarse para cuidarse a sí mismas, y no ceder a impulsos disolutivos que tienen por fin último el resquebrajamiento de lo que hace humano al hombre.

La solidaridad es uno de los más altos valores humanos, y es uno de los basales de la doctrina que nos da todo: la Justicia Social. Esta es la argamasa en enhebra un tejido social que da sostén a un Estado y a la Nacionalidad que lo justifica. Quien en su desmedro habla, lo hace porque anhela actuar para dar lugar a otro Estado. Y ese no puede ser sino ajeno al Pueblo.

Con los contenidos digitales sucede lo mismo, pues estos surgen del Pueblo. Indudablemente, en las redes de datos, se nos hace sencillo el acto de mantener inconmovible nuestro entretejido social: basta con compartir todos los bytes que podamos, por medio de la copia. Algunos desaprensivos han querido llamar a la compartición telemática con la delincuencia, intentando equiparar al acto de compartir con el del robo por piratería. Pero sabemos que el derecho de propiedad tiene un límite sumamente preciso, que es el de la función social y el de la felicidad del Pueblo. En otras palabras, la doctrina que propugnamos fomenta que cada pseudo-propietario sea un cantor - y uno bueno, porque le tiene que ir a cantar a Gardel. En efecto, podrán compartir ficheros .ogg con fonogramas de Gardel, pues a nadie le podrá reclamar ya, si eso hace feliz a su Pueblo.

En el caso de GNU con Linux, podríamos recurrir a la transferencia telemática de copias de ficheros, por medio de SCP, ya que este programa nos permite utilizar la clara identificación de un destinatario que tiene un sistema similar a UNIX y el sistema de shell seguro (la distribución Ubuntu de GNU entre ellos). También podríamos recurrir a rsync para hacer lo propio con ramas enteras en el árbol de archivaje de nuestro sistema. Sin embargo, para hacerlo efectivo lo procedente, es sabido que el destinatario ha de contar necesariamente con  cuentas de usuario en el otro sistema (amén de puertos abiertos y gran dominio de la infraestructura intermedia de cifrado). Esto no siempre es posible, o sencillo de coordinar.

Sin embargo, en esta ocasión simplificaremos la transferencia haciendo uso de algún programa de transferencia par a par cifrada.  Ya he explicado cómo usar Wormhole para este menester, pero en este caso os haré peritos en el uso de croc, un programa liberado bajo GPLv3 que oficia de transmisor y receptor par a par de archivos y carpetas. 

Croc tiene la ventaja de ser un programa mucho más pequeño, con un uso pensado para la transmisión instantánea entre pares. Por otro lado, permite el uso opcional de intermediarios cooperativos de triangulación telemática (lo que se conoce como "relay").

Veamos como usarlo. En primer lugar, tanto el remitente como el destinatario deben tener instalado croc en su sistema. Esto es sencillo de hacer efectivo en  cualquier sistema GNU con Linux; simplemente debemos abrir un terminal con Ctrl+Alt+t e ingresar por única vez el siguiente comando de organización:

sudo apt install curl ;
curl https://getcroc.schollz.com | bash

Esto lanzará el instalador de la última versión de croc, ante el cual debemos ingresar nuestra contraseña de administrador:

Otra manera de instalarlo puede ser descargar el paquete de instalación pensado para Debian/Ubuntu y derivados, lo que tendrá el mismo resultado:

cd /tmp ;
wget https://github.com/schollz/croc/releases/download/v9.6.6/croc_9.6.6_Linux-64bit.deb ;
sudo dpkg -i croc_9.6.6_Linux-64bit.deb

Asimismo podemos considerar que Croc no es sectario, de modo que se puede dejar instalado en otros sistemas similares a UNIX como BSD, MacO$, e incluso el infame Window$.

Para realizar un envío de un fichero o directorio por Internet a través de croc, debemos operar desde la terminal, de común acuerdo.

Quien desea enviar el fichero, debe ingresar simplemente en su terminal:

croc send fichero-o-directorio

Croc cifrará el fichero en memoria y creará un código-del-envío. Este oficiará de llave de autenticado por contraseña común (“PAKE”). Asimismo, croc quedará en espera del inicio de la transferencia durante un par de minutos, alertando al remitente de la siguiente manera:


Sending 'fichero-o-directorio' (x MB)
Code is: código-del-envío

On the other computer run
croc código-del-envío

El remitente debe poner en conocimiento del compañero destinatario el código-del-envío en forma síncrona (ya que este deberá introducirlo en su propia terminal para iniciar la recepción, dentro de un par de minutos). Por este motivo, lo ideal es transmitir el código-del-envío de manera segura (por ejemplo, a través de chat cifrado punto a punto, o llamada de voz cifrada punto a punto o bien correo electrónico cifrado). 

Nota: Si el código-del-envío se propala en un canal abierto, nada impediría que la transmisión de la copia cifrada fuese apropiado e interceptado por otro destinatario indeseado que estuviese a la escucha.

En cualquier caso, una vez puesto al tanto, el remitente podrá iniciar la transferencia del fichero-o-directorio a través de un canal cifrado en internet, abriendo una terminal en su máquina con Ctrl+Alt+t e ingresando allí el consabido:

croc código-del-envío

Ante esto, ambas máquinas con croc se pondrá a la par, y cotejarán la PAKE, y el destinatario será notificado para que acepte la recepción de fichero-o-directorio (debe aceptar con y o rechazarla con n). 

Al comenzar la transferencia, esta se indicará una barra de progreso).

Al finalizar la transferencia par a par de la copia cifrada, el enlace se cortará indicando la recepción.

Una de las ventajas de croc es la de poder utilizar un tercer proxy cooperativo en la Internet para la triangulación del envío, incluso con una contraseña_del_relay. Esto puede ser útil en aquellos casos donde se desea mantener una pseudo-furtividad entre pares. En este caso especial, el remitente debe utilizar el prefijo --relay maquina.de.relay.com, por ejemplo:

croc --relay maquina.de.relay.com --pass contraseña_del_relay send fichero-o-directorio

...lo que generará el código-del-envío, y ante tal caso, el compañero destinatario deberá utilizar el equivalente.

croc --relay maquina.de.relay.com --pass contraseña_del_relay código-del-envío

Todo se repetirá de una manera análoga al caso de transferencia directa, indicando en la pantalla de ambos distintos mensajes referentes a la inclusión de la máquina de relay (y la contraseña del relay, en caso de que esta lo tenga configurada).

Con esto podremos asegurarnos de enviar bytes por circunvalación, y hacer llegar los datos a donde deben llegar para la Felicidad del Pueblo.