Debian para desarrolladores
1. Preparando el sistema, actualizacion e instalacion de los paquetes esenciales:
sudo apt update && sudo apt upgrade -y
sudo apt install build-essential git -y
2. Librerias para C/C++
sudo apt install libssl-dev zlib1g-dev libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev libgdbm-dev libdb5.3-dev libbz2-dev
Autotools herramientas para ayudar en el codigo fuente
sudo apt install autoconf automake libtool cmake
Testing frameworks:
sudo apt install libcunit1-dev # CUnit
sudo apt install libgtest-dev # Google Test
3. Python
sudo apt install python3 python3-dev python3-pip python3-venv
4. Java
Aqui en Debian 13 no existe java17 que a dia de hoy es el estandar en programacion en java por lo que he optado por instalar los precompilados de java de temurin. Para ello instalamos los paquetes necesarios:
apt install -y wget apt-transport-https gpg
Ahora lo que hacemos es anadir la clave del repositorio adoptium
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null
Anadimos el repositorio al sources.list
echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | sudo tee /etc/apt/sources.list.d/adoptium.list
Instalamos el paquete:
sudo apt update # update if you haven't already
sudo apt install temurin-17-jdk
Elegimos el entorno de java con el comando:
sudo update-alternatives --config java
Elegimos la opcion:
Existen 2 opciones para la alternativa java (que provee /usr/bin/java).
Selección Ruta Prioridad Estado
------------------------------------------------------------
0 /usr/lib/jvm/java-21-openjdk-amd64/bin/java 2111 modo automático
1 /usr/lib/jvm/java-21-openjdk-amd64/bin/java 2111 modo manual
* 2 /usr/lib/jvm/temurin-17-jdk-amd64/bin/java 1711 modo manual
Pulse <Intro> para mantener el valor por omisión [*] o pulse un número de selección:
Tambien podemos anadir la ejecucion del entorno de java como una variable de entorno para bash o zsh:
echo 'export JAVA_HOME=/usr/lib/jvm/temurin-17-jdk-amd64' >> ~/.bashrc
source ~/.bashrc
echo 'export JAVA_HOME=/usr/lib/jvm/temurin-17-jdk-amd64' >> ~/.zshrc
source ~/.zshrc
Podemos comprobar la version de java:
java --version
echo $JAVA_HOME
Testing framworks:
sudo apt install junit
5. Node.js & npm: Mas facil:
sudo apt install npm nodejs
Alternativa, node por nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
# Descargamos e instalamos la ultima version lts
LTS_VERSION=$(nvm ls-remote | grep -i latest | grep -Po 'v\d+\.\d+\.\d+' | tail -n 1)
nvm install "$LTS_VERSION"
nvm use "$LTS_VERSION"
6. Docker Instalacion:
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
udo apt install docker-compose-plugin
Habilitamos docker y anadimos al usuario al grupo:
sudo systemctl enable docker
sudo usermod -aG docker $USER
7. IDE
Visual Studio Code
sudo apt install software-properties-common apt-transport-https
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/
sudo sh -c 'echo "deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/packages.microsoft.gpg] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
sudo apt update
sudo apt install code
Neovim a lo karlinux
sudo apt install neovim
# Movemos los archivos de configuracion si los hubiera
mv ~/.config/nvim{,.bak}
mv ~/.local/share/nvim{,.bak}
mv ~/.local/state/nvim{,.bak}
mv ~/.cache/nvim{,.bak}
# Copiamos la configuracion de neovim
git clone https://github.com/CarlosMolinesPastor/nvim.git ~/.config/nvim
Opcionalmente instalamos ollama con una IA pequena en local:
curl -fsSL https://ollama.com/install.sh | sh
ollama run qwen2.5-coder:1.5b
Intellij community/ultimate
curl -s https://s3.eu-central-1.amazonaws.com/jetbrains-ppa/0xA6E8698A.pub.asc | gpg --dearmor | sudo tee /usr/share/keyrings/jetbrains-ppa-archive-keyring.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/jetbrains-ppa-archive-keyring.gpg] http://jetbrains-ppa.s3-website.eu-central-1.amazonaws.com any main" | sudo tee /etc/apt/sources.list.d/jetbrains-ppa.list > /dev/null
sudo apt update
sudo apt install -y intellij-idea-community
# sudo apt install -y intellij-idea-ultimate
8. SHELL
Instalacion de zsh un shell diferente a bash que ofrece alguna que otra mejora en plugins y versatilidad, dependencias:
sudo apt install zsh fzf ripgrep lsd bat
Cambio de shell, probablemente tendremos que reiniciar la sesion
sudo chsh -s /usr/bin/zsh
Instalamos starship
curl -sS https://starship.rs/install.sh | sh
starship preset pastel-powerline -o ~/.config/starship.toml
Configuracion propia
sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/Aloxaf/fzf-tab ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/fzf-tab
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install --key-bindings --completion --no-update-rc
cd ~
git clone https://github.com/CarlosMolinesPastor/zsh.git
cp ~/zsh/.zshrc ~/.zshrc
source .zshrc
9. COMPROBACION DE LOS ENTORNOS
gcc --version
python3 --version
java --version
node --version
docker --version
git --version
Con todo esto tendriamos un punto de partida para poder tener una instalacion de debian para poder empezar a desarrollar con cierta tranquilidad. Espero haber ayudado a alquien.
Hasta la proxima bears!!!!!!!