---
# System prepended metadata

title: Linux 初始安裝及設定手冊 Part 3

---

# Linux 初始安裝及設定手冊 Part 3
## 注意事項

請注意
建議搭配前面的 Part 2 服用


[Linux 初始安裝及設定手冊 Part 1 ( 說明及前置 )](https://hackmd.io/@JoeYang/HkXUyrBAel)
[Linux 初始安裝及設定手冊 Part 2 ( 基礎安裝 )](https://hackmd.io/@JoeYang/S1klXnDRlx)
Linux 初始安裝及設定手冊 Part 3  ( 一般開發相關 )（本篇）
[Linux 初始安裝及設定手冊 Part 4 ( 容器相關開發環境 )](https://hackmd.io/@JoeYang/Sk2N6sP0el)
[Linux 初始安裝及設定手冊 part 5 ( 常用工具 )](https://hackmd.io/@JoeYang/ByyMCsPCll)
[Fedora install Nvidia Driver Guide](https://hackmd.io/@JoeYang/SkjToMrAxe)
[Fedora install CUDA Toolkit Guide](https://hackmd.io/@JoeYang/r1m736Vk-e)
[Fedora install cuDNN Guide](https://hackmd.io/@JoeYang/S13WPbBkbe)

更新時間 2025.11.06


## 一般開發相關

### Clang

#### Ubuntu

使用以下指令安裝
```bash
sudo apt install clang
```

#### Fedora

使用以下指令安裝
```bash
sudo dnf install clang
```

---

### VS Code

#### Ubuntu

##### 透過 vscode 安裝包安裝

前往
`https://code.visualstudio.com/Download`
下載 `.deb`

接著執行以下命令
```bash
sudo apt install ./<file>.deb
# If you're on an older Linux distribution, you will need to run this instead:
# sudo dpkg -i <file>.deb
# sudo apt-get install -f # Install dependencies
```

##### 手動加入 apt repo 安裝 vscode
```bash
#安裝必要工具並加入簽章金鑰
sudo apt-get install wget gpg
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo install -D -o root -g root -m 644 microsoft.gpg /usr/share/keyrings/microsoft.gpg
rm -f microsoft.gpg
```

建立一個檔案檔名及路徑如下
`/etc/apt/sources.list.d/vscode.sources`
並且加入以下內容
```bash
Types: deb
URIs: https://packages.microsoft.com/repos/code
Suites: stable
Components: main
Architectures: amd64,arm64,armhf
Signed-By: /usr/share/keyrings/microsoft.gpg
```

最後執行以下命令即可完成

```bash
sudo apt install apt-transport-https
sudo apt update
sudo apt install code 
# or code-insiders
```


#### Fedora
##### 使用 .rpm 安裝包

notice：
使用此方法，vscode 將無法自動更新

前往
`https://code.visualstudio.com/Download`
下載 `.rpm`

接著執行以下命令
```bash
# file 為下載的檔名
sudo dnf install <file>.rpm
```


##### 手動安裝 （Recommend） 

notice：
由於 Microsoft 採用「手動簽章」與特定發布流程，
YUM 套件庫的更新有時可能會延遲最多 3 小時，
也就是說新版本的 VS Code 並不會立即出現在倉庫中。

安裝金鑰與設定 dnf 套件庫

```bash
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\nautorefresh=1\ntype=rpm-md\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" | sudo tee /etc/yum.repos.d/vscode.repo > /dev/null
```

更新套件快取並安裝 VS Code

```bash
dnf check-update
sudo dnf install code 
# or code-insiders
```

如果使用 yum，改用以下指令來更新套件快取並安裝 VS Code

```bash
yum check-update
sudo yum install code 
# or code-insiders
```

---

### pyenv
首先安裝 dependency，使用以下指令安裝

```
sudo dnf install make gcc patch zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk8-devel libffi-devel xz-devel libuuid-devel gdbm-libs libnsl2
```

接著自動安裝
使用以下命令
```bash
curl -fsSL https://pyenv.run | bash
```

請對每個使用者做操作
p.s 可以自動化，但我懶得寫腳本，而且怕有權限問題
2025.10.09，算了，我還是寫了，其實是直接幹別人的來修改

#### Bash
以下為單使用者安裝流程
執行以下指令來把必要設定加入 `~/.bashrc`

```bash
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init - bash)"' >> ~/.bashrc
```

如果系統上有下列檔案之一：

`~/.profile`
`~/.bash_profile`
`~/.bash_login`

那麼請也把同樣的三行指令加入這些檔案中。
若都沒有，就新建一個 `~/.profile`

```bash
# ~/.profile
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init - bash)"' >> ~/.profile
```

```bash
# ~/.bash_profile
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init - bash)"' >> ~/.bash_profile
```

最後使用以下命令來套用設定

`exec "$SHELL"`



#### Zsh
以下為單使用者安裝流程
執行以下命令來將設定加入 `~/.zshrc`
```bash
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init - zsh)"' >> ~/.zshrc
```


最後使用以下命令來套用設定
`exec "$SHELL"`

---

#### 為所有使用者安裝（全域安裝）
這邊有兩種方法，一種是土炮方法，另一種是共用
嚴格來說，共用用到後面，在 virtualenv 的地方會爆開，雖然正常使用 python 是沒問題就是了，但總之不建議

##### 為所有使用者安裝（自動為每個使用者單獨安裝）

這就是前面說的土炮方法
其實就是寫個東西，讓所有新建立的使用者會有一份 pyenv 就對了

<font color="red">記住，這邊的步驟請按照順序，不然會出問題</font>
<font color="red">記住，這邊的步驟請按照順序，不然會出問題</font>
<font color="red">記住，這邊的步驟請按照順序，不然會出問題</font>

首先安裝 dependency，使用以下指令安裝

```
sudo dnf install make gcc patch zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk8-devel libffi-devel xz-devel libuuid-devel gdbm-libs libnsl2
```

接著正常安裝
使用以下指令
```bash
curl -fsSL https://pyenv.run | bash
```

好，這個會把 pyenv 安裝在 `~/.pyenv` 這裡
請先進去看有沒有 `shim` 這個資料夾，沒有的話很好
現在，我們把這個資料夾 copy 到 `/etc/skel/` 底下

```bash
sudo cp -r .pyenv/ /etc/skel/
```

進去檢查一下
```bash
cd /etc/skel
ls -la
```


確定有 `.pyenv` 在
好，現在在 `/etc/skel` 底下，把 `.zshrc` 加入以下內容
這是給新的使用者建立模板用的

```bash
cd /etc/skel
sudo nano .zshrc

# 輸入以下內容
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init - zsh)"

```
存檔離開



離開之後，也對自己設定變數，使用以下指令
```bash
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init - zsh)"' >> ~/.zshrc
```
這樣就會把變數加進去自己的 shell
之後重開自己的 shell，輸入
```bash
pyenv --version
```
應該會顯示出版本

之後新建的使用者，原則都會帶有 pyenv 了
至此，結束安裝


##### 為所有使用者安裝（共用一個環境）

<font color="red">此方法極度不建議使用，除非你不會用到 virtualenv </font>
<font color="red">此方法極度不建議使用，除非你不會用到 virtualenv </font>
<font color="red">此方法極度不建議使用，除非你不會用到 virtualenv </font>


此方法會為所有新建的使用者安裝（原有使用者需另外設定），若是現在的使用者需額外設定

首先安裝 dependency，使用以下指令安裝

```
sudo dnf install make gcc patch zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk8-devel libffi-devel xz-devel libuuid-devel gdbm-libs libnsl2
```

接著使用以下指令安裝
此指令是我修改 pyenv 自帶的 pyenv-installer 來的，我已經放到 gitbub 上，直接 curl 他即可
有修改一些安裝位置之類的，有興趣可參考以下網址

`https://github.com/JoeYang1412/pyenv-installer-systemwide/tree/global-install`


使用以下指令安裝
```bash
curl -L https://raw.githubusercontent.com/JoeYang1412/pyenv-installer-systemwide/refs/heads/global-install/bin/pyenv-installer | sudo bash
```

之後設定權限
因為裝在系統目錄中，可能有權限問題
因此先設定好權限，僅供群組使用
並設定 SGID，之後新建檔案即可自動套用
使用以下指令設定權限

先設定好權限以免等一下遇到一堆問題

```bash
# 建立一個名為 pyenv_group 的新群組
sudo groupadd pyenv_group

# 將一個已經存在的使用者，加入到指定的群組中
sudo usermod -aG <群組名稱> <使用者名稱>

# 建立一個全新的使用者，並在建立的同時將他加入指定的群組。
# sudo useradd -m -G <群組名稱> <使用者名稱>
# 立即套用群組
newgrp pyenv_group

# 建立 ACL 規則
sudo setfacl -R -m g:pyenv_group:rwx /usr/local/share/pyenv
sudo setfacl -R -m d:g:pyenv_group:rwx /usr/local/share/pyenv 

```

接著設定新使用者建立時，自動加入此群組
```bash
sudo nano /etc/default/useradd
# 在現有存在的文件內找到以下選項並修改，不用動其他的
GROUPS=pyenv_group
```




若是現有的使用者想要使用全域安裝的版本
可以輸入以下指令來加入 `.zshrc`，以便立即使用
```bash
echo 'export PYENV_ROOT="/usr/local/share/pyenv"' >> ~/.zshrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init - zsh)"' >> ~/.zshrc
```

最後輸入 `exec $SHELL`
之後重開終端機即可使用


接著對於之後新增的使用者預設使用 pyenv
需要設定 path 等資訊
上面的下載會將原有的 pyenv 下載到 `/usr/local/share/pyenv` 底下
下載完後
進入 `/etc/skel/`
建立 `.zshrc` 檔案
加入以下變數

```
export PYENV_ROOT="/usr/local/share/pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init - zsh)"
```

之後新建使用者就可以直接呼叫 pyenv




