# Recetas variadas ## Añadir las claves GPG de un repo __Este método está obsoleto y no se recomienda__ ~~~~ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F7E06F06199EF2F2 ~~~~ Hasta ahora añadíamos las claves usando el programa `apt-key` como se describe arriba. El programa añade las claves en el "llavero" `/etc/apt/trusted.gpg`. El gestor de paquetes `apt` confía ciegamente en las claves de este llavero. Eso permite que cualquier clave presente en el "llavero" sirva para instalar cualquier programa. No hay una relación unívoca entre claves y programas. Para evitar el _warning_ podríamos almacenar las claves en `/etc/apt/trusted.d`, cada clave en si fichero separado. Pero eso dejaría el verdadero problema de establecer una relación entre clave y repo sin solucionar. Si seguimos las recomendaciones de ___Debian___, deberíamos tener un directorio solo accesible por `root`. Por ejemplo `/usr/local/share/keyring` y deberíamos almacenar las claves con nombres de la forma: `-archive-keyring.gpg`. Una vez que tengamos la clave disponible debemos especificar para cada origen de software que clave le aplica para la autenticación de paquetes. __En resumen__: * Las claves gpg de los repo se quedarán almacenadas en `/usr/local/share/keyring`, estarán en formato _dearmored_ y con los nombres en la forma canónica `-archive-keyring.gpg` * Las especificaciones de los orígenes de software harán referencia explícita a la clave que hay que usar para comprobarlas, es decir, tendrán la forma: `deb [signed-by=/usr/share/keyrings/-archive-keyring.gpg] ` ### Si la clave ya estaba en `trusted.gpg` ```bash sudo apt-key list # Obtendremos un lista de claves e identificamos la conflictiva: # # pub rsa1024 2009-01-22 [SC] # E1DD 2702 88B4 E603 0699 E45F A171 5D88 E1DF 1F24 # uid [ unknown] Launchpad PPA for Ubuntu Git Maintainers # # Exportamos la clave al "llavero": sudo apt-key export E1DF1F24 |sudo gpg --dearmour -o /usr/local/share/gitMaintainers-archive-keyring.gpg # Editamos el fichero de orígenes del sw y probamos a actualizar sudo apt update # si todo va bien podemos borrar la clave del trusted.gpg sudo apt-key del E1DF1F24 ``` ### Descargando una clave con wget ```bash wget -O- | \ gpg --dearmor -o /usr/local/share/keyrings/-archive-keyring.gpg ``` ### Importando claves directamente de un keyserver ```bash sudo gpg --no-default-keyring --keyring /usr/local/share/keyrings/-archive-keyring.gpg \ --keyserver --recv-keys ``` ## Solucionar problemas de menús duplicados usando menulibre ---------------------------------------------------------------------- __Nota__: Ya no uso _MenuLibre_ ---------------------------------------------------------------------- En el directorio `~/.config/menus/applications-merged` borramos todos los ficheros que haya. ## Mapear un servidor webdav en nuestro sistema de ficheros ```bash sudo apt install davfs2 sudo mount -t davfs -o uid= ``` Finalmente para mi usuario: ```bash # añadimos el usuario al grupo davfs2 sudo gpasswd -a davfs2 ``` Añadimos al fichero `/etc/fstab` la linea del servidor webdav: ```bash davfs rw,user,uid=salvari,noauto 0 0 ``` Añadimos las credenciales al fichero `~/.davfs2/secrets` que sería una linea con ` ` Con eso ya podremos montar el webdav con nuestro usuario sin mas que ejecutar `mount ` ## Solucionar el problema de "paquetes mantenidos" (_The following packages have been kept back_) Cuando hacemos `sudo apt upgrade` si alguno de los paquetes que se va a actualizar tiene __nuevas dependencias__ no se actualizará y nos dará el error del título. La solución pasa por ejecutar: `sudo apt install --upgrade-only ` ## Formatear memoria usb "The driver descriptor says the physical block size is 2048 bytes, but Linux says it is 512 bytes." Este comando borró todas las particiones de la memoria: `sudo dd if=/dev/zero of=/dev/sdd bs=2048 count=32 && sync` I'm assuming your using gparted. First delete whatever partitions you can...just keep pressing ignore. There will be one with a black outline...you will have to unmount it...just right click on it and unmount. Again you will have to click your way through ignore..if fix is an option choose it also. Once all this is done... you can select the device menu and choose new partition table. Select MSdos Apply and choose ignore again. Once it's done it show it's real size. Next you can format the drive to whichever file system you like. It's a pain in the behind this way, but it's the only way I get it done..I put live iso's on sticks all the time and have to remove them. I get stuck going through this process every time. ## Copiar la clave pública ssh en un servidor remoto `cat /home/tim/.ssh/id_rsa.pub | ssh tim@just.some.other.server 'cat >> .ssh/authorized_keys'` O también: `ssh-copy-id -i ~/.ssh/id_rsa.pub username@remote.server` ## ssh access from termux ## SDR instalaciones varias Vamos a trastear con un dispositivo [RTL-SDR.com](https://www.rtl-sdr.com/). Tenemos un montón de información en el blog de [SDR Galicia](https://sdrgal.wordpress.com/) y tienen incluso una guia de instalación muy completa, pero yo voy a seguir una guía un poco menos ambiciosa, por lo menos hasta que pueda hacer el curso que imparten ellos mismos (SDR Galicia) La guía en cuestión la podemos encontrar [aquí](https://ranous.wordpress.com/rtl-sdr4linux/) Seguimos los pasos de instalación: * La instalación de `git`, `cmake` y `build-essential` ya la tengo hecha. ~~~~ sudo apt-get install libusb-1.0-0-dev ~~~~ ## Posible problema con modemmanager y micros programables Programando el _Circuit Playground Express_ con el _Arduino IDE_ tenía problemas continuos para hacer los _uploads_, al parecer el servicio _ModemManager_ es el culpable, se pasa todo el tiempo capturando los nuevos puertos serie por que considera que todo es un modem. Una prueba rápida para comprobarlo: `sudo systemctl stop ModemManager` Con esto funciona todo bien, pero en el siguiente arranque volvera a cargarse. Para dar una solución definitiva se puede programar una regla para impedir que el _ModemManager_ capture el puerto con un dispositivo Creamos un fichero con permisos de `root` en el directorio `/etc/udev/rules.d` que llamaremos: `99-arduino.rules` Dentro de ese fichero especificamos los codigos VID/PID que se deben ignorar: ~~~~ # for arduino brand, stop ModemManager grabbing port ATTRS{idVendor}=="2a03", ENV{ID_MM_DEVICE_IGNORE}="1" # for sparkfun brand, stop ModemManager grabbing port ATTRS{idVendor}=="1b4f", ENV{ID_MM_DEVICE_IGNORE}="1" ~~~~ Ojo que si tienes SystemV no va a funcionar. https://starter-kit.nettigo.eu/2015/serial-port-busy-for-avrdude-on-ubuntu-with-arduino-leonardo-eth/ https://www.codeproject.com/Tips/349002/Select-a-USB-Serial-Device-via-its-VID-PID ## Programar los nanos con chip ch340 o ch341 Linux mapea el chip correctamente en un puerto `/dev/ttyUSB0` y con eso basta, que no te lien con el cuento de "drivers para linux" Todo lo que hace falta es configurar correctamente el _Arduino IDE_, hay que escoger: ~~~~ Board: "Arduino Nano" Processor: "ATmega168" Port: "/dev/ttyUSB0" ~~~~ Y ya funciona todo. ## Linux Mint 20 es _python agnostic_ En principio no podemos invocar a `python` por que no se ha escogido una versión por defecto. Tenemos dos opciones: ~~~~{bash} apt install python-is-python2 apt install python-is-python3 ~~~~ ## Instalar chromium sin snapdrop Este rodeo ya no es necesario en las versiones modernas de Linux Mint ~~~~ sudo apt install keepassxc gnucash deluge rsync grsync rar unrar \ zip unzip unace bzip2 lzop p7zip p7zip-full p7zip-rar \ most mc tree neofetch fasd silversearcher-ag ack mate-tweak filezilla \ rofi ~~~~