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