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.

16 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

Processing

Bajamos los paquetes de las respectivas páginas 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: python y python3

python -V
Python 2.7.12

python3 -V
Python 3.5.2

Paquetes de desarrollo

Para que no haya problemas a la hora de instalar paquetes en el futuro conviene que instalemos los paquetes de desarrollo:

sudo apt install python-dev
sudo apt install python3-dev

pip, virtualenv, virtualenvwrapper, virtualfish

Los he instalado a nivel de sistema.

pip es un gestor de paquetes para Python que facilita la instalación de librerías y utilidades.

Para poder usar los entornos virtuales instalaremos también virtualenv.

Instalamos los dos desde aptitude:

sudo apt install python-pip python-virtualenv virtualenv python3-pip

virtualenv es una herramienta imprescindible en Python, pero da un poco de trabajo, así que se han desarrollado algunos frontends para simplificar su uso, para bash y zsh usaremos virtualenvwrapper, y para fish el virtualfish. Como veremos son todos muy parecidos.

Instalamos el virtualwrapper:

sudo apt install virtualenvwrapper -y

Para usar virtualenvwrapper tenemos que hacer:

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

O añadir esa linea a nuestros ficheros .bashrc y/o .zshrc

Definimos la variable de entorno WORKON_HOME para que apunte al directorio por defecto, ~/.local/share/virtualenvs. En ese directorio es donde se guardarán nuestros entornos virtuales.

En el fichero .profile añadimos:

# WORKON_HOME for virtualenvwrapper
if [ -d "$HOME/.local/share/virtualenvs" ] ; then
    WORKON_HOME="$HOME/.local/share/virtualenvs"
fi

Aquí tenemos la referencia de comandos de virtualenvwrapper

Por último, si queremos tener utilidades parecidas en nuestro fish shell instalamos virtualfish:

sudo pip install virtualfish

Aquí tenemos la documentación de virtualfish y la descripción de todos los comandos y plugins disponibles.

pipenv

No lo he instalado, pero en caso de instalación mejor lo instalamos a nivel de usuario con:

pip install --user pipenv

Instalación del Python 3.8 (última disponible)

Ejecutamos:

sudo apt install python3.8 python3.8-dev python3.8-venv

Instalación de bpython y ptpython

bpython instalado desde repos sudo apt install bpython bpython3

ptpython instalado en un virtualenv para probarlo

Emacs para programar python

elpy: Emacs Python Development Enviroment

Para instalar elpy necesitamos intalar previamente venv el nuevo gestor de virtualenvs en Python 3.:

sudo apt install python3-venv

En el fichero ~/.emacs necesitamos activar el módulo elpy:

;;----------------------------------------------------------------------
;; elpy
(elpy-enable)

En cuanto activemos elpy tendremos autocompletado del código y errores sintácticos. Merece la pena leerse toda la documentación

Flycheck

Para tener análisis sintáctico en tiempo real mientras estamos programando:

Añadimos a nuestro fichero ~/.emacs:

;; Enable Flycheck

(when (require 'flycheck nil t)

  (setq elpy-modules (delq 'elpy-module-flymake elpy-modules))

  (add-hook 'elpy-mode-hook 'flycheck-mode))

Formateado

Usando autopep8 o black tendremos autoformateado del código como paso previo a salvar el mismo en disco. (Yo aún no he probado black)

# and autopep8 for automatic PEP8 formatting
sudo apt install python-autopep8
# and yapf for code formatting (innecesario)
# sudo apt install yapf yapf3

Y añadimos la sección siguiente a nuestro fichero ~/.emacs

;; Enable autopep8

(require 'py-autopep8)

(add-hook 'elpy-mode-hook 'py-autopep8-enable-on-save)

jedi

Jedi le da ciertos superpoderes al autocompletado visualizando la documentación de cada propuesta de autocompletado.

Instalamos previamente:

sudo apt install python-jedi python3-jedi
# flake8 for code checks
sudo apt install flake8 python-flake8 python3-flake8

Y añadimos la sección en el fichero ~/.emacs:

;;----------------------------------------------------------------------
;; elpy
(elpy-enable)
(setq elpy-rpc-backend "jedi")

(add-hook 'python-mode-hook 'jedi:setup)
(setq jedi:complete-on-dot t)

Desde Emacs ejecutamos: alt-x jedi:install-server

Jupyter

Una instalación para pruebas.

mkvirtualenv -p /usr/bin/python3 jupyter
python -m pip install jupyter

neovim

Vamos a probar neovim:

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 Bionic desde los repos oficiales.

Primero añadimos los reports

Añadimos la clave de firma:

sudo apt-get install software-properties-common
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://ftp.icm.edu.pl/pub/unix/database/mariadb/repo/10.4/ubuntu bionic main'

O podemos crear un fichero /etc/apt/apt.sources.list.d/MariaDB con el siguiente contenido (yo dejo las fuentes comentadas):

# MariaDB 10.4 repository list - created 2020-01-26 10:37 UTC
# http://downloads.mariadb.org/mariadb/repositories/
deb [arch=amd64,arm64,ppc64el] http://ftp.ubuntu-tw.org/mirror/mariadb/repo/10.4/ubuntu bionic main
# deb-src http://ftp.ubuntu-tw.org/mirror/mariadb/repo/10.4/ubuntu bionic 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

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 bionic-cran35/'
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