diff --git a/README.md b/README.md index 73490ca..01f4d2c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -Introducción -============ +# Introducción Mis portatiles son: @@ -30,11 +29,9 @@ Mis portatiles son: - 512Gb SSD + 1Tb HDD -Programas básicos -================= +# Programas básicos -Linux Mint ----------- +## Linux Mint Linux Mint incluye `sudo` y las aplicaciones que uso habitualmente para gestión de paquetes por defecto (*aptitude* y *synaptic*). @@ -46,8 +43,7 @@ programas instalados desde ese ppa. Tampoco voy a enredar nada con los orígenes del software (de momento), es decir no voy a cambiar al depósito regional. -Firmware --------- +## Firmware Ya no es necesario intalar los paquetes de *microcode* la instalación de Ulyana se encargó de instalar: @@ -65,8 +61,7 @@ Una vez instalado el driver de nvidia, el comando `prime-select query`debe indicarnos la tarjeta activa y podremos cambiar de tarjeta ejecutando `prime-select [nvidia|intel]` -Control de configuraciones con git ----------------------------------- +## Control de configuraciones con git Una vez instalado el driver de nvidia y antes de seguir con la instalación instalamos el `git` y el `etckeeper` para que todos los @@ -80,18 +75,22 @@ controlados los cambios de configuración y ayuda en caso de problemas. ¡Ojo!, nos hacemos `root` para ejecutar: - sudo su - - git config --global user.email xxxxx@whatever.com - git config --global user.name "Name Surname" - apt install etckeeper +``` {bash} +sudo su - +git config --global user.email xxxxx@whatever.com +git config --global user.name "Name Surname" +apt install etckeeper +``` *etckeeper* hara un control automático de tus ficheros de configuración en `/etc` Para echar una mirada a los *commits* creados puedes ejecutar: - cd /etc - sudo git log +``` {bash} +cd /etc +sudo git log +``` ### Controlar dotfiles con git @@ -100,18 +99,22 @@ de configuración. Creamos el repo donde queramos - mkdir usrcfg - cd usrcfg - git init - git config core.worktree "/home/salvari" +``` {bash} +mkdir usrcfg +cd usrcfg +git init +git config core.worktree "/home/salvari" +``` Y ya lo tenemos, un repo que tiene el directorio de trabajo apuntando a nuestro *$HOME*. Podemos añadir los ficheros de configuración que queramos al repo: - git add .bashrc - git commit -m "Add some dotfiles" +``` {bash} +git add .bashrc +git commit -m "Add some dotfiles" +``` Una vez que tenga añadidos los ficheros que quiero tener controlados pondré `*` en el fichero `.git/info/exclude` de mi repo para que ignore @@ -125,8 +128,7 @@ ejemplo) así que no tengo problemas en almacenarlo en la nube. Facilita mucho las cosas en casos de upgrade del sistema o copiar configuraciones entre ordenadores. -Parámetros de disco duro ------------------------- +## Parámetros de disco duro Tengo un disco duro ssd y otro hdd normal. @@ -138,30 +140,34 @@ tirar del swap. Añadimos el parámetro `noatime` para las particiones de `root` y `/home`, que si que se han creado en el ssd. - # /etc/fstab: static file system information. - # - # Use 'blkid' to print the universally unique identifier for a - # device; this may be used with UUID= as a more robust way to name devices - # that works even if disks are added and removed. See fstab(5). - # - # - # / was on /dev/sda5 during installation - UUID=d96a5501-75b9-4a25-8ecb-c84cd4a3fff5 / ext4 noatime,errors=remount-ro 0 1 - # /home was on /dev/sda7 during installation - UUID=8fcde9c5-d694-4417-adc0-8dc229299f4c /home ext4 defaults,noatime 0 2 - # /store was on /dev/sdc7 during installation - UUID=0f0892e0-9183-48bd-aab4-9014dc1bd03a /store ext4 defaults 0 2 - # swap was on /dev/sda6 during installation - UUID=ce11ccb0-a67d-4e8b-9456-f49a52974160 none swap sw 0 0 - # swap was on /dev/sdc5 during installation - UUID=11090d84-ce98-40e2-b7be-dce3f841d7b4 none swap sw 0 0 +``` {fstab} +# /etc/fstab: static file system information. +# +# Use 'blkid' to print the universally unique identifier for a +# device; this may be used with UUID= as a more robust way to name devices +# that works even if disks are added and removed. See fstab(5). +# +# +# / was on /dev/sda5 during installation +UUID=d96a5501-75b9-4a25-8ecb-c84cd4a3fff5 / ext4 noatime,errors=remount-ro 0 1 +# /home was on /dev/sda7 during installation +UUID=8fcde9c5-d694-4417-adc0-8dc229299f4c /home ext4 defaults,noatime 0 2 +# /store was on /dev/sdc7 during installation +UUID=0f0892e0-9183-48bd-aab4-9014dc1bd03a /store ext4 defaults 0 2 +# swap was on /dev/sda6 during installation +UUID=ce11ccb0-a67d-4e8b-9456-f49a52974160 none swap sw 0 0 +# swap was on /dev/sdc5 during installation +UUID=11090d84-ce98-40e2-b7be-dce3f841d7b4 none swap sw 0 0 +``` Una vez modificado el `/etc/fstab` no hace falta arrancar, basta con ejecutar lo siguiente: - mount -o remount / - mount -o remount /home - mount +``` {bash} +mount -o remount / +mount -o remount /home +mount +``` ### Ajustar *Firefox* @@ -183,13 +189,14 @@ Cambiamos TODO: Comprobar *trim* en mi disco duro. Y mirar [esto](https://easylinuxtipsproject.blogspot.com/p/speed-mint.html) -Fuentes (tipográficas) adicionales ----------------------------------- +## Fuentes (tipográficas) adicionales Instalamos algunas fuentes desde los orígenes de software: - sudo apt install ttf-mscorefonts-installer - sudo apt install fonts-noto +``` {bash} +sudo apt install ttf-mscorefonts-installer +sudo apt install fonts-noto +``` Y la fuente [Mensch](https://robey.lag.net/2010/06/21/mensch-font.html) la bajamos directamente al directorio `~/.local/share/fonts` @@ -206,16 +213,17 @@ Otras fuentes muy interesantes - [Programming fonts](https://github.com/ProgrammingFonts/ProgrammingFonts) -Firewall --------- +## Firewall `ufw` y `gufw` vienen instalados por defecto, pero no activados. - aptitude install ufw - ufw default deny - ufw enable - ufw status verbose - aptitude install gufw +``` {bash} +aptitude install ufw +ufw default deny +ufw enable +ufw status verbose +aptitude install gufw +``` ------------------------------------------------------------------------ @@ -225,8 +233,7 @@ Firewall ------------------------------------------------------------------------ -Aplicaciones variadas ---------------------- +## Aplicaciones variadas > **Nota**: Ya no instalamos *menulibre*, Linux Mint tiene una utilidad > de edición de menús. @@ -274,31 +281,31 @@ Chromium Como Chrome pero libre, ahora en Ubuntu solo está disponible como snap así que tendremos que dar un rodeo. - - - sudo add-apt-repository ppa:xalt7x/chromium-deb-vaapi - cat <http://cheat.sh/, es casi -idéntico al anterior pero disponible desde cualquier ordenador con -conexión. +Echa una mirada a su página web: , es casi idéntico al +anterior pero disponible desde cualquier ordenador con conexión. gparted Instalamos *gparted* para poder formatear memorias usb @@ -624,11 +631,9 @@ red. `ndiff` nos permite comparar escaneos realizados con `nmap` y `sudo apt install nmap ndiff ncat` -Internet -======== +# Internet -Rclone ------- +## Rclone Instalamos desde la página web(https://rclone.org/), descargando el fichero `.deb`. @@ -658,32 +663,29 @@ Sincronizar una carpeta remota en local: (blogdelazaro)](https://elblogdelazaro.gitlab.io//articles/rclone-cifrado-de-ficheros-en-la-nube/) - [Documentación](https://rclone.org/docs/) -time-tracking -============= +# time-tracking -Activity Watcher ----------------- +## Activity Watcher Instalado desde la web En realidad no lo uso para nada. -go for it ---------- +## go for it Este programa no para de escribir en el disco continuamente. He dejado de usarlo por que me sobra con el org-mode de emacs. Si de todas formas lo quieres instalar, aquí tienes los comandos: - sudo add-apt-repository ppa:go-for-it-team/go-for-it-daily && sudo apt-get update - sudo apt-get install go-for-it +``` {bash} +sudo add-apt-repository ppa:go-for-it-team/go-for-it-daily && sudo apt-get update +sudo apt-get install go-for-it +``` -Documentación -============= +# Documentación -Vanilla LaTeX -------------- +## Vanilla LaTeX Para instalar la versión más reciente de LaTeX hago la instalación desde [ctan](https://www.ctan.org/) @@ -802,15 +804,13 @@ Lanzador para el actualizador de *texlive*: Icon=system-software-update EOF -Tipos de letra --------------- +## Tipos de letra Creamos el directorio de usuario para tipos de letra: mkdir ~/.local/share/fonts -Fuentes Adicionales -------------------- +## Fuentes Adicionales Me he descargado de internet la fuente [Mensch](https://robey.lag.net/downloads/mensch.ttf) el directorio de @@ -828,8 +828,7 @@ parece que las fuentes están un poco anticuadas. La fuente Hack la he instalado directamente desde el [sitio web](https://sourcefoundry.org/hack/) -Pandoc ------- +## Pandoc *Pandoc* es un traductor entre formatos de documento. Está escrito en Python y es increiblemente útil. De hecho este documento está escrito @@ -849,8 +848,7 @@ comandos: Las plantillas no son imprescindibles pero si quieres aprender a usarlas o hacer alguna modificación viene bien tenerlas. -Algunos editores adicionales ----------------------------- +## Algunos editores adicionales Dos editores para hacer pruebas: @@ -862,8 +860,7 @@ Zettlr Instalado con fichero `.deb` descargado desde [su página web](https://www.zettlr.com/) -Calibre -------- +## Calibre La mejor utilidad para gestionar tu colección de libros electrónicos. @@ -893,8 +890,7 @@ Algunos enlaces útiles: - (http://www.redelijkheid.com/blog/2013/7/25/kobo-glo-ebook-library-management-with-calibre) - (https://www.netogram.com/kobo.htm) -Scribus -------- +## Scribus Scribus es un programa libre de composición de documentos. con Scribus puedes elaborar desde los folletos de una exposición hasta una revista o @@ -942,17 +938,14 @@ he instalado los paquetes: Y ahora funciona correctamente. -Foliate: lector de libros electrónicos --------------------------------------- +## Foliate: lector de libros electrónicos Instalado el paquete deb desde [su propio github](https://github.com/johnfactotum/foliate/releases) -Desarrollo software -=================== +# Desarrollo software -Paquetes esenciales -------------------- +## Paquetes esenciales Estos son los paquetes esenciales para empezar a desarrollar software en Linux. @@ -960,8 +953,7 @@ Linux. sudo apt install build-essential checkinstall make automake cmake autoconf \ git git-core git-crypt dpkg wget -Git ---- +## Git ------------------------------------------------------------------------ @@ -969,9 +961,11 @@ Git developers tienen un ppa para ubuntu, si quieres tener el git más actualizado: - sudo add-apt-repository ppa:git-core/ppa - sudo apt update - sudo apt upgrade +``` {bash} +sudo add-apt-repository ppa:git-core/ppa +sudo apt update +sudo apt upgrade +``` ------------------------------------------------------------------------ @@ -1006,15 +1000,13 @@ Configuración básica de git: git config --global alias.br branch git config --global core.editor emacs -Emacs ------ +## Emacs Instalado emacs desde los repos: sudo aptitude install emacs -Lenguaje de programación D (D programming language) ---------------------------------------------------- +## Lenguaje de programación D (D programming language) El lenguaje de programación D es un lenguaje de programación de sistemas con una sintaxis similar a la de C y con tipado estático. Combina @@ -1077,14 +1069,15 @@ Instalados los siguientes paquetes desde Melpa Referencias \* (https://github.com/atilaneves/ac-dcd) \* (https://github.com/Hackerpilot/DCD) -C, C++ ------- +## C, C++ ### Instalación de Gnu Global Para instalar las dependencias, previamente instalamos: - sudo apt install ncurses-dev id-utils exuberant-ctags python-pygments +``` {shell} +sudo apt install ncurses-dev id-utils exuberant-ctags python-pygments +``` Con `ctags --version` nos aseguramos de que se llama a Exuberant y no el ctags que instala Emacs. Si no es así habrá que revisar la definición @@ -1102,69 +1095,76 @@ esto se trata de la versión 6.6.4. Descomprimimos los fuentes y los compilamos con: - ./configure --prefix=/usr/local --with-exuberant-ctags=/usr/bin/ctags - make - sudo make install +``` {shell} +./configure --prefix=/usr/local --with-exuberant-ctags=/usr/bin/ctags +make +sudo make install +``` He comprobado que make uninstall funciona correctamente, las librerías quedan instaladas en `/usr/local/lib/gtags` y los ejecutables en `/usr/local/bin` -Rust ----- +## Rust Instalamos siguiendo las instrucciones de [aqui](https://www.rust-lang.org/tools/install) (Hacemos la instalación por defecto) - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +``` {bash} +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - stable installed - rustc 1.47.0 (18bf6b4f0 2020-10-07) + stable installed - rustc 1.47.0 (18bf6b4f0 2020-10-07) - Rust is installed now. Great! +Rust is installed now. Great! - To get started you need Cargo's bin directory ($HOME/.cargo/bin) in your PATH - environment variable. Next time you log in this will be done - automatically. +To get started you need Cargo's bin directory ($HOME/.cargo/bin) in your PATH +environment variable. Next time you log in this will be done +automatically. - To configure your current shell run source $HOME/.cargo/env +To configure your current shell run source $HOME/.cargo/env +``` Yo comento la linea del fichero `.zprofile` por que mi `.zshrc` ya lee el fichero `.profile` Para desinstalar `rust` bastaría con ejecutar `rustup self uninstall` -golang ------- +## golang Bajamos el paquete con la última versión desde [la página oficial](https://golang.org/dl/). Descomprimimos como *root* en `/usr/local/` - sudo tar -C /usr/local -xvzf go1.15.7.linux-amd64.tar.gz +``` bash +sudo tar -C /usr/local -xvzf go1.15.7.linux-amd64.tar.gz +``` Añadimos al path con las siguientes lineas en `~/.profile`: - #golang - if [ -d "/usr/local/go" ] ; then - export GOROOT="/usr/local/go" - PATH="$PATH:$GOROOT/bin" - fi - if [ -d "$HOME/work/development/gocode" ] ; then - export GOPATH="$HOME/work/development/gocode" - PATH="$PATH:$GOPATH/bin" - fi +``` bash +#golang +if [ -d "/usr/local/go" ] ; then + export GOROOT="/usr/local/go" + PATH="$PATH:$GOROOT/bin" +fi +if [ -d "$HOME/work/development/gocode" ] ; then + export GOPATH="$HOME/work/development/gocode" + PATH="$PATH:$GOPATH/bin" +fi +``` ### Instalación de *gopls* un servidor de LSP para editores: Desde un directorio **que no sea el GOPATH** - GO111MODULE=on go get golang.org/x/tools/gopls@latest +``` bash +GO111MODULE=on go get golang.org/x/tools/gopls@latest +``` -Processing ----------- +## Processing Bajamos el paquete de la [página web](https://processing.org/), descomprimimimos en `~/apps/`, en las nuevas versiones incorpora un @@ -1173,8 +1173,7 @@ script de instalación que ya se encarga de crear el fichero *desktop*. La última versión incorpora varios modos de trabajo, he descargado el modo *Python* para probarlo. -openFrameworks --------------- +## openFrameworks Nos bajamos los fuentes para linux 64bits desde [la página web del proyecto](https://openframeworks.cc), y las descomprimimos en un @@ -1191,15 +1190,16 @@ contrario falla la compilación. Añade los siguientes paquetes a nuestro sistema - installing OF dependencies - OF needs to install the following packages using apt-get: - curl libjack-jackd2-0 libjack-jackd2-dev freeglut3-dev libasound2-dev libxmu-dev libxxf86vm-dev g++ libgl1-mesa-dev libglu1-mesa-dev libraw1394-dev libudev-dev libdrm-dev libglew-dev libopenal-dev libsndfile-dev libfreeimage-dev libcairo2-dev libfreetype6-dev libssl-dev libpulse-dev libusb-1.0-0-dev libgtk-3-dev libopencv-dev libassimp-dev librtaudio-dev libboost-filesystem-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav gstreamer1.0-pulseaudio gstreamer1.0-x gstreamer1.0-plugins-bad gstreamer1.0-alsa gstreamer1.0-plugins-base gstreamer1.0-plugins-good gdb libglfw3-dev liburiparser-dev libcurl4-openssl-dev libpugixml-dev libgconf-2-4 libgtk2.0-0 libpoco-dev - Do you want to continue? [Y/n] +``` {bash} +installing OF dependencies +OF needs to install the following packages using apt-get: +curl libjack-jackd2-0 libjack-jackd2-dev freeglut3-dev libasound2-dev libxmu-dev libxxf86vm-dev g++ libgl1-mesa-dev libglu1-mesa-dev libraw1394-dev libudev-dev libdrm-dev libglew-dev libopenal-dev libsndfile-dev libfreeimage-dev libcairo2-dev libfreetype6-dev libssl-dev libpulse-dev libusb-1.0-0-dev libgtk-3-dev libopencv-dev libassimp-dev librtaudio-dev libboost-filesystem-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav gstreamer1.0-pulseaudio gstreamer1.0-x gstreamer1.0-plugins-bad gstreamer1.0-alsa gstreamer1.0-plugins-base gstreamer1.0-plugins-good gdb libglfw3-dev liburiparser-dev libcurl4-openssl-dev libpugixml-dev libgconf-2-4 libgtk2.0-0 libpoco-dev +Do you want to continue? [Y/n] +``` No te olvides de compilar también el *Project Generator*. -Python ------- +## Python De partida tenemos instalado dos versiones: *python2* y *python3* @@ -1213,29 +1213,35 @@ En principio yo no quería instalar ninguno para averigüar que paquetes no funcionaban, pero la instalación de VirtualBox hizo que se instalara automáticamente el paquete `python-is-python2`. - python2 -V - Python 2.7.18rc1 +``` {bash} +python2 -V +Python 2.7.18rc1 - python3 -V - Python 3.8.2 +python3 -V +Python 3.8.2 +``` ### Paquetes de python instalados Son los que ya comentamos en la sección de instalación de zsh, como ya dijimos conviene que instalemos los paquetes de desarrollo: - sudo apt install python2-dev - sudo apt install python-all-dev - sudo apt install python3-dev - sudo apt install python3-all-dev - sudo apt install virtualenv virtualenvwrapper python3-virtualenv +``` {bash} +sudo apt install python2-dev +sudo apt install python-all-dev +sudo apt install python3-dev +sudo apt install python3-all-dev +sudo apt install virtualenv virtualenvwrapper python3-virtualenv +``` Ademas añadimos las siguientes lineas al fichero `~/.profile`: - # WORKON_HOME for virtualenvwrapper - if [ -d "$HOME/.virtualenvs" ] ; then - WORKON_HOME="$HOME/.virtualenvs" - fi +``` {bash} +# WORKON_HOME for virtualenvwrapper +if [ -d "$HOME/.virtualenvs" ] ; then +WORKON_HOME="$HOME/.virtualenvs" +fi +``` [Aquí](https://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html) tenemos la referencia de comandos de *virtualenvwrapper*. @@ -1252,57 +1258,70 @@ virtualenv para probarlo Una instalación para pruebas. - mkvirtualenv -p /usr/bin/python3 jupyter - python -m pip install jupyter +``` {bash} +mkvirtualenv -p /usr/bin/python3 jupyter +python -m pip install jupyter +``` ### Instalamos `python3.9` `python3.9` está ya disponible en los repos oficiales. Para dejarla instalada: - sudo apt install python3.9 python3.9-dev python3.9-venv +``` {bash} +sudo apt install python3.9 python3.9-dev python3.9-venv +``` ### pyenv Instalamos los pre-requisitos: - sudo apt-get update - sudo apt-get install --no-install-recommends make build-essential \ - libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev \ - wget curl llvm libncurses5-dev xz-utils tk-dev \ - libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev +``` bash +sudo apt-get update +sudo apt-get install --no-install-recommends make build-essential \ +libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev \ +wget curl llvm libncurses5-dev xz-utils tk-dev \ +libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev +``` Podemos clonar el repo en nuestro `home`: - git clone https://github.com/pyenv/pyenv.git ~/.pyenv +``` bash +git clone https://github.com/pyenv/pyenv.git ~/.pyenv +``` Pero también podemos añadir el *bundle* para *Antigen* en el fichero `.zshrc` y dejar que se encargue de todo. - antigen bundle mattberther/zsh-pyenv +``` bash +antigen bundle mattberther/zsh-pyenv +``` Añadimos al fichero `~/.profile`: - # pyenv - if [ -d "$HOME/.pyenv" ] ; then - export PYENV_ROOT="$HOME/.pyenv" - export PATH="$PYENV_ROOT/bin:$PATH" - fi +``` bash +# pyenv +if [ -d "$HOME/.pyenv" ] ; then + export PYENV_ROOT="$HOME/.pyenv" + export PATH="$PYENV_ROOT/bin:$PATH" +fi +``` Y configuramos en `~/.bashrc` y en `~/.zshrc` (aunque en el último no es necesario tocar nada si usamos el *bundle* para *Antigen*): - if command -v pyenv 1>/dev/null 2>&1; then - eval "$(pyenv init -)" - fi +``` bash +if command -v pyenv 1>/dev/null 2>&1; then + eval "$(pyenv init -)" +fi +``` Podemos probar que todo funciona con: `pyenv install -l` Una vez instalado hay que estudiarse [la referencia de comandos](https://github.com/pyenv/pyenv/blob/master/COMMANDS.md) -neovim ------- +## neovim Vamos a probar *neovim*, ahora mismo la versión de los repos de Ubuntu está actualizada a la penúltima versión (0.4.3). También podemos @@ -1382,7 +1401,7 @@ comando ejecutando: `:PlugInstall` | Solo hay que instalar uno de los dos o *dein* o *plug-vim*. Yo uso | | *plug-vim* así que esto es sólo una referencia. | -https://github.com/Shougo/dein.vim + " Add the dein installation directory into runtimepath set runtimepath+=~/.config/nvim/dein/repos/github.com/Shougo/dein.vim @@ -1405,22 +1424,21 @@ comando ejecutando: `:PlugInstall` filetype plugin indent on syntax enable -Firefox developer edition -------------------------- +## Firefox developer edition El rollo de siempre, descargar desde [la página web](https://www.mozilla.org/en-US/firefox/developer/) descomprimir en `~/apps` y crear un lanzador. -Navegadores cli ---------------- +## Navegadores cli Herramientas útiles para depuración web - sudo apt install httpie links +``` {bash} +sudo apt install httpie links +``` -MariaDB -------- +## MariaDB Instalamos la última estable para Ubuntu Fossa desde los repos oficiales. @@ -1429,7 +1447,9 @@ Primero añadimos los repos. Añadimos la clave de firma: - sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc' +``` {bash} +sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc' +``` Ahora tenemos dos opciones: @@ -1475,8 +1495,7 @@ ordenador: sudo systemctl stop mariadb sudo systemctl disable mariadb -Squirrel SQL Client -------------------- +## Squirrel SQL Client Bajamos el zip de estándar desde [la página web de Squirrel](http://www.squirrelsql.org/) (yo prefiero no usar el @@ -1491,15 +1510,16 @@ página oficial. Nos interesa el fichero `maria-java-client-2.6.0.jar` Configuramos el driver para que sepa donde está el fichero `.jar` y ya estamos listos para trabajar. -R y R-studio ------------- +## R y R-studio Primero instalamos la última versión de R en nuestro pc: - sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 - sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/' - sudo apt update - sudo apt install r-base +``` {bash} +sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 +sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/' +sudo apt update +sudo apt install r-base +``` ### R-studio @@ -1508,18 +1528,15 @@ web](https://rstudio.com/products/rstudio/download-server/debian-ubuntu/) Instalamos con *gdebi* (basta con clicar sobre el fichero *.deb*) -Octave ------- +## Octave Instalado desde flatpak sudo flatpak install flathub org.octave.Octave -Desarrollo hardware -=================== +# Desarrollo hardware -Arduino IDE ------------ +## Arduino IDE Bajamos los paquetes de la página [web](https://www.arduino.cc), descomprimimimos en *\~/apps/arduino*. @@ -1626,9 +1643,9 @@ Bastaría con instalar *Arduino SAMD Boards* Tenemos varias URL posibles para configurar en las preferencias del IDE Arduino: -- http://dan.drown.org/stm32duino/package_STM32duino_index.json +- (recomendada por Tutoelectro) -- https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json +- (parece la oficial) He optado por añadir los dos ficheros json al IDE, la oficial tiene @@ -1650,8 +1667,8 @@ la [Figura 1](#figura_1) Añadimos las URL: -- https://dl.espressif.com/dl/package_esp32_index.json -- http://arduino.esp8266.com/stable/package_esp8266com_index.json +- +- Añadimos la librería: @@ -1680,8 +1697,7 @@ ver los ejemplos de *Makeblock*. Un detalle importante para programar el Auriga-Me es necesario seleccionar el micro Arduino Mega 2560 en el IDE Arduino. -Pinguino IDE ------------- +## Pinguino IDE ------------------------------------------------------------------------ @@ -1703,8 +1719,7 @@ instalación y no lo crea automáticamente. El programa queda correctamente instalado en */opt* y arranca correctamente, habrá que probarlo con los micros. -stm32 cubeide -------------- +## stm32 cubeide Nos bajamos el instalador genérico. Tendremos que: @@ -1719,8 +1734,7 @@ Nos bajamos el instalador genérico. Tendremos que: - udev/rules.d/49-stlinkv3.rules - udev/rules.d/99-jlink.rules -esp-idf -------- +## esp-idf Instalamos las dependencias (cmake ya lo tenemos instalado) @@ -1732,21 +1746,27 @@ instalarán automáticamente en el siguiente paso. ------------------------------------------------------------------------ - sudo apt-get install gperf cmake ninja-build ccache libffi-dev libssl-dev +``` {bash} +sudo apt-get install gperf cmake ninja-build ccache libffi-dev libssl-dev +``` Ahora creamos un directorio para nuestro *tool-chain*: - mkdir ~/esp - cd ~/esp - git clone --recursive https://github.com/espressif/esp-idf +``` {bash} +mkdir ~/esp +cd ~/esp +git clone --recursive https://github.com/espressif/esp-idf +``` También es necesario que nuestro usuario pertenezca al grupo `dialout`, pero eso ya deberíamos tenerlo hecho de antes. Una vez clonado el repo ejecutamos el script de instalación - cd ~/esp/esp-idf - ./install.sh +``` {bash} +cd ~/esp/esp-idf +./install.sh +``` Este script nos va a dejar instaladas todas las herramientas necesarias en el directorio `~/.expressif` @@ -1757,16 +1777,19 @@ Basta con editar la primera linea *shebang* del script. Estas son las bibliotecas que deja instaladas: - Installing ESP-IDF tools - Installing tools: xtensa-esp32-elf, xtensa-esp32s2-elf, esp32ulp-elf, esp32s2ulp-elf, openocd-esp32 +``` {bash} +Installing ESP-IDF tools +Installing tools: xtensa-esp32-elf, xtensa-esp32s2-elf, esp32ulp-elf, esp32s2ulp-elf, openocd-esp32 +``` Para empezar a trabajar bastará con hacer un *source* del fichero `~/apps/esp/esp-idf/export.sh`: - . ~/apps/esp/esp-idf/export.sh +``` {bash} +. ~/apps/esp/esp-idf/export.sh +``` -KiCAD ------ +## KiCAD En la [página web del proyecto](http://kicad-pcb.org/download/linux-mint/) nos recomiendan el @@ -1794,8 +1817,7 @@ Algunas librerías alternativas: Esta biblioteca de componentes está incluida en el github de KiCAD, así que teoricamente no habría que instalarla en nuestro disco duro. -Analizador lógico ------------------ +## Analizador lógico Mi analizador es un OpenBench de Seedstudio, [aquí hay mas info](http://dangerousprototypes.com/docs/Open_Bench_Logic_Sniffer) @@ -1804,7 +1826,9 @@ info](http://dangerousprototypes.com/docs/Open_Bench_Logic_Sniffer) Instalamos **Sigrok**, simplemente desde los repos de Debian: - sudo aptitude install sigrok +``` {bash} +sudo aptitude install sigrok +``` Al instalar **Sigrok** instalamos también **Pulseview**. @@ -1828,7 +1852,9 @@ página](https://www.sump.org/projects/analyzer/) y descomprimimos en Instalamos las dependencias: - sudo apt install librxtx-java +``` {bash} +sudo apt install librxtx-java +``` Editamos el fichero *\~/apps/Logic Analyzer/client/run.sh* y lo dejamos así: @@ -1850,8 +1876,7 @@ Y ya funciona. [Página oficial](https://www.lxtreme.nl/ols/) -IceStudio ---------- +## IceStudio Instalamos dependencias con `sudo apt install xclip` @@ -1859,8 +1884,7 @@ Bajamos el *AppImage* desde el [github de IceStudio](https://github.com/FPGAwars/icestudio) y lo dejamos en `~/apps/icestudio` -PlatformIO ----------- +## PlatformIO ### VS Code @@ -1904,9 +1928,11 @@ manualmente el entorno virtual con ### vscodium - wget -qO - https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg | gpg --dearmor | sudo dd of=/etc/apt/trusted.gpg.d/vscodium.gpg - echo 'deb https://paulcarroty.gitlab.io/vscodium-deb-rpm-repo/debs/ vscodium main' | sudo tee --append /etc/apt/sources.list.d/vscodium.list - sudo apt update && sudo apt install codium +``` {bash} +wget -qO - https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg | gpg --dearmor | sudo dd of=/etc/apt/trusted.gpg.d/vscodium.gpg +echo 'deb https://paulcarroty.gitlab.io/vscodium-deb-rpm-repo/debs/ vscodium main' | sudo tee --append /etc/apt/sources.list.d/vscodium.list +sudo apt update && sudo apt install codium +``` ### Editor Atom @@ -1922,8 +1948,7 @@ Platformio CLI, ahora en cambio recomiendan VS Code. sudo apt update sudo apt install atom -RepRap ------- +## RepRap ### OpenScad @@ -1973,32 +1998,34 @@ Clonamos el repo: Y ya lo tenemos todo listo para ejecutar. -Cortadora de vinilos --------------------- +## Cortadora de vinilos ### Inkcut Instalado en un entorno virtual: - mkvirtualenv -p `which python3` inkcut +``` {bash} +mkvirtualenv -p `which python3` inkcut - sudo apt install libxml2-dev libxslt-dev libcups2-dev +sudo apt install libxml2-dev libxslt-dev libcups2-dev - pip install PyQt5 +pip install PyQt5 - pip install inkcut +pip install inkcut +``` ### Plugin para inkscape Instalamos dependencias: - pip install python-usb +``` {bash} +pip install python-usb +``` Instalamos el fichero `.deb` desde la web -https://github.com/fablabnbg/inkscape-silhouette/releases + -Drone ------ +## Drone ### qgroundcontrol @@ -2010,7 +2037,9 @@ appimage](https://s3-us-west-2.amazonaws.com/qgroundcontrol/latest/QGroundContro Para usar *Mission Planner* en Linux Mint se recomienda instalar los paquetes: - sudo apt install mono-complete festival +``` {bash} +sudo apt install mono-complete festival +``` Descargamos el MissionPlanner desde [aquí](https://firmware.ardupilot.org/Tools/MissionPlanner/MissionPlanner-latest.zip) @@ -2020,8 +2049,7 @@ instalación](https://www.rcgroups.com/forums/showthread.php?2179591-Installing- Una vez descomprimido el `zip` ejecutamos: `mono MissionPlanner.exe` -node-red --------- +## node-red Para instalar node-red en linux necesitamos instalar primero `node.js`. Hay varias formas de instalar `node.js`, yo voy a optar por instalar @@ -2030,14 +2058,18 @@ Hay varias formas de instalar `node.js`, yo voy a optar por instalar Para ello ejecutamos el siguiente comando (la versión actual de `nvm` es la 0.37.0) - curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.0/install.sh | bash +``` bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.0/install.sh | bash +``` El script de instalación añade las siguientes lineas al fichero `~/.bashrc`, nosotros las movemos al fichero `~/.profile` - export NVM_DIR="$HOME/.nvm" - [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm - [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion +``` bash +export NVM_DIR="$HOME/.nvm" +[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm +[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion +``` Para comprobar la instalación usamos `command -v nvm` que nos devolverá `nvm`. `which` no funciona en este caso por que es un script para @@ -2048,30 +2080,38 @@ aplicarle `source` Ahora que tenemos `nvm` instalado, ya podemos instalar fácilmente la versión o versiones que queramos de `node.js` - nvm ls-remote # para listar las versiones disponibles - nvm install node # instala la última versión disponible +``` bash +nvm ls-remote # para listar las versiones disponibles +nvm install node # instala la última versión disponible +``` ### Instalación de `mosquitto` `mosquitto` es un *mqtt broker* muy sencillo y completo, aunque no es capaz de aguantar cargas grandes, para aprender es perfecto. - sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa - sudo apt-get update - sudo apt install mosquitto mosquitto-clients +``` bash +sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa +sudo apt-get update +sudo apt install mosquitto mosquitto-clients +``` Con esto queda el servicio instalado y funcionando (`scs mosquitto` o `systemctl status mosquitto`) Si queremos el servicio parado para arrancarlo nosotros manualmente: - scsp mosquitto.service - scd mosquitto.service +``` bash +scsp mosquitto.service +scd mosquitto.service +``` Y sin alias sería: - sudo systemctl stop mosquitto.service - sudo systemctl disable mosquitto.service +``` bash +sudo systemctl stop mosquitto.service +sudo systemctl disable mosquitto.service +``` Para arrancarlo cuando lo necesitemos le damos un *start* con `scst mosquitto.service` o `sudo systemctl start mosquitto.service` @@ -2080,35 +2120,36 @@ Para arrancarlo cuando lo necesitemos le damos un *start* con Seguimos el método para ubuntu: - wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add - - #source /etc/lsb-release - DISTRIB_ID=ubuntu - DISTRIB_CODENAME=focal - echo "deb https://repos.influxdata.com/${DISTRIB_ID} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list +``` bash +wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add - +#source /etc/lsb-release +DISTRIB_ID=ubuntu +DISTRIB_CODENAME=focal +echo "deb https://repos.influxdata.com/${DISTRIB_ID} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list - apt update - apt install influxdb - apt install telegraf +apt update +apt install influxdb +apt install telegraf +``` ### Instalación de `node-red` Una vez instalado el `node.js` instalar el `node-red` es muy fácil - nvm use node - npm install -g --unsafe-perm node-red +``` bash +nvm use node +npm install -g --unsafe-perm node-red +``` -Aplicaciones de gráficos -======================== +# Aplicaciones de gráficos -LibreCAD --------- +## LibreCAD Diseño en 2D sudo apt install librecad -FreeCAD -------- +## FreeCAD No hay ppa disponible para Ubuntu 20. @@ -2128,8 +2169,7 @@ and needs to be installed separately. ------------------------------------------------------------------------ -Inkscape --------- +## Inkscape El programa libre para creación y edición de gráficos vectoriales. @@ -2137,16 +2177,17 @@ El programa libre para creación y edición de gráficos vectoriales. sudo apt update sudo apt install inkscape -Gimp ----- +## Gimp El programa para edición y retocado de imágenes. Parece que ahora mismo los repos están más actualizados que el ppa. Así que bastaría con: - sudo apt install gimp gimp-data gimp-texturize \ - gimp-data-extras gimp-gap gmic gimp-gmic +``` {bash} +sudo apt install gimp gimp-data gimp-texturize \ +gimp-data-extras gimp-gap gmic gimp-gmic +``` De todas formas dejo aquí las instrucciones para instalar desde el ppa por si hacen falta algún dia: @@ -2164,16 +2205,23 @@ Para instalar los principales plugins basta con: sudo apt install gimp-plugin-registry -| | -|:-------------------------------------------------------------------------------------------------------------------------------------------| -| Esta sección ya no está vigente | -| \#\#\#\# resynthesizer | -| Descargamos el plugin desde [aquí](https://github.com/bootchk/resynthesizer) y descomprimimos el fichero en `~/.config/GIMP/2.10/plug-ins` | -| Tenemos que asegurarnos que los fichero *python* son ejecutables: | -| \~\~\~\~ chmod 755 \~/.config/GIMP/2.10/plug-ins/\*.py \~\~\~\~ | +------------------------------------------------------------------------ + +Esta sección ya no está vigente + +#### resynthesizer -Krita ------ +Descargamos el plugin desde +[aquí](https://github.com/bootchk/resynthesizer) y descomprimimos el +fichero en `~/.config/GIMP/2.10/plug-ins` + +Tenemos que asegurarnos que los fichero *python* son ejecutables: + + chmod 755 ~/.config/GIMP/2.10/plug-ins/*.py + +------------------------------------------------------------------------ + +## Krita La versión disponible en orígenes de software está bastante por detrás de la disponible en la web. Basta con descargar el *Appimage* desde la @@ -2183,24 +2231,21 @@ Lo copiamos a `~/apps/krita` y creamos un lanzador con el editor de menús. Alternativamente también lo tenemos disponible por ppa en -https://launchpad.net/~kritalime/+archive/ubuntu/ppa + -MyPaint -------- +## MyPaint Desde el [github](https://github.com/mypaint/) tenemos disponible la última versión en formato *appimage*. La descargamos la dejamos en `~/apps` y creamos un acceso con *Menulibre*, como siempre. -Alchemy -------- +## Alchemy Igual que el *MyPaint* descargamos desde [la página web](http://al.chemy.org), descomprimimos en `~/apps` y creamos un accso con *Menulibre*. -Capturas de pantalla --------------------- +## Capturas de pantalla El [*flameshot*](https://flameshot.js.org/#/) cubre el 99% de mis necesidades: `sudo apt install flameshot` @@ -2211,12 +2256,13 @@ hacer una captura con retardo lo instalé con un *appimage*. Shutter vuelve a estar disponible, al instalar desde este ppa ya queda con las opciones de edición habilitadas: - sudo add-apt-repository ppa:linuxuprising/shutter - sudo apt update - sudo apt install shutter +``` {bash} +sudo add-apt-repository ppa:linuxuprising/shutter +sudo apt update +sudo apt install shutter +``` -Reoptimizar imágenes --------------------- +## Reoptimizar imágenes ### ImageMagick @@ -2229,15 +2275,13 @@ Instalamos desde los repos, simplemente: Nos bajamos un *AppImage* desde el [github](https://github.com/meowtec/Imagine/releases) de la aplicación -dia ---- +## dia Un programa para crear diagramas sudo apt install dia dia-shapes gsfonts-x11 -Blender -------- +## Blender Bajamos el Blender linkado estáticamente de [la página web](https://www.blender.org) y lo descomprimimos en `~/apps/blender`. @@ -2245,26 +2289,22 @@ web](https://www.blender.org) y lo descomprimimos en `~/apps/blender`. El paquete incluye un fichero `blender.desktop` que podemos editar y copiar en `~/.local/share/applications`. -Structure Synth ---------------- +## Structure Synth Instalado desde repos, junto con sunflow para explorar un poco. sudo apt install structure-synth sunflow -Heron animation ---------------- +## Heron animation El proyecto parece abandonado. El software ya no funciona en el último linux. -Stopmotion ----------- +## Stopmotion Primero probamos el del repo: `sudo apt install stopmotion` -Instalación del driver digiment para tabletas gráficas Huion ------------------------------------------------------------- +## Instalación del driver digiment para tabletas gráficas Huion He intentado un par de veces instalar con el fichero `deb` pero parece que no funciona. @@ -2281,10 +2321,12 @@ en el momento de escribir esto descargamos la versión V9. Descomprimimos en `/usr/src/digimend-9` - cd /usr/src - sudo xvzf . - sudo dkms build digimend-kernel-drivers/9 - sudo dkms install digimend/9 +``` {bash} +cd /usr/src +sudo xvzf . +sudo dkms build digimend-kernel-drivers/9 +sudo dkms install digimend/9 +``` Para comprobar: @@ -2295,16 +2337,13 @@ Referencia: - [Aquí](https://davidrevoy.com/article331/setup-huion-giano-wh1409-tablet-on-linux-mint-18-1-ubuntu-16-04) -Sonido -====== +# Sonido -Spotify -------- +## Spotify Spotify instalado desde las opciones de Linux Mint via flatpak. -Audacity --------- +## Audacity El ppa de Audacity no permite instalar la última versión. Podemos instalarla via flatpak o simplemente instalar la de los repos (no es la @@ -2322,18 +2361,15 @@ Añadimos ppa: Instalamos también el plugin [Chris’s Dynamic Compressor plugin](https://theaudacitytopodcast.com/chriss-dynamic-compressor-plugin-for-audacity/) -Clementine ----------- +## Clementine La version disponible en los orígenes de software parece al dia: sudo apt install clementine -Video -===== +# Video -Shotcut -------- +## Shotcut Nos bajamos la *AppImage* para Linux desde la [página web](https://www.shotcut.org/). @@ -2344,20 +2380,17 @@ La dejamos en `~/apps/shotcut` y: chmod 744 Shotcutxxxxxx.AppImage ./Shotcutxxxxxx.AppImage -kdenlive --------- +## kdenlive Está disponible [en la web](https://kdenlive.org) como ppa o como *appimage*. Lo he bajado como *appimage* para probarlo. -Openshot --------- +## Openshot También descargado desde [su web](https://www.openshot.org) como *appimage*, para probar. Tienen un ppa disponible. -Grabación de screencast ------------------------ +## Grabación de screencast ### Vokoscreen, Kazam y SimpleScreenRecorder @@ -2372,12 +2405,13 @@ Escoge el que más te guste. Añadimos el repositorio - sudo add-apt-repository ppa:obsproject/obs-studio - sudo apt update - sudo apt install obs-studio +``` {bash} +sudo add-apt-repository ppa:obsproject/obs-studio +sudo apt update +sudo apt install obs-studio +``` -Grabación de podcast --------------------- +## Grabación de podcast ### Mumble @@ -2392,11 +2426,9 @@ instrucciones por si lo corrigen. sudo apt update sudo apt install mumble -Fotografía -========== +# Fotografía -Rawtherapee ------------ +## Rawtherapee Bajamos el AppImage desde la [página web](http://rawtherapee.com/) al directorio `~/apps/rawtherapee`. @@ -2408,8 +2440,7 @@ directorio `~/apps/rawtherapee`. Al ejecutarla la primera vez ya se encarga la propia aplicación de integrarse en nuestro sistema. -Darktable ---------- +## Darktable Instalamos ppa (ver [esta web](https://software.opensuse.org/download/package?package=darktable&project=graphics%3Adarktable)) @@ -2425,17 +2456,14 @@ Se instala la última versión de Darktable (3.0.2) linux no le gustan los ficheros con un ‘:’ Revisa `/etc/apt/trusted.gpg.d/` -Digikam -------- +## Digikam Instalado desde la [página web](https://www.digikam.org/) de la aplicación con appimage. -Seguridad -========= +# Seguridad -Autenticación en servidores por clave pública ---------------------------------------------- +## Autenticación en servidores por clave pública Generar contraseñas para conexión servidores remotos: @@ -2451,8 +2479,7 @@ del servidor remoto. [¿Cómo funciona esto?](https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process) -Claves gpg ----------- +## Claves gpg `gpg --gen-key` Para generar nuestra clave. @@ -2460,15 +2487,13 @@ Claves gpg cambiar más tarde. - **Siempre** hay que escoger la máxima longitud posible -Seahorse --------- +## Seahorse Para manejar todas nuestras claves con comodidad: `sudo apt install seahorse` -Conexión a github con claves ssh --------------------------------- +## Conexión a github con claves ssh Usando este método podemos conectarnos a github sin tener que teclear la contraseña en cada conexión. @@ -2516,14 +2541,15 @@ Ahora en los repos donde queramos usar ssh debemos cambiar el remote: git remote set-url origin git@github.com:$USER/$REPONAME.git -Signal ------- +## Signal El procedimiento recomendado en la página oficial: - curl -s https://updates.signal.org/desktop/apt/keys.asc | sudo apt-key add - - echo "deb [arch=amd64] https://updates.signal.org/desktop/apt xenial main" | sudo tee -a /etc/apt/sources.list.d/signal-xenial.list - sudo apt update && sudo apt install signal-desktop +``` bash +curl -s https://updates.signal.org/desktop/apt/keys.asc | sudo apt-key add - +echo "deb [arch=amd64] https://updates.signal.org/desktop/apt xenial main" | sudo tee -a /etc/apt/sources.list.d/signal-xenial.list +sudo apt update && sudo apt install signal-desktop +``` ------------------------------------------------------------------------ @@ -2531,23 +2557,23 @@ El procedimiento recomendado en la página oficial: ------------------------------------------------------------------------ -Element (cliente de matrix.org) -------------------------------- +## Element (cliente de matrix.org) Instalamos con: - sudo apt install -y wget apt-transport-https +``` bash +sudo apt install -y wget apt-transport-https - sudo wget -O /usr/share/keyrings/riot-im-archive-keyring.gpg https://packages.riot.im/debian/riot-im-archive-keyring.gpg +sudo wget -O /usr/share/keyrings/riot-im-archive-keyring.gpg https://packages.riot.im/debian/riot-im-archive-keyring.gpg - echo "deb [signed-by=/usr/share/keyrings/riot-im-archive-keyring.gpg] https://packages.riot.im/debian/ default main" | sudo tee /etc/apt/sources.list.d/riot-im.list +echo "deb [signed-by=/usr/share/keyrings/riot-im-archive-keyring.gpg] https://packages.riot.im/debian/ default main" | sudo tee /etc/apt/sources.list.d/riot-im.list - sudo apt update +sudo apt update - sudo apt install element-desktop +sudo apt install element-desktop +``` -Lector DNI electrónico ----------------------- +## Lector DNI electrónico Descargamos la aplicación en formato `.deb` desde [la página de descargas del portal @@ -2556,7 +2582,9 @@ DNIe](https://www.dnielectronico.es/PortalDNIe/PRF1_Cons02.action?pag=REF_1112). Automáticamente nos instalará las dependecias: `libccid`, `pcsd` y `pinentry-gtk2`. A mayores instalamos: - sudo apt-get install pcsc-tools opensc +``` bash +sudo apt-get install pcsc-tools opensc +``` El opensc no es necesario para el DNIe, pero nos permite usar otras tarjetas. @@ -2623,11 +2651,9 @@ investigar con ayuda del `pcsc_scan` y herramientas similares. ------------------------------------------------------------------------ -Virtualizaciones y contenedores -=============================== +# Virtualizaciones y contenedores -Instalación de *virtualBox* ---------------------------- +## Instalación de *virtualBox* Lo hacemos con los origenes de software oficiales (alternativamente, podríamos hacerlo manualmente): @@ -2648,7 +2674,9 @@ varios paquetes con número de versión (p.ej. \_virtualbox.6.1), estos Instalamos el que nos interesa: - sudo apt install virtualbox-6.1 +``` {bash} +sudo apt install virtualbox-6.1 +``` **ATENCIÓN** @@ -2666,8 +2694,7 @@ Sólo nos queda añadir nuestro usuario al grupo `vboxusers`, con el comando `sudo gpasswd -a username vboxusers`, y tendremos que cerrar la sesión para refrescar nuestros grupos. -qemu ----- +## qemu Un par de comprobaciones previas: @@ -2719,8 +2746,7 @@ Podemos comprobar el estado del servicio con `scs libvirtd` - [How to Install KVM on Ubuntu 20.04](https://www.tecmint.com/install-kvm-on-ubuntu/) -Docker ------- +## Docker Tenemos que añadir el repositorio correspondiente a nuestra distribución: @@ -2757,9 +2783,11 @@ cada reinicio del ordenador) La forma de pararlo es: - sudo systemctl stop docker - sudo systemctl disable docker - systemctl status docker +``` {bash} +sudo systemctl stop docker +sudo systemctl disable docker +systemctl status docker +``` Añadimos el *bundle* **docker** en nuestro fichero `~/.zshrc` para tener autocompletado en comandos de docker. @@ -2767,9 +2795,11 @@ autocompletado en comandos de docker. Para usar *docker* tendremos que arrancarlo, con los alias de nuestro sistema para *systemd* ejecutamos: - scst docker # para arrancar el servicio +``` {bash} +scst docker # para arrancar el servicio - scsp docker # para parar el servicio +scsp docker # para parar el servicio +``` ### docker-compose @@ -2788,11 +2818,9 @@ releases](https://github.com/docker/kitematic/releases) bajamos la La verdad es que me gusta más el CLI. -Utilidades para mapas y cartografía -=================================== +# Utilidades para mapas y cartografía -josm ----- +## josm Descargamos y añadimos la clave gpg: @@ -2814,8 +2842,7 @@ siguiente comando, pero tendréis actualizaciones diarias: Ya estamos listos para editar Open Street Map offline. -MOBAC ------ +## MOBAC Bajamos el paquete desde [la página web](http://mobac.sourceforge.net/) y descomprimimos en `~/apps/mobac` como de costumbre nos creamos una @@ -2829,8 +2856,7 @@ wiki](http://mobac.sourceforge.net/wiki/index.php/Custom_XML_Map_Sources) \*\[Cartografía digital\] (https://digimapas.blogspot.com.es/2015/01/oruxmaps-vii-mapas-de-mobac.html) -QGIS ----- +## QGIS Añadimos la clave gpg: @@ -2855,16 +2881,13 @@ E instalamos como siempre - [QGIS Tutorials](http://www.qgistutorials.com/es/docs/downloading_osm_data.html) -Recetas variadas -================ +# Recetas variadas -Añadir las claves GPG de un repo --------------------------------- +## Añadir las claves GPG de un repo sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F7E06F06199EF2F2 -Solucionar problemas de menús duplicados usando menulibre ---------------------------------------------------------- +## Solucionar problemas de menús duplicados usando menulibre | | |:--------------------------------| @@ -2873,8 +2896,7 @@ Solucionar problemas de menús duplicados usando menulibre En el directorio `~/.config/menus/applications-merged` borramos todos los ficheros que haya. -Formatear memoria usb ---------------------- +## Formatear memoria usb “The driver descriptor says the physical block size is 2048 bytes, but Linux says it is 512 bytes.” @@ -2908,8 +2930,7 @@ 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 -------------------------------------------------- +## 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'` @@ -2917,13 +2938,11 @@ O también: `ssh-copy-id -i ~/.ssh/id_rsa.pub username@remote.server` -ssh access from termux ----------------------- +## ssh access from termux -https://linuxconfig.org/ssh-into-linux-your-computer-from-android-with-termux + -SDR instalaciones varias ------------------------- +## SDR instalaciones varias Vamos a trastear con un dispositivo [RTL-SDR.com](https://www.rtl-sdr.com/). @@ -2946,8 +2965,7 @@ Seguimos los pasos de instalación: sudo apt-get install libusb-1.0-0-dev -Posible problema con modemmanager y micros programables -------------------------------------------------------- +## 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 @@ -2979,8 +2997,7 @@ https://starter-kit.nettigo.eu/2015/serial-port-busy-for-avrdude-on-ubuntu-with- https://www.codeproject.com/Tips/349002/Select-a-USB-Serial-Device-via-its-VID-PID -Programar los nanos con chip ch340 o ch341 ------------------------------------------- +## 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” @@ -2994,15 +3011,16 @@ que escoger: Y ya funciona todo. -Linux Mint 20 es *python agnostic* ----------------------------------- +## 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: - apt install python-is-python2 - apt install python-is-python3 +``` {bash} +apt install python-is-python2 +apt install python-is-python3 +``` “test” diff --git a/out/LinuxMintUlyana.dw b/out/LinuxMintUlyana.dw index faeee19..751051f 100644 --- a/out/LinuxMintUlyana.dw +++ b/out/LinuxMintUlyana.dw @@ -53,40 +53,44 @@ Yo nunca almaceno esta información en la nube, pero me permite tener controlado ¡Ojo!, nos hacemos ''%%root%%'' para ejecutar: - + sudo su - git config --global user.email xxxxx@whatever.com git config --global user.name "Name Surname" apt install etckeeper + //etckeeper// hara un control automático de tus ficheros de configuración en ''%%/etc%%'' Para echar una mirada a los //commits// creados puedes ejecutar: - + cd /etc sudo git log + ==== Controlar dotfiles con git ==== Vamos a crear un repo de git para controlar nuestros ficheros personales de configuración. Creamos el repo donde queramos - + mkdir usrcfg cd usrcfg git init git config core.worktree "/home/salvari" + Y ya lo tenemos, un repo que tiene el directorio de trabajo apuntando a nuestro //$HOME//. Podemos añadir los ficheros de configuración que queramos al repo: - + git add .bashrc git commit -m "Add some dotfiles" + Una vez que tenga añadidos los ficheros que quiero tener controlados pondré ''%%*%%'' en el fichero ''%%.git/info/exclude%%'' de mi repo para que ignore todos los ficheros de mi ''%%$HOME%%''. Cuando instalo algún programa nuevo añado a mano los ficheros de configuración al repo. @@ -101,7 +105,7 @@ El area de intercambio la hemos creado en el disco duro hdd, no se usará mucho Añadimos el parámetro ''%%noatime%%'' para las particiones de ''%%root%%'' y ''%%/home%%'', que si que se han creado en el ssd. - + # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a @@ -120,13 +124,15 @@ UUID=ce11ccb0-a67d-4e8b-9456-f49a52974160 none swap sw # swap was on /dev/sdc5 during installation UUID=11090d84-ce98-40e2-b7be-dce3f841d7b4 none swap sw 0 0 + Una vez modificado el ''%%/etc/fstab%%'' no hace falta arrancar, basta con ejecutar lo siguiente: - + mount -o remount / mount -o remount /home mount + ==== Ajustar Firefox ==== Las diferencias de rendimiento del Firefox con estos ajustes son bastante notables. @@ -148,10 +154,11 @@ TODO: Comprobar //trim// en mi disco duro. Y mirar [[https://easylinuxtipsprojec Instalamos algunas fuentes desde los orígenes de software: - + sudo apt install ttf-mscorefonts-installer sudo apt install fonts-noto + Y la fuente [[https://robey.lag.net/2010/06/21/mensch-font.html|Mensch]] la bajamos directamente al directorio ''%%~/.local/share/fonts%%'' Puede ser conveniente instalar el paquete //font-manager// (''%%sudo apt install font-manager%%''), sólo lo uso para visualizar fuentes, no para hacer configuración. @@ -166,7 +173,7 @@ Otras fuentes muy interesantes ''%%ufw%%'' y ''%%gufw%%'' vienen instalados por defecto, pero no activados. - + aptitude install ufw ufw default deny ufw enable @@ -174,6 +181,7 @@ ufw status verbose aptitude install gufw + ---- > **Nota**: Ojo con el log de ''%%ufw%%'', tampoco le sienta muy bien al ssd esa escritura masiva. Yo normalmente lo dejo desactivado excepto cuando valido una nueva configuración. @@ -201,9 +209,10 @@ sudo apt install keepass2 gnucash deluge rsync grsync rar unrar \ zip unzip unace bzip2 lzop p7zip p7zip-full p7zip-rar \ most mc tree neofetch fasd + * **Chromium** Como Chrome pero libre, ahora en Ubuntu solo está disponible como snap así que tendremos que dar un rodeo. - + sudo add-apt-repository ppa:xalt7x/chromium-deb-vaapi cat < + ===== Algunos programas de control del sistema ===== Son útiles para control de consumo. @@ -221,29 +231,33 @@ Son útiles para control de consumo. sudo apt install tlp tlp-rdw htop powertop + ===== Programas de terminal ===== Dos imprescindibles: - + sudo apt install guake terminator + //terminator// lo dejamos como aplicación terminal preferida del sistema. **TODO:** asociar //Guake// a una combinación apropiada de teclas. También instalo //rxvt// para tener una alternativa ligera al //terminator//. - + sudo apt install rxvt-unicode + ==== tmux ==== //tmux// combinado por ejemplo con //rxvt// nos da la misma funcionalidad que //Terminator//, además merece la pena aprender a usarlo por que instalado en servidores remotos es increíblemente útil. - + sudo apt install tmux + [[https://leanpub.com/the-tao-of-tmux/read|El tao de tmux]] [[https://www.askapache.com/linux/rxvt-xresources/|rxvt customizations]] ===== Dropbox ===== @@ -272,6 +286,7 @@ freeplane ├── freeplane-1.7.10 └── freeplane-1.7.11 +

Vemos que el enlace apunta a la versión más reciente de //freeplane//.

  • Añadimos la aplicación a los menús, al hacer esto se creará un fichero ''%%.desktop%%'' en el directorio ''%%~/.local/share/applications%%''

  • @@ -295,13 +310,14 @@ Descargamos desde la [[https://www.torproject.org/|página oficial del proyecto] cd ~/apps/tor-browser ./start-tor-browser.desktop --register-app
    + Tor se encarga tanto de crear el fichero ''%%.desktop%%'' como de mantenerse actualizado a la última versión. ==== Brave browser ==== Instalamos siguiendo las instrucciones de la [[https://brave-browser.readthedocs.io/en/latest/installing-brave.html#linux|página web oficial]] - + curl -s https://brave-browser-apt-release.s3.brave.com/brave-core.asc | sudo apt-key --keyring /etc/apt/trusted.gpg.d/brave-browser-release.gpg add - echo "deb [arch=amd64] https://brave-browser-apt-release.s3.brave.com/ stable main" | sudo tee /etc/apt/sources.list.d/brave-browser-release.list @@ -310,6 +326,7 @@ sudo apt update sudo apt install brave-browser + ==== TiddlyDesktop ==== Descargamos desde la [[https://github.com/Jermolene/TiddlyDesktop|página web]], descomprimimos y generamos la entrada en el menú. @@ -320,9 +337,10 @@ Una herramienta libre para mantener notas sincronizadas entre el móvil y el por Instalamos siguiendo las instrucciones de la [[https://joplinapp.org/|página web]] - + wget -O - https://raw.githubusercontent.com/laurent22/joplin/master/Joplin_install_and_update.sh | bash + Joplin se instala en el directorio ''%%~/.joplin%%'' y crea su propia entrada en el menú. ===== Terminal y shells ===== @@ -342,23 +360,27 @@ apt install python-all-dev apt install python3-all-dev apt install virtualenv virtualenvwrapper python3-virtualenv + //zsh// viene por defecto en mi instalación, en caso contrario: apt install zsh + Para //zsh// vamos a usar [[https://github.com/zsh-users/antigen|antigen]], así que nos lo clonamos en ''%%~/apps/%%'' cd ~/apps git clone https://github.com/zsh-users/antigen + También vamos a usar [[https://github.com/olivierverdier/zsh-git-prompt|zsh-git-prompt]], así que lo clonamos también: cd ~/apps git clone https://github.com/olivierverdier/zsh-git-prompt) + Y editamos el fichero ''%%~/.zshrc%%'' para que contenga: @@ -413,6 +435,7 @@ antigen apply unalias rm alias rmi='rm -i' + Para usar //virtualenvwrapper// hay que decidir en que directorio queremos salvar los entornos virtuales. El obvio seria ''%%~/.virtualenvs%%'' la alternativa sería ''%%~/.local/share/virtualenvs%%''. El que escojamos lo tenemos que crear y añadirlo a nuestro ''%%~/.profile%%'' con las líneas: @@ -423,6 +446,7 @@ if [ -d "$HOME/.virtualenvs" ] ; then WORKON_HOME="$HOME/.virtualenvs" fi + Después de seguir estos pasos basta con arrancar el //zsh// //Antigen// ya se encarga de descargar todos los plugins que queramos utilizar en zsh. Todos el software se descarga en ''%%~/.antigen%%'' @@ -439,6 +463,7 @@ else echo "$STATUS" fi
    + También he cambiado el fichero del tema //gnzh// en ''%%~/.antigen/bundles/robbyrussell/oh-my-zsh/themes/gnzh.zsh-theme%%'' por que me interesa ver la versión python asociada a cada virtualenv. ===== Utilidades ===== @@ -452,16 +477,18 @@ Instalamos //gpick// con ''%%sudo apt install gpick%%'' sudo apt-get install mint-meta-codecs + ===== Syncthing ===== Añadimos el ppa: - + curl -s https://syncthing.net/release-key.txt | sudo apt-key add - echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list sudo apt-get update sudo apt-get install syncthing + ====== Utilidades ======
    @@ -498,6 +525,7 @@ Instalamos desde la página web(https:%%//%%rclone.org/), descargando el fichero curl https://rclone.org/install.sh | sudo bash + ==== Recetas rclone ==== Copiar directorio local en la nube: @@ -505,16 +533,19 @@ Copiar directorio local en la nube: rclone copy /localdir hubic:backup -vv + Si queremos ver el directorio en la web de Hubic tenemos que copiarlo en //default//: rclone copy /localdir hubic:default/backup -vv + Sincronizar una carpeta remota en local: rclone sync hubic:directorio_remoto /home/salvari/directorio_local -vv + ==== Referencias ==== * [[https://elblogdelazaro.gitlab.io//articles/rclone-sincroniza-ficheros-en-la-nube/|Como usar rclone (blogdelazaro)]] @@ -535,10 +566,11 @@ Este programa no para de escribir en el disco continuamente. He dejado de usarlo Si de todas formas lo quieres instalar, aquí tienes los comandos: - + sudo add-apt-repository ppa:go-for-it-team/go-for-it-daily && sudo apt-get update sudo apt-get install go-for-it + ====== Documentación ====== ===== Vanilla LaTeX ===== @@ -555,17 +587,20 @@ wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz tar xzf install-tl-unx.tar.gz cd install-tl-xxxxxx + La parte xxxxxx varía en función del estado de la última versión de LaTeX disponible. sudo ./install-tl + Una vez lanzada la instalación podemos desmarcar las opciones que instalan la documentación y las fuentes. Eso nos obligará a consultar la documentación on line pero ahorrará practicamente el 50% del espacio necesario. En mi caso sin doc ni src ocupa 2,3Gb mkdir -p /opt/texbin sudo ln -s /usr/local/texlive/2020/bin/x86_64-linux/* /opt/texbin + Por último para acabar la instalación añadimos ''%%/opt/texbin%%'' al //PATH//. Para //bash// y //zsh// basta con añadir al fichero ''%%~/.profile%%'' las siguientes lineas: @@ -574,11 +609,13 @@ if [ -d "/opt/texbin" ] ; then PATH="$PATH:/opt/texbin" fi + En cuanto a //fish// (si es que lo usas, claro) tendremos que modificar (o crear) el fichero ''%%~/.config/fish/config.fish%%'' y añadir la siguiente linea: set PATH $PATH /opt/texbin + ==== Falsificando paquetes ==== Ya tenemos el //texlive// instalado, ahora necesitamos que el gestor de paquetes sepa que ya lo tenemos instalado. @@ -588,23 +625,27 @@ sudo apt install equivs --no-install-recommends mkdir -p /tmp/tl-equivs && cd /tmp/tl-equivs equivs-control texlive-local + Alternativamente para hacerlo más fácil podemos descargarnos un fichero ''%%texlive-local%%''ya preparado, ejecutando: wget http://www.tug.org/texlive/files/debian-equivs-2018-ex.txt /bin/cp -f debian-equivs-2020-ex.txt texlive-local + Editamos la versión (si queremos) y procedemos a generar el paquete //deb//. equivs-build texlive-local + El paquete que hemos generado tiene una dependencia: //freeglut3//, hay que instalarla previamente. sudo apt install freeglut3 sudo dpkg -i texlive-local_2020-1_all.deb + Todo listo, ahora podemos instalar cualquier paquete debian que dependa de //texlive// sin problemas de dependencias, aunque no hayamos instalado el //texlive// de Debian. ==== Fuentes ==== @@ -615,32 +656,38 @@ Para dejar disponibles las fuentes opentype y truetype que vienen con texlive pa sudo cp $(kpsewhich -var-value TEXMFSYSVAR)/fonts/conf/texlive-fontconfig.conf /etc/fonts/conf.d/09-texlive.conf sudo nano /etc/fonts/conf.d/09-texlive.conf + Borramos la linea: /usr/local/texlive/20xx/texmf-dist/fonts/type1 + Y ejecutamos: sudo fc-cache -fsv + Actualizaciones Para actualizar nuestro //latex// a la última versión de todos los paquetes: sudo /opt/texbin/tlmgr update --self sudo /opt/texbin/tlmgr update --all + También podemos lanzar el instalador gráfico con: sudo /opt/texbin/tlmgr --gui + Para usar el instalador gráfico hay que instalar previamente: sudo apt-get install perl-tk --no-install-recommends + Lanzador para el actualizador de //texlive//: @@ -658,6 +705,7 @@ Type=Application Icon=system-software-update EOF + ===== Tipos de letra ===== Creamos el directorio de usuario para tipos de letra: @@ -665,6 +713,7 @@ Creamos el directorio de usuario para tipos de letra: mkdir ~/.local/share/fonts + ===== Fuentes Adicionales ===== Me he descargado de internet la fuente [[https://robey.lag.net/downloads/mensch.ttf|Mensch]] el directorio de usuario para los tipos de letra: ''%%~/.local/share/fonts%%'' @@ -677,6 +726,7 @@ git clone https://github.com/ProgrammingFonts/ProgrammingFonts cd ~/.local/share/fonts ln -s ~/wherever/ProgrammingFonts/Menlo . + La fuente Hack la he instalado directamente desde el [[https://sourcefoundry.org/hack/|sitio web]] ===== Pandoc ===== @@ -692,6 +742,7 @@ mkdir ~/.pandoc cd ~/.pandoc git clone https://github.com/jgm/pandoc-templates templates + Las plantillas no son imprescindibles pero si quieres aprender a usarlas o hacer alguna modificación viene bien tenerlas. ===== Algunos editores adicionales ===== @@ -710,6 +761,7 @@ Ejecutamos lo que manda la página web: sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin + El programa queda instalado en ''%%/opt/calibre%%''. Se puede desinstalar con el comando ''%%sudo calibre-unistall%%''. Para usar el calibre con el Kobo Glo: @@ -742,6 +794,7 @@ sudo add-apt-repository ppa:scribus/ppa sudo apt update sudo apt install scribus scribus-ng scribus-template scribus-ng-doc + ==== Cambiados algunos valores por defecto ==== He cambiado los siguientes valores en las dos versiones, non están exactamente en el mismo menú pero no son díficiles de encontrar: @@ -782,6 +835,7 @@ Estos son los paquetes esenciales para empezar a desarrollar software en Linux. sudo apt install build-essential checkinstall make automake cmake autoconf \ git git-core git-crypt dpkg wget + ===== Git ===== @@ -789,12 +843,13 @@ git git-core git-crypt dpkg wget **NOTA**: Si quieres instalar la última versión de git, los git developers tienen un ppa para ubuntu, si quieres tener el git más actualizado: - + sudo add-apt-repository ppa:git-core/ppa sudo apt update sudo apt upgrade + ---- Control de versiones distribuido. Imprescindible. Para //Linux Mint// viene instalado por defecto. @@ -828,6 +883,7 @@ git config --global alias.co checkout git config --global alias.br branch git config --global core.editor emacs + ===== Emacs ===== Instalado emacs desde los repos: @@ -835,6 +891,7 @@ Instalado emacs desde los repos: sudo aptitude install emacs + ===== Lenguaje de programación D (D programming language) ===== El lenguaje de programación D es un lenguaje de programación de sistemas con una sintaxis similar a la de C y con tipado estático. Combina eficiencia, control y potencia de modelado con seguridad y productividad. @@ -848,11 +905,13 @@ sudo wget http://master.dl.sourceforge.net/project/d-apt/files/d-apt.list -O /et sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EBCF975E5BA24D5E sudo apt update + Instalamos todos los programas asociados excepto //textadept// que no uso. sudo apt install dmd-compiler dmd-tools dub dcd dfix dfmt dscanner + ==== DCD ==== Una vez instalado el DCD tenemos que configurarlo creando el fichero ''%%~/.config/dcd/dcd.conf%%'' con el siguiente contenido: @@ -861,12 +920,14 @@ Una vez instalado el DCD tenemos que configurarlo creando el fichero ''%%~/.conf /usr/include/dmd/druntime/import /usr/include/dmd/phobos + Podemos probarlo con: dcd-server & echo | dcd-client --search toImpl + ==== gdc ==== Instalado con: @@ -874,6 +935,7 @@ Instalado con: sudo aptitude install gdc + ==== ldc ==== Instalado con: @@ -881,11 +943,13 @@ Instalado con: sudo aptitude install ldc + Para poder ejecutar aplicaciones basadas en Vibed, necesitamos instalar: sudo apt-get install -y libssl-dev libevent-dev + ==== Emacs para editar D ==== Instalados los siguientes paquetes desde Melpa @@ -906,9 +970,10 @@ Referencias * (https:%%//%%github.com/atilaneves/ac-dcd) * (https:%%//%%github.c Para instalar las dependencias, previamente instalamos: - + sudo apt install ncurses-dev id-utils exuberant-ctags python-pygments + Con ''%%ctags --version%%'' nos aseguramos de que se llama a Exuberant y no el ctags que instala Emacs. Si no es así habrá que revisar la definición del ''%%PATH%%'' ''%%python-pygments%%'' no es necesario para C o C++, pero añade funcionalidad a Global (hasta 25 lenguajes de programación más) @@ -919,18 +984,19 @@ Nos bajamos las fuentes del programa desde [[https://www.gnu.org/software/global Descomprimimos los fuentes y los compilamos con: - + ./configure --prefix=/usr/local --with-exuberant-ctags=/usr/bin/ctags make sudo make install + He comprobado que make uninstall funciona correctamente, las librerías quedan instaladas en ''%%/usr/local/lib/gtags%%'' y los ejecutables en ''%%/usr/local/bin%%'' ===== Rust ===== Instalamos siguiendo las instrucciones de [[https://www.rust-lang.org/tools/install|aqui]] (Hacemos la instalación por defecto) - + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh stable installed - rustc 1.47.0 (18bf6b4f0 2020-10-07) @@ -943,8 +1009,8 @@ environment variable. Next time you log in this will be done automatically. To configure your current shell run source $HOME/.cargo/env - + Yo comento la linea del fichero ''%%.zprofile%%'' por que mi ''%%.zshrc%%'' ya lee el fichero ''%%.profile%%'' Para desinstalar ''%%rust%%'' bastaría con ejecutar ''%%rustup self uninstall%%'' @@ -958,6 +1024,7 @@ Descomprimimos como //root// en ''%%/usr/local/%%'' sudo tar -C /usr/local -xvzf go1.15.7.linux-amd64.tar.gz + Añadimos al path con las siguientes lineas en ''%%~/.profile%%'': @@ -971,6 +1038,7 @@ if [ -d "$HOME/work/development/gocode" ] ; then PATH="$PATH:$GOPATH/bin" fi + ==== Instalación de gopls un servidor de LSP para editores: ==== Desde un directorio **que no sea el GOPATH** @@ -978,6 +1046,7 @@ Desde un directorio **que no sea el GOPATH** GO111MODULE=on go get golang.org/x/tools/gopls@latest + ===== Processing ===== Bajamos el paquete de la [[https://processing.org/|página web]], descomprimimimos en ''%%~/apps/%%'', en las nuevas versiones incorpora un script de instalación que ya se encarga de crear el fichero //desktop//. @@ -996,12 +1065,13 @@ En la primera pregunta que nos hace es necesario contestar que no. De lo contrar Añade los siguientes paquetes a nuestro sistema - + installing OF dependencies OF needs to install the following packages using apt-get: curl libjack-jackd2-0 libjack-jackd2-dev freeglut3-dev libasound2-dev libxmu-dev libxxf86vm-dev g++ libgl1-mesa-dev libglu1-mesa-dev libraw1394-dev libudev-dev libdrm-dev libglew-dev libopenal-dev libsndfile-dev libfreeimage-dev libcairo2-dev libfreetype6-dev libssl-dev libpulse-dev libusb-1.0-0-dev libgtk-3-dev libopencv-dev libassimp-dev librtaudio-dev libboost-filesystem-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-libav gstreamer1.0-pulseaudio gstreamer1.0-x gstreamer1.0-plugins-bad gstreamer1.0-alsa gstreamer1.0-plugins-base gstreamer1.0-plugins-good gdb libglfw3-dev liburiparser-dev libcurl4-openssl-dev libpugixml-dev libgconf-2-4 libgtk2.0-0 libpoco-dev Do you want to continue? [Y/n] + No te olvides de compilar también el //Project Generator//. ===== Python ===== @@ -1014,32 +1084,35 @@ Para escoger un python por defecto tenemos dos paquetes que podemos instalar: '' En principio yo no quería instalar ninguno para averigüar que paquetes no funcionaban, pero la instalación de VirtualBox hizo que se instalara automáticamente el paquete ''%%python-is-python2%%''. - + python2 -V Python 2.7.18rc1 python3 -V Python 3.8.2 + ==== Paquetes de python instalados ==== Son los que ya comentamos en la sección de instalación de zsh, como ya dijimos conviene que instalemos los paquetes de desarrollo: - + sudo apt install python2-dev sudo apt install python-all-dev sudo apt install python3-dev sudo apt install python3-all-dev sudo apt install virtualenv virtualenvwrapper python3-virtualenv + Ademas añadimos las siguientes lineas al fichero ''%%~/.profile%%'': - + # WORKON_HOME for virtualenvwrapper if [ -d "$HOME/.virtualenvs" ] ; then WORKON_HOME="$HOME/.virtualenvs" fi + [[https://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html|Aquí]] tenemos la referencia de comandos de //virtualenvwrapper//. ==== Instalación de bpython y ptpython ==== @@ -1052,17 +1125,19 @@ fi Una instalación para pruebas. - + mkvirtualenv -p /usr/bin/python3 jupyter python -m pip install jupyter + ==== Instalamos python3.9 ==== ''%%python3.9%%'' está ya disponible en los repos oficiales. Para dejarla instalada: - + sudo apt install python3.9 python3.9-dev python3.9-venv + ==== pyenv ==== Instalamos los pre-requisitos: @@ -1074,16 +1149,19 @@ libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev \ wget curl llvm libncurses5-dev xz-utils tk-dev \ libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev + Podemos clonar el repo en nuestro ''%%home%%'': git clone https://github.com/pyenv/pyenv.git ~/.pyenv + Pero también podemos añadir el //bundle// para //Antigen// en el fichero ''%%.zshrc%%'' y dejar que se encargue de todo. antigen bundle mattberther/zsh-pyenv + Añadimos al fichero ''%%~/.profile%%'': @@ -1093,6 +1171,7 @@ if [ -d "$HOME/.pyenv" ] ; then export PATH="$PYENV_ROOT/bin:$PATH" fi + Y configuramos en ''%%~/.bashrc%%'' y en ''%%~/.zshrc%%'' (aunque en el último no es necesario tocar nada si usamos el //bundle// para //Antigen//): @@ -1100,6 +1179,7 @@ if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init -)" fi + Podemos probar que todo funciona con: ''%%pyenv install -l%%'' Una vez instalado hay que estudiarse [[https://github.com/pyenv/pyenv/blob/master/COMMANDS.md|la referencia de comandos]] @@ -1115,6 +1195,7 @@ sudo apt-add-repository ppa:neovim-ppa/stable sudo apt update sudo apt install neovim + Para instalar los módulos de python creamos un //virtualev// que más tarde añadiremos al fichero ''%%init.vim%%''. @@ -1122,6 +1203,7 @@ mkvirtualenv -p /usr/bin/python3 neovim3 sudo pip install --upgrade neovim deactivate + Revisar [[https://neovim.io/doc/user/provider.html#provider-python|esto]] |**NOTA**: El siguiente paso ya no parece necesario, las alternativas | @@ -1135,6 +1217,7 @@ sudo update-alternatives --config vi sudo update-alternatives --install /usr/bin/vim vim /usr/bin/nvim 60 sudo update-alternatives --config vim + === Install vim-plug === Ejecutamos: @@ -1143,6 +1226,7 @@ Ejecutamos: curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim + Configuramos el fichero de configuración de //nvim// (''%%~/.config/nvim/init.vim%%''): @@ -1170,8 +1254,8 @@ let g:deoplete#enable_at_startup = 1 let g:python_host_prog = '/full/path/to/neovim2/bin/python' let g:python3_host_prog = '/home/salvari/.virtualenvs/neovim3/bin/python' - + La primera vez que abramos //nvim// tenemos que instalar los plugin porn comando ejecutando: ''%%:PlugInstall%%'' **Instalación de ''%%dein%%''** @@ -1204,6 +1288,7 @@ endif filetype plugin indent on syntax enable + ===== Firefox developer edition ===== El rollo de siempre, descargar desde [[https://www.mozilla.org/en-US/firefox/developer/|la página web]] descomprimir en ''%%~/apps%%'' y crear un lanzador. @@ -1212,9 +1297,10 @@ El rollo de siempre, descargar desde [[https://www.mozilla.org/en-US/firefox/dev Herramientas útiles para depuración web - + sudo apt install httpie links + ===== MariaDB ===== Instalamos la última estable para Ubuntu Fossa desde los repos oficiales. @@ -1223,9 +1309,10 @@ Primero añadimos los repos. Añadimos la clave de firma: - + sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc' + Ahora tenemos dos opciones: Podemos ejecutar: @@ -1233,6 +1320,7 @@ Podemos ejecutar: sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mariadb.mirror.liteserver.nl/repo/10.5/ubuntu focal main' + O podemos crear un fichero ''%%/etc/apt/apt.sources.list.d/MariaDB%%'' con el siguiente contenido (yo dejo las fuentes comentadas): @@ -1241,6 +1329,7 @@ O podemos crear un fichero ''%%/etc/apt/apt.sources.list.d/MariaDB%%'' con el si deb [arch=amd64] http://mariadb.mirror.liteserver.nl/repo/10.5/ubuntu focal main # deb-src http://mariadb.mirror.liteserver.nl/repo/10.5/ubuntu focal main + Y ya solo nos queda lo de siempre: @@ -1248,6 +1337,7 @@ sudo apt update sudo apt upgrade sudo apt install mariadb-server + Podemos comprobar con ''%%systemctl status mariadb%%'' También podemos hacer login con el usuario ''%%root%%'': @@ -1255,6 +1345,7 @@ También podemos hacer login con el usuario ''%%root%%'': sudo mariadb -u root + **Ojo**, hay que hacer ''%%sudo%%'', el comando ''%%mariadb -u root%%'' no funciona. Y ahora aseguramos la instación con: @@ -1262,6 +1353,7 @@ Y ahora aseguramos la instación con: sudo mysql_secure_installation + Yo diría que tienes que decir que si a todas las preguntas, excepto quizás al //unix_socket_authentication//. Por último sólo nos queda decidir si el servicio mariadb debe estar ejecutándose permanentemente o no. @@ -1272,6 +1364,7 @@ Si queremos pararlo y que no se arranque automáticamente al arrancar el ordenad sudo systemctl stop mariadb sudo systemctl disable mariadb + ===== Squirrel SQL Client ===== Bajamos el zip de estándar desde [[http://www.squirrelsql.org/|la página web de Squirrel]] (yo prefiero no usar el instalador) @@ -1286,12 +1379,13 @@ Configuramos el driver para que sepa donde está el fichero ''%%.jar%%'' y ya es Primero instalamos la última versión de R en nuestro pc: - + sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/' sudo apt update sudo apt install r-base + ==== R-studio ==== Descargamos la última versión disponible de //R-studio// desde la [[https://rstudio.com/products/rstudio/download-server/debian-ubuntu/|página web]] @@ -1305,6 +1399,7 @@ Instalado desde flatpak sudo flatpak install flathub org.octave.Octave + ====== Desarrollo hardware ====== ===== Arduino IDE ===== @@ -1325,6 +1420,7 @@ sudo gpasswd --add dialout sudo gpasswd --add uucp sudo gpasswd --add plugdev + Creamos los siguientes ficheros en el directorio ''%%/etc/udev/rules.d%%'' Fichero ''%%90-extraacl.rules%%'' mete mi usario en el fichero de reglas (¬_¬) @@ -1335,6 +1431,7 @@ Fichero ''%%90-extraacl.rules%%'' mete mi usario en el fichero de reglas (¬_¬) KERNEL=="ttyUSB[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="salvari" KERNEL=="ttyACM[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="salvari" + Fichero ''%%98-openocd.rules%%'' @@ -1350,6 +1447,7 @@ ATTRS{product}=="*CMSIS-DAP*", MODE="664", GROUP="plugdev" LABEL="openocd_rules_end" + Fichero ''%%avrisp.rules%%'' @@ -1365,6 +1463,7 @@ ATTR{idVendor}=="03eb", ATTRS{idProduct}=="2107", MODE="660", GROUP="dialout" LABEL="avrisp_end" + Fichero ''%%40-defuse.rules%%'': @@ -1375,6 +1474,7 @@ Fichero ''%%40-defuse.rules%%'': ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="664", GROUP="plugdev", TAG+="uaccess" + Fichero ''%%99-arduino-101.rules%%'': @@ -1383,6 +1483,7 @@ Fichero ''%%99-arduino-101.rules%%'': SUBSYSTEM=="tty", ENV{ID_REVISION}=="8087", ENV{ID_MODEL_ID}=="0ab6", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_CANDIDATE}="0" SUBSYSTEM=="usb", ATTR{idVendor}=="8087", ATTR{idProduct}=="0aba", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1" + Yo añado el fichero ''%%99-arduino.rules%%'' que se encarga de inhibir el modemmanager para que no capture al //CircuitPlayground Express//: @@ -1391,6 +1492,7 @@ 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" + ==== Añadir soporte para Feather M0 ==== Arrancamos el IDE Arduino y en la opción de //Preferences::Aditional Boar Managers URLs// añadimos la dirección ''%%https://adafruit.github.io/arduino-board-index/package_adafruit_index.json%%'', si tenemos otras URL, simplemente añadimos esta separada por una coma. @@ -1491,39 +1593,44 @@ Instalamos las dependencias (cmake ya lo tenemos instalado) ---- - + sudo apt-get install gperf cmake ninja-build ccache libffi-dev libssl-dev + Ahora creamos un directorio para nuestro //tool-chain//: - + mkdir ~/esp cd ~/esp git clone --recursive https://github.com/espressif/esp-idf + También es necesario que nuestro usuario pertenezca al grupo ''%%dialout%%'', pero eso ya deberíamos tenerlo hecho de antes. Una vez clonado el repo ejecutamos el script de instalación - + cd ~/esp/esp-idf ./install.sh + Este script nos va a dejar instaladas todas las herramientas necesarias en el directorio ''%%~/.expressif%%'' **Nota**: para que funcione correctamente en Linux Mint es necesario que el script ''%%tools/idf_tools.py%%'' apunte al python3 de nuestro sistema. Basta con editar la primera linea //shebang// del script. Estas son las bibliotecas que deja instaladas: - + Installing ESP-IDF tools Installing tools: xtensa-esp32-elf, xtensa-esp32s2-elf, esp32ulp-elf, esp32s2ulp-elf, openocd-esp32 + Para empezar a trabajar bastará con hacer un //source// del fichero ''%%~/apps/esp/esp-idf/export.sh%%'': - + . ~/apps/esp/esp-idf/export.sh + ===== KiCAD ===== En la [[http://kicad-pcb.org/download/linux-mint/|página web del proyecto]] nos recomiendan el ppa a usar para instalar la última versión estable: @@ -1533,6 +1640,7 @@ sudo add-apt-repository --yes ppa:kicad/kicad-5.1-releases sudo apt-get update sudo apt install kicad + Paciencia, el paquete ''%%kicad-packages3d%%'' tarda un buen rato en descargarse. Algunas librerías alternativas: @@ -1548,9 +1656,10 @@ Mi analizador es un OpenBench de Seedstudio, [[http://dangerousprototypes.com/do Instalamos **Sigrok**, simplemente desde los repos de Debian: - + sudo aptitude install sigrok + Al instalar **Sigrok** instalamos también **Pulseview**. Si al conectar el analizador, echamos un ojo al fichero //syslog// vemos que al conectarlo se mapea en un puerto tty. @@ -1565,9 +1674,10 @@ Descargamos el paquete de la [[https://www.sump.org|página del proyecto]], o m Instalamos las dependencias: - + sudo apt install librxtx-java + Editamos el fichero //~/apps/Logic Analyzer/client/run.sh// y lo dejamos así: @@ -1576,6 +1686,7 @@ Editamos el fichero //~/apps/Logic Analyzer/client/run.sh// y lo dejamos así: # java -jar analyzer.jar $* java -cp /usr/share/java/RXTXcomm.jar:analyzer.jar org.sump.analyzer.Loader + Y ya funciona. ==== OLS ==== @@ -1607,12 +1718,14 @@ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > package sudo install -o root -g root -m 644 packages.microsoft.gpg /usr/share/keyrings/ sudo sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list' + E instalamos sudo apt update sudo apt install code # alternativamente code-insiders (es como la versión beta, se pueden instalar los dos) + Ahora - lanzamos el editor @@ -1635,15 +1748,17 @@ if [ -d "$HOME/.platformio/penv/bin"] ; then PATH="$PATH:$HOME/.platformio/penv/bin" fi + Si quieres usar Platformio desde linea de comandos, es mejor activar manualmente el entorno virtual con ''%%source ~/.platformio/penv/bin/activate%%'' ==== vscodium ==== - + wget -qO - https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg | gpg --dearmor | sudo dd of=/etc/apt/trusted.gpg.d/vscodium.gpg echo 'deb https://paulcarroty.gitlab.io/vscodium-deb-rpm-repo/debs/ vscodium main' | sudo tee --append /etc/apt/sources.list.d/vscodium.list sudo apt update && sudo apt install codium + ==== Editor Atom ==== @@ -1660,6 +1775,7 @@ sudo sh -c 'echo "deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ sudo apt update sudo apt install atom + ===== RepRap ===== ==== OpenScad ==== @@ -1699,6 +1815,7 @@ python -m pip install https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ub pip install -r requirements.txt # sudo apt-get install libdbus-glib-1-dev libdbus-1-dev + Y ya lo tenemos todo listo para ejecutar. ===== Cortadora de vinilos ===== @@ -1707,7 +1824,7 @@ Y ya lo tenemos todo listo para ejecutar. Instalado en un entorno virtual: - + mkvirtualenv -p `which python3` inkcut sudo apt install libxml2-dev libxslt-dev libcups2-dev @@ -1716,13 +1833,15 @@ pip install PyQt5 pip install inkcut + ==== Plugin para inkscape ==== Instalamos dependencias: - + pip install python-usb + Instalamos el fichero ''%%.deb%%'' desde la web https://github.com/fablabnbg/inkscape-silhouette/releases ===== Drone ===== @@ -1735,9 +1854,10 @@ Descargamos [[https://s3-us-west-2.amazonaws.com/qgroundcontrol/latest/QGroundCo Para usar //Mission Planner// en Linux Mint se recomienda instalar los paquetes: - + sudo apt install mono-complete festival + Descargamos el MissionPlanner desde [[https://firmware.ardupilot.org/Tools/MissionPlanner/MissionPlanner-latest.zip|aquí]] [[https://www.rcgroups.com/forums/showthread.php?2179591-Installing-MissionPlanner-1-3-X-on-Ubuntu-17-04|Descripción de la instalación]] @@ -1753,6 +1873,7 @@ Para ello ejecutamos el siguiente comando (la versión actual de ''%%nvm%%'' es curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.0/install.sh | bash + El script de instalación añade las siguientes lineas al fichero ''%%~/.bashrc%%'', nosotros las movemos al fichero ''%%~/.profile%%'' @@ -1760,6 +1881,7 @@ export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion + Para comprobar la instalación usamos ''%%command -v nvm%%'' que nos devolverá ''%%nvm%%''. ''%%which%%'' no funciona en este caso por que es un script para aplicarle ''%%source%%'' ==== Instalación de node.js ==== @@ -1770,6 +1892,7 @@ Ahora que tenemos ''%%nvm%%'' instalado, ya podemos instalar fácilmente la vers nvm ls-remote # para listar las versiones disponibles nvm install node # instala la última versión disponible + ==== Instalación de mosquitto ==== ''%%mosquitto%%'' es un //mqtt broker// muy sencillo y completo, aunque no es capaz de aguantar cargas grandes, para aprender es perfecto. @@ -1779,6 +1902,7 @@ sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa sudo apt-get update sudo apt install mosquitto mosquitto-clients + Con esto queda el servicio instalado y funcionando (''%%scs mosquitto%%'' o ''%%systemctl status mosquitto%%'') Si queremos el servicio parado para arrancarlo nosotros manualmente: @@ -1787,12 +1911,14 @@ Si queremos el servicio parado para arrancarlo nosotros manualmente: scsp mosquitto.service scd mosquitto.service + Y sin alias sería: sudo systemctl stop mosquitto.service sudo systemctl disable mosquitto.service + Para arrancarlo cuando lo necesitemos le damos un //start// con ''%%scst mosquitto.service%%'' o ''%%sudo systemctl start mosquitto.service%%'' ==== Instalación de Influxdb ==== @@ -1810,6 +1936,7 @@ apt update apt install influxdb apt install telegraf + ==== Instalación de node-red ==== Una vez instalado el ''%%node.js%%'' instalar el ''%%node-red%%'' es muy fácil @@ -1818,6 +1945,7 @@ Una vez instalado el ''%%node.js%%'' instalar el ''%%node-red%%'' es muy fácil nvm use node npm install -g --unsafe-perm node-red + ====== Aplicaciones de gráficos ====== ===== LibreCAD ===== @@ -1827,6 +1955,7 @@ Diseño en 2D sudo apt install librecad + ===== FreeCAD ===== No hay ppa disponible para Ubuntu 20. @@ -1841,6 +1970,7 @@ sudo apt update sudo install freecad + ---- **NOTA:** the ccx package brings CalculiX support to the FEM workbench, and needs to be installed separately. @@ -1857,16 +1987,18 @@ sudo add-apt-repository ppa:inkscape.dev/stable sudo apt update sudo apt install inkscape + ===== Gimp ===== El programa para edición y retocado de imágenes. Parece que ahora mismo los repos están más actualizados que el ppa. Así que bastaría con: - + sudo apt install gimp gimp-data gimp-texturize \ gimp-data-extras gimp-gap gmic gimp-gmic + De todas formas dejo aquí las instrucciones para instalar desde el ppa por si hacen falta algún dia: @@ -1877,6 +2009,7 @@ sudo apt upgrade sudo apt install gimp gimp-data gimp-texturize \ gimp-data-extras gimp-gap gmic gimp-gmic gimp-python + ==== Plugins de Gimp ==== Para instalar los principales plugins basta con: @@ -1884,11 +2017,24 @@ Para instalar los principales plugins basta con: sudo apt install gimp-plugin-registry -|Esta sección ya no está vigente | -|#### resynthesizer | -|Descargamos el plugin desde [[https://github.com/bootchk/resynthesizer|aquí]] y descomprimimos el fichero en ''%%~/.config/GIMP/2.10/plug-ins%%'' | -|Tenemos que asegurarnos que los fichero //python// son ejecutables: | -|~~~~ chmod 755 ~/.config/GIMP/2.10/plug-ins/*.py ~~~~ | + + +---- + +Esta sección ya no está vigente + +=== resynthesizer === + +Descargamos el plugin desde [[https://github.com/bootchk/resynthesizer|aquí]] y descomprimimos el fichero en ''%%~/.config/GIMP/2.10/plug-ins%%'' + +Tenemos que asegurarnos que los fichero //python// son ejecutables: + + +chmod 755 ~/.config/GIMP/2.10/plug-ins/*.py + + + +---- ===== Krita ===== @@ -1914,11 +2060,12 @@ El [[https://github.com/DamirPorobic/ksnip|//ksnip//]] por si tenemos que hacer Shutter vuelve a estar disponible, al instalar desde este ppa ya queda con las opciones de edición habilitadas: - + sudo add-apt-repository ppa:linuxuprising/shutter sudo apt update sudo apt install shutter + ===== Reoptimizar imágenes ===== ==== ImageMagick ==== @@ -1928,6 +2075,7 @@ Instalamos desde los repos, simplemente: sudo apt install imagemagick + ==== Imagine ==== Nos bajamos un //AppImage// desde el [[https://github.com/meowtec/Imagine/releases|github]] de la aplicación @@ -1939,6 +2087,7 @@ Un programa para crear diagramas sudo apt install dia dia-shapes gsfonts-x11 + ===== Blender ===== Bajamos el Blender linkado estáticamente de [[https://www.blender.org|la página web]] y lo descomprimimos en ''%%~/apps/blender%%''. @@ -1952,6 +2101,7 @@ Instalado desde repos, junto con sunflow para explorar un poco. sudo apt install structure-synth sunflow + ===== Heron animation ===== El proyecto parece abandonado. El software ya no funciona en el último linux. @@ -1973,18 +2123,20 @@ Descargamos los últimos drivers desde [[https://github.com/DIGImend/digimend-ke Descomprimimos en ''%%/usr/src/digimend-9%%'' - + cd /usr/src sudo xvzf . sudo dkms build digimend-kernel-drivers/9 sudo dkms install digimend/9 + Para comprobar: xinput --list dkms status + Referencia: * [[https://davidrevoy.com/article331/setup-huion-giano-wh1409-tablet-on-linux-mint-18-1-ubuntu-16-04|Aquí]] @@ -2008,6 +2160,7 @@ sudo add-apt-repository ppa:ubuntuhandbook1/audacity sudo apt-get update sudo apt install audacity + Instalamos también el plugin [[https://theaudacitytopodcast.com/chriss-dynamic-compressor-plugin-for-audacity/|Chris’s Dynamic Compressor plugin]] ===== Clementine ===== @@ -2017,6 +2170,7 @@ La version disponible en los orígenes de software parece al dia: sudo apt install clementine + ====== Video ====== ===== Shotcut ===== @@ -2030,6 +2184,7 @@ cd chmod 744 Shotcutxxxxxx.AppImage ./Shotcutxxxxxx.AppImage + ===== kdenlive ===== Está disponible [[https://kdenlive.org|en la web]] como ppa o como //appimage//. Lo he bajado como //appimage// para probarlo. @@ -2048,17 +2203,19 @@ Instalados desde los repos oficiales: sudo apt update sudo apt install vokoscreen vokoscreen-ng kazam simplescreenrecorder + Escoge el que más te guste. ==== OBS ==== Añadimos el repositorio - + sudo add-apt-repository ppa:obsproject/obs-studio sudo apt update sudo apt install obs-studio + ===== Grabación de podcast ===== ==== Mumble ==== @@ -2072,6 +2229,7 @@ sudo add-apt-repository ppa:mumble/release sudo apt update sudo apt install mumble + ====== Fotografía ====== ===== Rawtherapee ===== @@ -2083,6 +2241,7 @@ cd chmod 744 RawTherapeexxxxxx.AppImage ./RawTherapeexxxxxx.AppImage + Al ejecutarla la primera vez ya se encarga la propia aplicación de integrarse en nuestro sistema. ===== Darktable ===== @@ -2095,6 +2254,7 @@ curl -fsSL https://download.opensuse.org/repositories/graphics:darktable/xUbuntu sudo apt update sudo apt install darktable + Se instala la última versión de Darktable (3.0.2) **OJO**: Conviene renombrar el fichero de claves de darktable, a nuestro linux no le gustan los ficheros con un ‘:’ Revisa ''%%/etc/apt/trusted.gpg.d/%%'' @@ -2114,11 +2274,13 @@ cd ~ ssh-keygen -b 4096 [-t dsa | ecdsa | ed25519 | rsa | rsa1] cat .ssh/ + Solo resta añadir nuestra clave pública en el fichero ''%%authorized_keys%%'' del servidor remoto. cat ~/.ssh/id_xxx.pub | ssh user@hostname 'cat >> .ssh/authorized_keys' + [[https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process|¿Cómo funciona esto?]] ===== Claves gpg ===== @@ -2145,6 +2307,7 @@ Podemos echar un ojo a nuestras claves desde ''%%seahorse%%'' la aplicación de ls -al ~/.ssh + En las claves listadas nuestras claves públicas aparecerán con extensión ''%%.pub%%'' También podemos comprobar que claves hemos añadido ya a nuestro agente ssh con: @@ -2152,16 +2315,19 @@ También podemos comprobar que claves hemos añadido ya a nuestro agente ssh con ssh-add -l + Para generar una nueva pareja de claves ssh: ssh-keygen -t rsa -b 4096 -C "your_email@example.com" + Podremos dar un nombre distintivo a los ficheros de claves generados y poner una contraseña adecuada a la clave. Si algún dia queremos cambiar la contraseña: ssh-keygen -p + Ahora tenemos que añadir nuestra clave ssh en nuestra cuenta de github, para ello editamos con nuestro editor de texto favorito el fichero ''%%~/.ssh/id_rsa.pub%%'' y copiamos el contenido integro. Después pegamos ese contenido en el cuadro de texto de la web de github. Para comprobar que las claves instaladas en github funcionan correctamente: @@ -2170,6 +2336,7 @@ Para comprobar que las claves instaladas en github funcionan correctamente: ssh -T git@github.com Hi salvari! You've successfully authenticated, but GitHub does not provide shell access. + Este mensaje indica que todo ha ido bien. Ahora en los repos donde queramos usar ssh debemos cambiar el remote: @@ -2177,6 +2344,7 @@ Ahora en los repos donde queramos usar ssh debemos cambiar el remote: git remote set-url origin git@github.com:$USER/$REPONAME.git + ===== Signal ===== El procedimiento recomendado en la página oficial: @@ -2187,6 +2355,7 @@ echo "deb [arch=amd64] https://updates.signal.org/desktop/apt xenial main" | sud sudo apt update && sudo apt install signal-desktop + ---- **NOTA**: Parece que no funciona. Lo he instalado via //flatpack// @@ -2209,6 +2378,7 @@ sudo apt update sudo apt install element-desktop + ===== Lector DNI electrónico ===== Descargamos la aplicación en formato ''%%.deb%%'' desde [[https://www.dnielectronico.es/PortalDNIe/PRF1_Cons02.action?pag=REF_1112|la página de descargas del portal DNIe]]. @@ -2218,6 +2388,7 @@ Automáticamente nos instalará las dependecias: ''%%libccid%%'', ''%%pcsd%%'' y sudo apt-get install pcsc-tools opensc + El opensc no es necesario para el DNIe, pero nos permite usar otras tarjetas. Como root ejecutamos pcsc_scan: @@ -2231,6 +2402,7 @@ Using reader plug'n play mechanism Scanning present readers... Waiting for the first reader... + Si insertamos el lector veremos algo como esto: @@ -2248,12 +2420,14 @@ Wed Jan 25 01:17:20 2017 Reader 0: C3PO LTC31 v2 (11061005) 00 00 Card state: Card removed, + Si insertamos un DNI veremos que se lee la información de la tarjeta insertada: Reader 0: C3PO LTC31 v2 (11061005) 00 00 Card state: Card inserted, + y mas rollo Para abrir los certificados en el navegador Firefox, nos lo explica [[https://www.agenciatributaria.es/AEAT.internet/Inicio/Ayuda/_comp_Consultas_informaticas/Categorias/Firma_digital__certificado_o_DNIe__y_sistema_Cl_ve_PIN/DNI_electronico__DNIe_/Comprobaciones_tecnicas_para_el_funcionamiento_del_DNIe/Comprobaciones_tecnicas_del_DNIe_con_Mozilla_Firefox_y_Linux/Comprobaciones_tecnicas_del_DNIe_con_Mozilla_Firefox_y_Linux.shtml|esta página de la AEAT]] @@ -2292,24 +2466,28 @@ sudo add-apt-repository "deb [arch=amd64] https://download.virtualbox.org/virtua # Actualizamos la base de datos de paquetes sudo apt update + Ahora podemos comprobar que además del paquete //virtualbox// tenemos varios paquetes con número de versión (p.ej. _virtualbox.6.1), estos últimos son los que hemos añadido (compruebalo con ''%%apt-cache policy [nombrepaquete]%%'') Instalamos el que nos interesa: - + sudo apt install virtualbox-6.1 + **ATENCIÓN** The following additional packages will be installed: python-is-python2 + Descargamos también el [[https://www.virtualbox.org/wiki/Downloads|VirtualBox Extension Pack]], este paquete lo podemos instalar desde el propio interfaz de usuario del //VirtualBox//, o bien con el siguiente comando: sudo VBoxManage extpack install ./Oracle_VM_VirtualBox_Extension_Pack-6.1.2.vbox-extpack + Sólo nos queda añadir nuestro usuario al grupo ''%%vboxusers%%'', con el comando ''%%sudo gpasswd -a username vboxusers%%'', y tendremos que cerrar la sesión para refrescar nuestros grupos. ===== qemu ===== @@ -2325,6 +2503,7 @@ Instalamos desde el repo oficial: sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager sudo apt install virt-viewer + * **qemu-kvm** nos da la emulación hardware para el hipervisor KVM * **libvirt-daemon-system** los ficheros de configuración para ejecutar el demonio ''%%libvirt%%'' como servicio * **libvirt-clients** software para gestionar plataformas de virtualización @@ -2338,6 +2517,7 @@ Solo queda añadir nuestro usuario a los grupos: sudo gpasswd -a username libvirt sudo gpasswd -a username kvm + Podemos comprobar el estado del servicio con ''%%scs libvirtd%%'' (''%%systemctl status libvirtd%%''). ==== Referencias ==== @@ -2378,24 +2558,27 @@ sudo apt install docker-ce sudo gpasswd -a username docker + Esto dejará el servicio //docker// funcionando y habilitado (arrancará en cada reinicio del ordenador) La forma de pararlo es: - + sudo systemctl stop docker sudo systemctl disable docker systemctl status docker + Añadimos el //bundle// **docker** en nuestro fichero ''%%~/.zshrc%%'' para tener autocompletado en comandos de docker. Para usar //docker// tendremos que arrancarlo, con los alias de nuestro sistema para //systemd// ejecutamos: - + scst docker # para arrancar el servicio scsp docker # para parar el servicio + ==== docker-compose ==== * Nos bajamos la última versión disponible de [[https://github.com/docker/compose/releases|las releases de github]] @@ -2417,22 +2600,26 @@ Descargamos y añadimos la clave gpg: wget -q https://josm.openstreetmap.de/josm-apt.key -O- | sudo apt-key add - + Añadimos el origen de software: sudo add-apt-repository "deb [arch=amd64] https://josm.openstreetmap.de/apt $(. /etc/os-release; echo "$UBUNTU_CODENAME") universe" + Y ahora procedemos a la instalación: sudo apt update sudo apt install openjfx josm + Alternativamente también podemos instalar la versión “nightly” con el siguiente comando, pero tendréis actualizaciones diarias: sudo apt josm-latest + Ya estamos listos para editar Open Street Map offline. ===== MOBAC ===== @@ -2452,17 +2639,20 @@ Añadimos la clave gpg: wget -q https://qgis.org/downloads/qgis-2019.gpg.key -O- | sudo apt-key add - + Ejecutamos: sudo add-apt-repository "deb [arch=amd64] https://qgis.org/debian $(. /etc/os-release; echo "$UBUNTU_CODENAME") main" + E instalamos como siempre sudo apt update sudo apt install qgis + ==== Referencias ==== * [[https://mappinggis.com/2015/09/como-conectar-con-servicios-wms-y-wfs-con-arcgis-qgis-y-gvsig/|Conectar WMS con QGIS]] @@ -2477,6 +2667,7 @@ sudo apt install qgis sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F7E06F06199EF2F2 + ===== Solucionar problemas de menús duplicados usando menulibre ===== |**Nota**: Ya no uso //MenuLibre// | @@ -2538,6 +2729,7 @@ Seguimos los pasos de instalación: 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. @@ -2558,6 +2750,7 @@ 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/ @@ -2575,6 +2768,7 @@ Board: "Arduino Nano" Processor: "ATmega168" Port: "/dev/ttyUSB0" + Y ya funciona todo. ===== Linux Mint 20 es python agnostic ===== @@ -2583,8 +2777,9 @@ En principio no podemos invocar a ''%%python%%'' por que no se ha escogido una v Tenemos dos opciones: - + apt install python-is-python2 apt install python-is-python3 + “test” diff --git a/out/LinuxMintUlyana.epub b/out/LinuxMintUlyana.epub index 5d8ff4e..a034a12 100644 Binary files a/out/LinuxMintUlyana.epub and b/out/LinuxMintUlyana.epub differ diff --git a/out/LinuxMintUlyana.mw b/out/LinuxMintUlyana.mw index 0c6d40d..fb24e15 100644 --- a/out/LinuxMintUlyana.mw +++ b/out/LinuxMintUlyana.mw @@ -834,10 +834,10 @@ Bajamos el paquete con la última versión desde [https://golang.org/dl/ la pág Descomprimimos como ''root'' en /usr/local/ -sudo tar -C /usr/local -xvzf go1.15.7.linux-amd64.tar.gz +sudo tar -C /usr/local -xvzf go1.15.7.linux-amd64.tar.gz Añadimos al path con las siguientes lineas en ~/.profile: -#golang +#golang if [ -d "/usr/local/go" ] ; then export GOROOT="/usr/local/go" PATH="$PATH:$GOROOT/bin" @@ -845,12 +845,12 @@ fi if [ -d "$HOME/work/development/gocode" ] ; then export GOPATH="$HOME/work/development/gocode" PATH="$PATH:$GOPATH/bin" -fi +fi === Instalación de ''gopls'' un servidor de LSP para editores: === Desde un directorio '''que no sea el GOPATH''' -GO111MODULE=on go get golang.org/x/tools/gopls@latest +GO111MODULE=on go get golang.org/x/tools/gopls@latest == Processing == Bajamos el paquete de la [https://processing.org/ página web], descomprimimimos en ~/apps/, en las nuevas versiones incorpora un script de instalación que ya se encarga de crear el fichero ''desktop''. @@ -928,29 +928,29 @@ python -m pip install jupyter Instalamos los pre-requisitos: -sudo apt-get update +sudo apt-get update sudo apt-get install --no-install-recommends make build-essential \ libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev \ wget curl llvm libncurses5-dev xz-utils tk-dev \ -libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev +libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev Podemos clonar el repo en nuestro home: -git clone https://github.com/pyenv/pyenv.git ~/.pyenv +git clone https://github.com/pyenv/pyenv.git ~/.pyenv Pero también podemos añadir el ''bundle'' para ''Antigen'' en el fichero .zshrc y dejar que se encargue de todo. -antigen bundle mattberther/zsh-pyenv +antigen bundle mattberther/zsh-pyenv Añadimos al fichero ~/.profile: -# pyenv +# pyenv if [ -d "$HOME/.pyenv" ] ; then export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" -fi +fi Y configuramos en ~/.bashrc y en ~/.zshrc (aunque en el último no es necesario tocar nada si usamos el ''bundle'' para ''Antigen''): -if command -v pyenv 1>/dev/null 2>&1; then +if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init -)" -fi +fi Podemos probar que todo funciona con: pyenv install -l Una vez instalado hay que estudiarse [https://github.com/pyenv/pyenv/blob/master/COMMANDS.md la referencia de comandos] @@ -1526,44 +1526,44 @@ Para instalar node-red en linux necesitamos instalar primero node.jsnvm es la 0.37.0) -curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.0/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.0/install.sh | bash El script de instalación añade las siguientes lineas al fichero ~/.bashrc, nosotros las movemos al fichero ~/.profile -export NVM_DIR="$HOME/.nvm" +export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm -[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion +[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion Para comprobar la instalación usamos command -v nvm que nos devolverá nvm. which no funciona en este caso por que es un script para aplicarle source === Instalación de node.js === Ahora que tenemos nvm instalado, ya podemos instalar fácilmente la versión o versiones que queramos de node.js -nvm ls-remote # para listar las versiones disponibles -nvm install node # instala la última versión disponible +nvm ls-remote # para listar las versiones disponibles +nvm install node # instala la última versión disponible === Instalación de mosquitto === mosquitto es un ''mqtt broker'' muy sencillo y completo, aunque no es capaz de aguantar cargas grandes, para aprender es perfecto. -sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa +sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa sudo apt-get update -sudo apt install mosquitto mosquitto-clients +sudo apt install mosquitto mosquitto-clients Con esto queda el servicio instalado y funcionando (scs mosquitto o systemctl status mosquitto) Si queremos el servicio parado para arrancarlo nosotros manualmente: -scsp mosquitto.service -scd mosquitto.service +scsp mosquitto.service +scd mosquitto.service Y sin alias sería: -sudo systemctl stop mosquitto.service -sudo systemctl disable mosquitto.service +sudo systemctl stop mosquitto.service +sudo systemctl disable mosquitto.service Para arrancarlo cuando lo necesitemos le damos un ''start'' con scst mosquitto.service o sudo systemctl start mosquitto.service === Instalación de Influxdb === Seguimos el método para ubuntu: -wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add - +wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add - #source /etc/lsb-release DISTRIB_ID=ubuntu DISTRIB_CODENAME=focal @@ -1571,13 +1571,13 @@ echo "deb https://repos.influxdata.com/${DISTRIB_ID} ${DISTRIB_CODENAME} stable" apt update apt install influxdb -apt install telegraf +apt install telegraf === Instalación de node-red === Una vez instalado el node.js instalar el node-red es muy fácil -nvm use node -npm install -g --unsafe-perm node-red +nvm use node +npm install -g --unsafe-perm node-red = Aplicaciones de gráficos = == LibreCAD == @@ -1632,17 +1632,20 @@ gimp-data-extras gimp-gap gmic gimp-gmic gimp-python Para instalar los principales plugins basta con:
    sudo apt install gimp-plugin-registry
    -{| -|width="98%"| Esta sección ya no está vigente -|- -| #### resynthesizer -|- -| Descargamos el plugin desde [https://github.com/bootchk/resynthesizer aquí] y descomprimimos el fichero en ~/.config/GIMP/2.10/plug-ins -|- -| Tenemos que asegurarnos que los fichero ''python'' son ejecutables: -|- -| ~~~~ chmod 755 ~/.config/GIMP/2.10/plug-ins/*.py ~~~~ -|} + +----- + +Esta sección ya no está vigente + +==== resynthesizer ==== + +Descargamos el plugin desde [https://github.com/bootchk/resynthesizer aquí] y descomprimimos el fichero en ~/.config/GIMP/2.10/plug-ins + +Tenemos que asegurarnos que los fichero ''python'' son ejecutables: + +
    chmod 755 ~/.config/GIMP/2.10/plug-ins/*.py
    + +----- == Krita == @@ -1891,9 +1894,9 @@ Ahora en los repos donde queramos usar ssh debemos cambiar el remote: El procedimiento recomendado en la página oficial: -curl -s https://updates.signal.org/desktop/apt/keys.asc | sudo apt-key add - +curl -s https://updates.signal.org/desktop/apt/keys.asc | sudo apt-key add - echo "deb [arch=amd64] https://updates.signal.org/desktop/apt xenial main" | sudo tee -a /etc/apt/sources.list.d/signal-xenial.list -sudo apt update && sudo apt install signal-desktop +sudo apt update && sudo apt install signal-desktop ----- @@ -1906,7 +1909,7 @@ sudo apt update && sudo apt install signal-desktop Instalamos con: -sudo apt install -y wget apt-transport-https +sudo apt install -y wget apt-transport-https sudo wget -O /usr/share/keyrings/riot-im-archive-keyring.gpg https://packages.riot.im/debian/riot-im-archive-keyring.gpg @@ -1914,14 +1917,14 @@ echo "deb [signed-by=/usr/share/keyrings/riot-im-archive-keyring.gpg] https://pa sudo apt update -sudo apt install element-desktop +sudo apt install element-desktop == Lector DNI electrónico == Descargamos la aplicación en formato .deb desde [https://www.dnielectronico.es/PortalDNIe/PRF1_Cons02.action?pag=REF_1112 la página de descargas del portal DNIe]. Automáticamente nos instalará las dependecias: libccid, pcsd y pinentry-gtk2. A mayores instalamos: -sudo apt-get install pcsc-tools opensc +sudo apt-get install pcsc-tools opensc El opensc no es necesario para el DNIe, pero nos permite usar otras tarjetas. Como root ejecutamos pcsc_scan: diff --git a/out/LinuxMintUlyana.odt b/out/LinuxMintUlyana.odt index f9c15b0..498c36e 100644 Binary files a/out/LinuxMintUlyana.odt and b/out/LinuxMintUlyana.odt differ diff --git a/out/LinuxMintUlyana.pdf b/out/LinuxMintUlyana.pdf index e359d20..7b38406 100644 Binary files a/out/LinuxMintUlyana.pdf and b/out/LinuxMintUlyana.pdf differ diff --git a/out/LinuxMintUlyana.tex b/out/LinuxMintUlyana.tex index 259a1b8..0a4469c 100644 --- a/out/LinuxMintUlyana.tex +++ b/out/LinuxMintUlyana.tex @@ -1570,7 +1570,7 @@ Descomprimimos como \emph{root} en \texttt{/usr/local/} \begin{Shaded} \begin{Highlighting}[] -\FunctionTok{sudo}\NormalTok{ tar {-}C /usr/local {-}xvzf go1.15.7.linux{-}amd64.tar.gz} +\FunctionTok{sudo}\NormalTok{ tar }\AttributeTok{{-}C}\NormalTok{ /usr/local }\AttributeTok{{-}xvzf}\NormalTok{ go1.15.7.linux{-}amd64.tar.gz} \end{Highlighting} \end{Shaded} @@ -1580,14 +1580,14 @@ Añadimos al path con las siguientes lineas en \begin{Shaded} \begin{Highlighting}[] \CommentTok{\#golang} -\KeywordTok{if}\BuiltInTok{ [} \OtherTok{{-}d} \StringTok{"/usr/local/go"}\BuiltInTok{ ]}\NormalTok{ ; }\KeywordTok{then} +\ControlFlowTok{if} \BuiltInTok{[} \OtherTok{{-}d} \StringTok{"/usr/local/go"} \BuiltInTok{]} \KeywordTok{;} \ControlFlowTok{then} \BuiltInTok{export} \VariableTok{GOROOT=}\StringTok{"/usr/local/go"} \VariableTok{PATH=}\StringTok{"}\VariableTok{$PATH}\StringTok{:}\VariableTok{$GOROOT}\StringTok{/bin"} -\KeywordTok{fi} -\KeywordTok{if}\BuiltInTok{ [} \OtherTok{{-}d} \StringTok{"}\VariableTok{$HOME}\StringTok{/work/development/gocode"}\BuiltInTok{ ]}\NormalTok{ ; }\KeywordTok{then} +\ControlFlowTok{fi} +\ControlFlowTok{if} \BuiltInTok{[} \OtherTok{{-}d} \StringTok{"}\VariableTok{$HOME}\StringTok{/work/development/gocode"} \BuiltInTok{]} \KeywordTok{;} \ControlFlowTok{then} \BuiltInTok{export} \VariableTok{GOPATH=}\StringTok{"}\VariableTok{$HOME}\StringTok{/work/development/gocode"} \VariableTok{PATH=}\StringTok{"}\VariableTok{$PATH}\StringTok{:}\VariableTok{$GOPATH}\StringTok{/bin"} -\KeywordTok{fi} +\ControlFlowTok{fi} \end{Highlighting} \end{Shaded} @@ -1735,10 +1735,10 @@ Instalamos los pre-requisitos: \begin{Shaded} \begin{Highlighting}[] \FunctionTok{sudo}\NormalTok{ apt{-}get update} -\FunctionTok{sudo}\NormalTok{ apt{-}get install {-}{-}no{-}install{-}recommends make build{-}essential }\KeywordTok{\textbackslash{}} -\ExtensionTok{libssl{-}dev}\NormalTok{ zlib1g{-}dev libbz2{-}dev libreadline{-}dev libsqlite3{-}dev }\KeywordTok{\textbackslash{}} -\FunctionTok{wget}\NormalTok{ curl llvm libncurses5{-}dev xz{-}utils tk{-}dev }\KeywordTok{\textbackslash{}} -\ExtensionTok{libxml2{-}dev}\NormalTok{ libxmlsec1{-}dev libffi{-}dev liblzma{-}dev} +\FunctionTok{sudo}\NormalTok{ apt{-}get install }\AttributeTok{{-}{-}no{-}install{-}recommends}\NormalTok{ make build{-}essential }\DataTypeTok{\textbackslash{}} +\NormalTok{libssl{-}dev zlib1g{-}dev libbz2{-}dev libreadline{-}dev libsqlite3{-}dev }\DataTypeTok{\textbackslash{}} +\NormalTok{wget curl llvm libncurses5{-}dev xz{-}utils tk{-}dev }\DataTypeTok{\textbackslash{}} +\NormalTok{libxml2{-}dev libxmlsec1{-}dev libffi{-}dev liblzma{-}dev} \end{Highlighting} \end{Shaded} @@ -1764,10 +1764,10 @@ Añadimos al fichero \texttt{\textasciitilde{}/.profile}: \begin{Shaded} \begin{Highlighting}[] \CommentTok{\# pyenv} -\KeywordTok{if}\BuiltInTok{ [} \OtherTok{{-}d} \StringTok{"}\VariableTok{$HOME}\StringTok{/.pyenv"}\BuiltInTok{ ]}\NormalTok{ ; }\KeywordTok{then} +\ControlFlowTok{if} \BuiltInTok{[} \OtherTok{{-}d} \StringTok{"}\VariableTok{$HOME}\StringTok{/.pyenv"} \BuiltInTok{]} \KeywordTok{;} \ControlFlowTok{then} \BuiltInTok{export} \VariableTok{PYENV\_ROOT=}\StringTok{"}\VariableTok{$HOME}\StringTok{/.pyenv"} \BuiltInTok{export} \VariableTok{PATH=}\StringTok{"}\VariableTok{$PYENV\_ROOT}\StringTok{/bin:}\VariableTok{$PATH}\StringTok{"} -\KeywordTok{fi} +\ControlFlowTok{fi} \end{Highlighting} \end{Shaded} @@ -1777,9 +1777,9 @@ tocar nada si usamos el \emph{bundle} para \emph{Antigen}): \begin{Shaded} \begin{Highlighting}[] -\KeywordTok{if} \BuiltInTok{command}\NormalTok{ {-}v pyenv }\OperatorTok{1\textgreater{}}\NormalTok{/dev/null }\OperatorTok{2\textgreater{}\&1}\KeywordTok{;} \KeywordTok{then} - \BuiltInTok{eval} \StringTok{"}\VariableTok{$(}\ExtensionTok{pyenv}\NormalTok{ init {-}}\VariableTok{)}\StringTok{"} -\KeywordTok{fi} +\ControlFlowTok{if} \BuiltInTok{command} \AttributeTok{{-}v}\NormalTok{ pyenv }\DecValTok{1}\OperatorTok{\textgreater{}}\NormalTok{/dev/null }\DecValTok{2}\OperatorTok{\textgreater{}\&}\DecValTok{1}\KeywordTok{;} \ControlFlowTok{then} + \BuiltInTok{eval} \StringTok{"}\VariableTok{$(}\ExtensionTok{pyenv}\NormalTok{ init }\AttributeTok{{-}}\VariableTok{)}\StringTok{"} +\ControlFlowTok{fi} \end{Highlighting} \end{Shaded} @@ -1822,8 +1822,8 @@ Revisar \toprule \endhead \textbf{NOTA}: El siguiente paso ya no parece necesario, las -alternativas\tabularnewline -se han actualizado con la instalación del \emph{neovim}.\tabularnewline +alternativas \\ +se han actualizado con la instalación del \emph{neovim}. \\ \bottomrule \end{longtable} @@ -1885,10 +1885,10 @@ porn comando ejecutando: \texttt{:PlugInstall} \begin{longtable}[]{@{}l@{}} \toprule \endhead -\textbf{Nota}:\tabularnewline +\textbf{Nota}: \\ Solo hay que instalar uno de los dos o \emph{dein} o \emph{plug-vim}. Yo -uso\tabularnewline -\emph{plug-vim} así que esto es sólo una referencia.\tabularnewline +uso \\ +\emph{plug-vim} así que esto es sólo una referencia. \\ \bottomrule \end{longtable} @@ -2708,7 +2708,7 @@ Para ello ejecutamos el siguiente comando (la versión actual de \begin{Shaded} \begin{Highlighting}[] -\ExtensionTok{curl}\NormalTok{ {-}o{-} https://raw.githubusercontent.com/nvm{-}sh/nvm/v0.37.0/install.sh }\KeywordTok{|} \FunctionTok{bash} +\ExtensionTok{curl} \AttributeTok{{-}o{-}}\NormalTok{ https://raw.githubusercontent.com/nvm{-}sh/nvm/v0.37.0/install.sh }\KeywordTok{|} \FunctionTok{bash} \end{Highlighting} \end{Shaded} @@ -2719,8 +2719,8 @@ El script de instalación añade las siguientes lineas al fichero \begin{Shaded} \begin{Highlighting}[] \BuiltInTok{export} \VariableTok{NVM\_DIR=}\StringTok{"}\VariableTok{$HOME}\StringTok{/.nvm"} -\BuiltInTok{[} \OtherTok{{-}s} \StringTok{"}\VariableTok{$NVM\_DIR}\StringTok{/nvm.sh"}\BuiltInTok{ ]} \KeywordTok{\&\&}\NormalTok{ \textbackslash{}}\BuiltInTok{.} \StringTok{"}\VariableTok{$NVM\_DIR}\StringTok{/nvm.sh"}\NormalTok{ \# }\ExtensionTok{This}\NormalTok{ loads nvm} -\BuiltInTok{[} \OtherTok{{-}s} \StringTok{"}\VariableTok{$NVM\_DIR}\StringTok{/bash\_completion"}\BuiltInTok{ ]} \KeywordTok{\&\&}\NormalTok{ \textbackslash{}}\BuiltInTok{.} \StringTok{"}\VariableTok{$NVM\_DIR}\StringTok{/bash\_completion"}\NormalTok{ \# }\ExtensionTok{This}\NormalTok{ loads nvm bash\_completion} +\BuiltInTok{[} \OtherTok{{-}s} \StringTok{"}\VariableTok{$NVM\_DIR}\StringTok{/nvm.sh"} \BuiltInTok{]} \KeywordTok{\&\&} \ExtensionTok{\textbackslash{}.} \StringTok{"}\VariableTok{$NVM\_DIR}\StringTok{/nvm.sh"} \CommentTok{\# This loads nvm} +\BuiltInTok{[} \OtherTok{{-}s} \StringTok{"}\VariableTok{$NVM\_DIR}\StringTok{/bash\_completion"} \BuiltInTok{]} \KeywordTok{\&\&} \ExtensionTok{\textbackslash{}.} \StringTok{"}\VariableTok{$NVM\_DIR}\StringTok{/bash\_completion"} \CommentTok{\# This loads nvm bash\_completion} \end{Highlighting} \end{Shaded} @@ -2737,8 +2737,8 @@ la versión o versiones que queramos de \texttt{node.js} \begin{Shaded} \begin{Highlighting}[] -\ExtensionTok{nvm}\NormalTok{ ls{-}remote \# para listar las versiones disponibles} -\ExtensionTok{nvm}\NormalTok{ install node \# instala la última versión disponible} +\ExtensionTok{nvm}\NormalTok{ ls{-}remote }\CommentTok{\# para listar las versiones disponibles} +\ExtensionTok{nvm}\NormalTok{ install node }\CommentTok{\# instala la última versión disponible} \end{Highlighting} \end{Shaded} @@ -2791,7 +2791,7 @@ Seguimos el método para ubuntu: \begin{Shaded} \begin{Highlighting}[] -\FunctionTok{wget}\NormalTok{ {-}qO{-} https://repos.influxdata.com/influxdb.key }\KeywordTok{|} \FunctionTok{sudo}\NormalTok{ apt{-}key add {-}} +\FunctionTok{wget} \AttributeTok{{-}qO{-}}\NormalTok{ https://repos.influxdata.com/influxdb.key }\KeywordTok{|} \FunctionTok{sudo}\NormalTok{ apt{-}key add }\AttributeTok{{-}} \CommentTok{\#source /etc/lsb{-}release} \VariableTok{DISTRIB\_ID=}\NormalTok{ubuntu} \VariableTok{DISTRIB\_CODENAME=}\NormalTok{focal} @@ -2813,7 +2813,7 @@ muy fácil \begin{Shaded} \begin{Highlighting}[] \ExtensionTok{nvm}\NormalTok{ use node} -\ExtensionTok{npm}\NormalTok{ install {-}g {-}{-}unsafe{-}perm node{-}red} +\ExtensionTok{npm}\NormalTok{ install }\AttributeTok{{-}g} \AttributeTok{{-}{-}unsafe{-}perm}\NormalTok{ node{-}red} \end{Highlighting} \end{Shaded} @@ -2897,32 +2897,24 @@ Para instalar los principales plugins basta con: sudo apt install gimp-plugin-registry \end{verbatim} -\begin{longtable}[]{@{}l@{}} -\toprule -\endhead -\begin{minipage}[t]{0.96\columnwidth}\raggedright -Esta sección ya no está vigente\strut -\end{minipage}\tabularnewline -\begin{minipage}[t]{0.96\columnwidth}\raggedright -\#\#\#\# resynthesizer\strut -\end{minipage}\tabularnewline -\begin{minipage}[t]{0.96\columnwidth}\raggedright +\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center} + +Esta sección ya no está vigente + +\hypertarget{resynthesizer}{% +\paragraph{resynthesizer}\label{resynthesizer}} + Descargamos el plugin desde \href{https://github.com/bootchk/resynthesizer}{aquí} y descomprimimos -el fichero en -\texttt{\textasciitilde{}/.config/GIMP/2.10/plug-ins}\strut -\end{minipage}\tabularnewline -\begin{minipage}[t]{0.96\columnwidth}\raggedright -Tenemos que asegurarnos que los fichero \emph{python} son -ejecutables:\strut -\end{minipage}\tabularnewline -\begin{minipage}[t]{0.96\columnwidth}\raggedright -\textasciitilde\textasciitilde\textasciitilde\textasciitilde{} chmod 755 -\textasciitilde/.config/GIMP/2.10/plug-ins/*.py -\textasciitilde\textasciitilde\textasciitilde\textasciitilde{}\strut -\end{minipage}\tabularnewline -\bottomrule -\end{longtable} +el fichero en \texttt{\textasciitilde{}/.config/GIMP/2.10/plug-ins} + +Tenemos que asegurarnos que los fichero \emph{python} son ejecutables: + +\begin{verbatim} +chmod 755 ~/.config/GIMP/2.10/plug-ins/*.py +\end{verbatim} + +\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center} \hypertarget{krita}{% \subsection{Krita}\label{krita}} @@ -3352,8 +3344,8 @@ El procedimiento recomendado en la página oficial: \begin{Shaded} \begin{Highlighting}[] -\ExtensionTok{curl}\NormalTok{ {-}s https://updates.signal.org/desktop/apt/keys.asc }\KeywordTok{|} \FunctionTok{sudo}\NormalTok{ apt{-}key add {-}} -\BuiltInTok{echo} \StringTok{"deb [arch=amd64] https://updates.signal.org/desktop/apt xenial main"} \KeywordTok{|} \FunctionTok{sudo}\NormalTok{ tee {-}a /etc/apt/sources.list.d/signal{-}xenial.list} +\ExtensionTok{curl} \AttributeTok{{-}s}\NormalTok{ https://updates.signal.org/desktop/apt/keys.asc }\KeywordTok{|} \FunctionTok{sudo}\NormalTok{ apt{-}key add }\AttributeTok{{-}} +\BuiltInTok{echo} \StringTok{"deb [arch=amd64] https://updates.signal.org/desktop/apt xenial main"} \KeywordTok{|} \FunctionTok{sudo}\NormalTok{ tee }\AttributeTok{{-}a}\NormalTok{ /etc/apt/sources.list.d/signal{-}xenial.list} \FunctionTok{sudo}\NormalTok{ apt update }\KeywordTok{\&\&} \FunctionTok{sudo}\NormalTok{ apt install signal{-}desktop} \end{Highlighting} \end{Shaded} @@ -3373,9 +3365,9 @@ Instalamos con: \begin{Shaded} \begin{Highlighting}[] -\FunctionTok{sudo}\NormalTok{ apt install {-}y wget apt{-}transport{-}https} +\FunctionTok{sudo}\NormalTok{ apt install }\AttributeTok{{-}y}\NormalTok{ wget apt{-}transport{-}https} -\FunctionTok{sudo}\NormalTok{ wget {-}O /usr/share/keyrings/riot{-}im{-}archive{-}keyring.gpg https://packages.riot.im/debian/riot{-}im{-}archive{-}keyring.gpg} +\FunctionTok{sudo}\NormalTok{ wget }\AttributeTok{{-}O}\NormalTok{ /usr/share/keyrings/riot{-}im{-}archive{-}keyring.gpg https://packages.riot.im/debian/riot{-}im{-}archive{-}keyring.gpg} \BuiltInTok{echo} \StringTok{"deb [signed{-}by=/usr/share/keyrings/riot{-}im{-}archive{-}keyring.gpg] https://packages.riot.im/debian/ default main"} \KeywordTok{|} \FunctionTok{sudo}\NormalTok{ tee /etc/apt/sources.list.d/riot{-}im.list} @@ -3797,7 +3789,7 @@ menulibre}\label{solucionar-problemas-de-menuxfas-duplicados-usando-menulibre}} \begin{longtable}[]{@{}l@{}} \toprule \endhead -\textbf{Nota}: Ya no uso \emph{MenuLibre}\tabularnewline +\textbf{Nota}: Ya no uso \emph{MenuLibre} \\ \bottomrule \end{longtable} diff --git a/src/500_graph.md b/src/500_graph.md index 9d6f70a..70c736f 100644 --- a/src/500_graph.md +++ b/src/500_graph.md @@ -74,23 +74,6 @@ Para instalar los principales plugins basta con: sudo apt install gimp-plugin-registry ~~~~ ----------------------------------------------------------------------- -Esta sección ya no está vigente - -#### resynthesizer - -Descargamos el plugin desde -[aquí](https://github.com/bootchk/resynthesizer) y descomprimimos el -fichero en `~/.config/GIMP/2.10/plug-ins` - -Tenemos que asegurarnos que los fichero _python_ son ejecutables: - -~~~~ -chmod 755 ~/.config/GIMP/2.10/plug-ins/*.py -~~~~ - ----------------------------------------------------------------------- - ## Krita La versión disponible en orígenes de software está bastante por detrás