# Linux Debian 개발환경 설정 가이드

- Author: @baealex
- Published: 2020-05-15
- Updated: 2023-03-07
- Source: http://blex.me/@baealex/ubuntudebian-%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95
- Tags: 리눅스

---

## IDE

---

#### Visual Studio Code

- [deb 패키지](https://go.microsoft.com/fwlink/?LinkID=760868)

<br>

## C++

---

#### build-essential

```shell
sudo apt-get install -y gcc libc6-dev build-essential libglu1-mesa-dev
```

#### Qt Creator

- [QtCreator 다운로드](https://www.qt.io/download-qt-installer?hsCtaTracking=9f6a2170-a938-42df-a8e2-a9f0b1d6cdce%7C6cb0de4f-9bb5-4778-ab02-bfb62735f3e5)

```shell
./qt...online.run
```

<br>

## C#

---

#### .Net Core

- https://docs.microsoft.com/ko-kr/dotnet/core/linux-prerequisites?tabs=netcore2x

#### Unity 3D

- [deb 패키지](https://forum.unity.com/threads/unity-on-linux-release-notes-and-known-issues.350256/page-2#post-3386889)
- [Mono Kit](https://www.mono-project.com/download/stable/#download-lin-ubuntu)

<br>

## Python

---

#### pyenv

```shell
sudo apt-get install -y build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev git
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init --path)"' >> ~/.bashrc
CFLAGS=-I/usr/include/openssl
LDFLAGS=-L/usr/lib64
exec "$SHELL"
```

```shell
pyenv install -l # 설치 가능한 버전 확인
pyenv install 3.11.0 # 버전 설치
pyenv versions # 설치된 버전 확인
pyenv global 3.11.0 # 버전 사용
python --version
```

#### Tensorflow

```shell
pip install -U --user pip six numpy wheel mock
pip install -U --user keras_applications==1.0.5 --no-deps
pip install -U --user keras_preprocessing==1.0.3 --no-deps
pip install tensorflow
```

```shell
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-IaVeRg/termcolor/
```

만약 위와같은 오류가 발생하면 **아래의 명령**을 입력한다.

```shell
pip install --upgrade setuptools
```

텐서플로우가 정상적으로 작동하는지 간단히 확인하기 위해서 `tensor.py`를 작성해 보았다.

```python
import tensorflow as tf

hello = tf.constant('hello tensorflow')
sess = tf.Session()
print(sess.run(hello))

a = tf.constant(10)
b = tf.constant(32)
print(sess.run(a + b))
```

```shell
python tensor.py
```

```
hello tensorflow
42
```

<br>

## Ruby

---

#### rbenv

```shell
sudo apt-get install -y build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev git
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
```

```shell
rbenv install -l # 설치 가능한 버전 확인
rbenv install 3.1.2 # 버전 설치
rbenv versions # 설치된 버전 확인
rbenv global 3.1.2 # 버전 사용
ruby -v
```

<br>

## JavaScript

---

#### Node (nvm)

```shell
sudo apt-get install -y build-essential libssl-dev curl
curl https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
source ~/.bashrc
```

```shell
nvm install 18.14.2 # 버전 설치
nvm version # 설치된 버전 확인
nvm use 18.14.2 # 버전 사용
node -v
```

#### Deno

```shell
sudo apt-get install unzip -y
curl -fsSL https://deno.land/x/install/install.sh | sh
echo 'export DENO_INSTALL="$HOME/.deno"' >> ~/.bashrc
echo 'export PATH="$DENO_INSTALL/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
```

```
deno --version
```

<br>

## Rust

---

#### Rustup

```shell
sudo apt-get install build-essential

curl https://sh.rustup.rs -sSf | sh
source $HOME/.cargo/env
export PATH="$HOME/.cargo/bin:$PATH"
rustc --version
```

업데이트는 `rustup update`로 가능 아래 두 명령어는 `bashrc`나 `profile`에 등록해 두는게 편하다.

```shell
source $HOME/.cargo/env
export PATH="$HOME/.cargo/bin:$PATH"
```

<br>

## Java

---

#### Android Studio

- [Android Studio](https://developer.android.com/studio/?hl=ko#downloads)

`/dev/kvm permission denied.` 오류가 발생할 경우

```shell
sudo apt-get install qemu-kvm
sudo adduser <username> kvm
sudo chown <username> /dev/kvm
```

<br>

## Shell

---

#### Git Branch

```bash
vi ~/.bashrc
```

```bash
parse_git_branch()
{
   if git rev-parse --git-dir >/dev/null 2>&1
   then
      gitver=$(git branch 2>/dev/null| sed -n '/^\*/s/^\* //p')
   else
      return 0
   fi
   echo -e \($gitver\)
}

...

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$(parse_git_branch) \$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(parse_git_branch) \$ '
fi
```

#### LoadEnv

```bash
vi ~/.bashrc
```

```bash
loadEnv() {
  local envFile="${1?Missing environment file}"
  local environmentAsArray variableDeclaration
  mapfile environmentAsArray < <(
    grep --invert-match '^#' "${envFile}" \
      | grep --invert-match '^\s*$'
  ) # Uses grep to remove commented and blank lines
  for variableDeclaration in "${environmentAsArray[@]}"; do
    export "${variableDeclaration//[$'\r\n']}" # The substitution removes the line breaks
  done
}
```

```bash
loadEnv .env
```

#### Git Emoji

```bash
vi ~/.bashrc
```

```bash
alias gitemoji="curl -L gitemoji.vvip.page"
```
