You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

17 KiB

Desarrollo software

Paquetes esenciales

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


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.

Configuración básica de git:

git config --global ui.color auto
git config --global user.name "Pepito Pérez"
git config --global user.email "pperez@mikasa.com"

git config --global alias.cl clone

git config --global alias.st "status -sb"
git config --global alias.last "log -1 --stat"
git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %Cblue<%an>%Creset' --abbrev-commit --date=relative --all"
git config --global alias.dc "diff --cached"

git config --global alias.unstage "reset HEAD --"

git config --global alias.ci commit
git config --global alias.ca "commit -a"

git config --global alias.ri "rebase -i"
git config --global alias.ria "rebase -i --autosquash"
git config --global alias.fix "commit --fixup"
git config --global alias.squ "commit --squash"

git config --global alias.cp cherry-pick
git config --global alias.co checkout
git config --global alias.br branch
git config --global core.editor emacs

Emacs

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.

D-apt e instalación de programas

Configurado d-apt, instalados todos los programas incluidos

sudo wget http://master.dl.sourceforge.net/project/d-apt/files/d-apt.list -O /etc/apt/sources.list.d/d-apt.list
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:

/usr/include/dmd/druntime/import
/usr/include/dmd/phobos

Podemos probarlo con:

dcd-server &
echo | dcd-client --search toImpl

gdc

Instalado con:

sudo aptitude install gdc

ldc

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

  • d-mode
  • flymake-d
  • flycheck
  • flycheck-dmd-dub
  • flychek-d-unittest
  • auto-complete (desde melpa)
  • ac-dcd

Referencias

C, C++

Instalación de Gnu Global

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)

No podemos instalar Global desde los repos de Ubuntu, está muy anticuado y genera bases de datos enormes y lentas. Tendremos que compilarlo.

Nos bajamos las fuentes del programa desde la página oficial En el momento de escribir 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

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 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)


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 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

Para actualizar la instalación: rustup update

RLS

Seguimos las instrucciones de la página oficial de LSP y de RLS

rustup update
rustup component add rls rust-analysis rust-src

Algunas utilidades de sistema escritas en Rust

Instalamos:

cargo install tealdeer # tldr tldr
cargo install du-dust  # tldr dust
cargo install fd-find  # tldr fd
cargo install exa      # tldr exa
cargo install tokei    # tldr tokei
cargo install gitui    # gitui --help
cargo install ripgrep  # tldr rg

golang

Bajamos el paquete con la última versión desde la página oficial.

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:

#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

golint

go get -u golang.org/x/lint/golint

Processing

Bajamos el paquete de la 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.

La última versión incorpora varios modos de trabajo, he descargado el modo Python para probarlo.

openFrameworks

Nos bajamos los fuentes para linux 64bits desde la página web del proyecto, y las descomprimimos en un directorio para proceder a compilarlas.

No hay más que seguir las instrucciones de instalación para linux.

La instalación no es demasiado intrusiva si tienes Ubuntu 18 o mayor y una versión reciente del gcc.

En la primera pregunta que nos hace es necesario contestar que no. De lo 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]

No te olvides de compilar también el Project Generator.

Python

De partida tenemos instalado dos versiones: python2 y python3

Parece que Linux Mint no viene con nigún python por defecto. Si invocamos el comando python el sistema nos indicará que no existe.

Para escoger un python por defecto tenemos dos paquetes que podemos instalar: python-is-python2 y python-is-python3

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

Aquí tenemos la referencia de comandos de virtualenvwrapper.

Instalación de bpython y ptpython

bpython instalado desde repos sudo apt install bpython bpython3

ptpython instalado en un virtualenv para probarlo

Jupyter

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:

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

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:

# 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

Podemos probar que todo funciona con: pyenv install -l

Una vez instalado hay que estudiarse la referencia de comandos

poetry

Instalamos con:

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python3 -

Dejamos la activación solo en el fichero ~ /.profile, añadiendo las siguientes lineas:

# poetry
if [ -d "$HOME/.poetry"] ; then
    PATH="$HOME/.poetry/bin:$PATH"
fi

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 descargar el appimage desde la página web

Es de esperar que alguna vez vuelvan a tener el neovim disponible en los repos de la aplicación:

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.

mkvirtualenv -p /usr/bin/python3 neovim3
sudo pip install --upgrade neovim
deactivate

Revisar esto


NOTA: El siguiente paso ya no parece necesario, las alternativas se han actualizado con la instalación del neovim.

Para actualizar las alternativas:

sudo update-alternatives --install /usr/bin/vi vi /usr/bin/nvim 60
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:

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):

" Specify a directory for plugins
" - For Neovim: ~/.local/share/nvim/plugged
" - Avoid using standard Vim directory names like 'plugin'
call plug#begin('~/.local/share/nvim/plugged')

if has('nvim')
  Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
else
  Plug 'Shougo/deoplete.nvim'
  Plug 'roxma/nvim-yarp'
  Plug 'roxma/vim-hug-neovim-rpc'
endif

Plug 'deoplete-plugins/deoplete-jedi'

" Initialize plugin system
call plug#end()

let g:deoplete#enable_at_startup = 1

" set python enviroments
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


Nota: 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

if dein#load_state('~/.config/nvim/dein')
  call dein#begin('~/.config/nvim/dein')

  call dein#add('~/.config/nvim/dein/repos/github.com/Shougo/dein.vim')
  call dein#add('Shougo/deoplete.nvim')
  call dein#add('Shougo/denite.nvim')
  if !has('nvim')
    call dein#add('roxma/nvim-yarp')
    call dein#add('roxma/vim-hug-neovim-rpc')
  endif

  call dein#end()
  call dein#save_state()
endif

filetype plugin indent on
syntax enable

Firefox developer edition

El rollo de siempre, descargar desde la página web descomprimir en ~/apps y crear un lanzador.

Navegadores cli

Herramientas útiles para depuración web

sudo apt install httpie links

MariaDB

Instalamos la última estable para Ubuntu Fossa desde los repos oficiales.

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:

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):

# MariaDB 10.5 [Stable] repository list - created  UTC
# https://mariadb.org/download-test/
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:

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:

sudo mariadb -u root

Ojo, hay que hacer sudo, el comando mariadb -u root no funciona.

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.

Si queremos pararlo y que no se arranque automáticamente al arrancar el ordenador:

sudo systemctl stop mariadb
sudo systemctl disable mariadb

Squirrel SQL Client

Bajamos el zip de estándar desde la página web de Squirrel (yo prefiero no usar el instalador)

Como de costumbre descomprimimos en ~/apps y creamos una entrada en nuestro menú de aplicaciones.

Nos descargamos también el java connector para MariaDB. Desde la 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

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 página web

Instalamos con gdebi (basta con clicar sobre el fichero .deb)

Octave

Instalado desde flatpak

sudo flatpak install flathub org.octave.Octave