活动公告

系统通知
05-18 21:22
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

从零开始学习在 Fedora Silverblue 独特不可变系统中安装设置现代化开发环境的工作流程与最佳实践

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

<font color=白金月票" /> 发表于 2025-9-13 02:30:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. Fedora Silverblue 简介

Fedora Silverblue 是 Fedora 工作站的一个变体,它采用了不可变操作系统(Immutable OS)的设计理念。与传统 Linux 发行版不同,Silverblue 的根文件系统是只读的,系统文件和应用通过 OSTree 技术进行原子更新。这种设计提供了更高的系统稳定性、安全性和可靠性,同时也带来了一些与传统 Linux 系统不同的使用方式。

1.1 不可变系统的优势

• 系统稳定性:由于系统文件是只读的,意外或恶意的系统修改几乎不可能发生。
• 原子更新:系统更新是原子的,要么成功要么失败,不会留下部分更新的状态。
• 回滚能力:可以轻松地将系统回滚到之前的版本。
• 可预测性:系统环境始终保持一致,减少了”在我的机器上能运行”的问题。

1.2 Silverblue 与传统 Fedora 的区别

2. 安装 Fedora Silverblue

2.1 系统要求

在安装之前,请确保您的系统满足以下最低要求:

• 64 位 x86 处理器(Intel 或 AMD)
• 至少 4GB RAM(推荐 8GB 或更多)
• 至少 20GB 可用磁盘空间(推荐 40GB 或更多)
• UEFI 固件(推荐,但 Legacy BIOS 也支持)

2.2 下载与安装

1. 访问Fedora Silverblue 官方网站下载最新的 ISO 镜像。
2. 创建一个可启动的 USB 驱动器。可以使用 Fedora Media Writer 或其他工具如dd命令:
  1. # 检查 USB 设备名称(例如 /dev/sdb)
  2. lsblk
  3. # 使用 dd 命令写入 ISO 镜像(请将 /dev/sdb 替换为您的 USB 设备)
  4. sudo dd if=Fedora-Silverblue-<version>-x86_64.iso of=/dev/sdb bs=4M status=progress oflag=sync
复制代码

1. 从 USB 驱动器启动计算机,并按照安装向导完成安装过程。

2.3 初始设置

安装完成后,进行一些基本设置:
  1. # 更新系统
  2. rpm-ostree update
  3. # 重启以应用更新
  4. systemctl reboot
复制代码

3. 理解 Silverblue 的工作方式

3.1 OSTree 和 rpm-ostree

OSTree 是一个用于管理可引导文件系统树的工具,类似于 Git,但用于操作系统二进制文件。rpm-ostree 结合了 OSTree 和 RPM 包管理的优点,提供了原子更新和回滚功能。
  1. # 查看当前部署的版本
  2. rpm-ostree status
  3. # 查看可用的更新
  4. rpm-ostree upgrade --check
  5. # 应用更新
  6. rpm-ostree upgrade
  7. # 回滚到上一个版本
  8. rpm-ostree rollback
复制代码

3.2 分层包(Layered Packages)

虽然 Silverblue 是不可变的,但您可以通过rpm-ostree添加额外的包,这些包会作为”层”添加到基础系统之上。
  1. # 安装额外的包
  2. rpm-ostree install vim tmux
  3. # 卸载包
  4. rpm-ostree uninstall vim
  5. # 查看已安装的包
  6. rpm-ostree list
复制代码

注意:频繁添加或删除分层包会增加系统复杂性,建议尽量使用 Flatpak 或 Toolbx 来管理应用和开发工具。

4. 使用 Toolbx 创建开发环境

Toolbx 是 Silverblue 中用于创建和管理命令行容器的工具,它提供了一个与主机系统集成的可变环境,非常适合开发工作。

4.1 安装和设置 Toolbx

Silverblue 默认已安装 Toolbx。如果没有,可以通过以下方式安装:
  1. # 安装 toolbox
  2. rpm-ostree install toolbox
  3. # 重启系统
  4. systemctl reboot
复制代码

4.2 创建和管理 Toolbx 容器
  1. # 创建一个新的 toolbox 容器(默认使用 Fedora 镜像)
  2. toolbox create
  3. # 创建特定版本的 toolbox
  4. toolbox create --image fedora:36
  5. # 列出所有 toolbox 容器
  6. toolbox list
  7. # 进入 toolbox 容器
  8. toolbox enter
  9. # 退出 toolbox 容器
  10. exit
  11. # 删除 toolbox 容器
  12. toolbox rm <container-name>
复制代码

4.3 在 Toolbx 中设置开发环境

进入 Toolbx 容器后,您可以像在传统 Fedora 系统中一样安装开发工具:
  1. # 进入 toolbox
  2. toolbox enter
  3. # 更新系统
  4. sudo dnf update
  5. # 安装开发工具
  6. sudo dnf install git vim nodejs python3 python3-pip gcc-c++
  7. # 安装特定版本的 Python
  8. sudo dnf install python3.9
  9. # 设置全局 npm 配置
  10. npm config set prefix ~/.npm-global
  11. echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
  12. source ~/.bashrc
复制代码

5. 使用 Flatpak 安装应用程序

Flatpak 是 Silverblue 中推荐的应用程序分发框架,它提供了沙盒环境,使应用程序与系统隔离。

5.1 安装 Flatpak 应用
  1. # 添加 Flathub 仓库(如果尚未添加)
  2. flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
  3. # 安装应用程序
  4. flatpak install flathub com.visualstudio.code
  5. flatpak install flathub org.mozilla.firefox
  6. flatpak install flathub com.slack.Slack
  7. # 运行 Flatpak 应用
  8. flatpak run com.visualstudio.code
复制代码

5.2 管理 Flatpak 应用
  1. # 列出已安装的应用
  2. flatpak list
  3. # 更新应用
  4. flatpak update
  5. # 删除应用
  6. flatpak uninstall com.visualstudio.code
复制代码

6. 设置不同语言的开发环境

6.1 Python 开发环境

在 Toolbx 容器中设置 Python 开发环境:
  1. # 进入 toolbox
  2. toolbox enter
  3. # 安装 Python 和相关工具
  4. sudo dnf install python3 python3-pip python3-virtualenv
  5. # 创建虚拟环境
  6. python3 -m venv myproject-env
  7. # 激活虚拟环境
  8. source myproject-env/bin/activate
  9. # 安装 Python 包
  10. pip install numpy pandas matplotlib jupyter
  11. # 退出虚拟环境
  12. deactivate
复制代码

6.2 Node.js 开发环境
  1. # 进入 toolbox
  2. toolbox enter
  3. # 安装 Node.js 和 npm
  4. sudo dnf install nodejs npm
  5. # 使用 nvm 管理 Node.js 版本(推荐)
  6. curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
  7. source ~/.bashrc
  8. # 安装特定版本的 Node.js
  9. nvm install 16
  10. nvm use 16
  11. # 创建一个新的 Node.js 项目
  12. mkdir my-node-project
  13. cd my-node-project
  14. npm init -y
  15. # 安装依赖
  16. npm install express dotenv
复制代码

6.3 Go 开发环境
  1. # 进入 toolbox
  2. toolbox enter
  3. # 安装 Go
  4. sudo dnf install golang
  5. # 设置 Go 环境变量
  6. echo 'export GOPATH=$HOME/go' >> ~/.bashrc
  7. echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.bashrc
  8. source ~/.bashrc
  9. # 创建一个新的 Go 项目
  10. mkdir -p $GOPATH/src/myproject
  11. cd $GOPATH/src/myproject
  12. # 初始化 Go 模块
  13. go mod init myproject
  14. # 安装依赖
  15. go get github.com/gin-gonic/gin
复制代码

6.4 Rust 开发环境
  1. # 进入 toolbox
  2. toolbox enter
  3. # 安装 Rust
  4. curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  5. source ~/.cargo/env
  6. # 创建一个新的 Rust 项目
  7. cargo new my_rust_project
  8. cd my_rust_project
  9. # 添加依赖
  10. echo 'serde = "1.0"' >> Cargo.toml
  11. # 构建项目
  12. cargo build
复制代码

7. 使用 Podman 进行容器开发

Podman 是一个无守护进程的容器引擎,与 Docker CLI 兼容,是 Silverblue 中进行容器开发的理想选择。

7.1 安装和设置 Podman

Silverblue 默认已安装 Podman。如果没有,可以通过以下方式安装:
  1. # 安装 podman
  2. rpm-ostree install podman podman-compose
  3. # 重启系统
  4. systemctl reboot
复制代码

7.2 使用 Podman
  1. # 拉取镜像
  2. podman pull ubuntu:latest
  3. # 运行容器
  4. podman run -it ubuntu:latest /bin/bash
  5. # 列出运行的容器
  6. podman ps
  7. # 列出所有容器
  8. podman ps -a
  9. # 停止容器
  10. podman stop <container-id>
  11. # 删除容器
  12. podman rm <container-id>
  13. # 构建镜像
  14. echo 'FROM fedora:latest
  15. RUN dnf install -y httpd
  16. CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]' > Dockerfile
  17. podman build -t my-apache .
  18. # 运行自定义镜像
  19. podman run -d -p 8080:80 my-apache
复制代码

7.3 使用 Podman 管理容器化应用
  1. # 创建 Podman 网络
  2. podman network create my-network
  3. # 使用 Podman Compose
  4. echo 'version: "3"
  5. services:
  6.   web:
  7.     image: nginx
  8.     ports:
  9.       - "8080:80"
  10.     networks:
  11.       - my-network
  12.   db:
  13.     image: postgres
  14.     environment:
  15.       POSTGRES_PASSWORD: example
  16.     networks:
  17.       - my-network
  18. networks:
  19.   my-network:' > docker-compose.yml
  20. # 启动服务
  21. podman-compose up -d
  22. # 查看服务状态
  23. podman-compose ps
  24. # 停止服务
  25. podman-compose down
复制代码

8. 配置开发工具

8.1 Visual Studio Code

使用 Flatpak 安装 VS Code:
  1. flatpak install flathub com.visualstudio.code
复制代码

配置 VS Code 以在 Toolbx 中使用开发工具:

1. 打开 VS Code
2. 安装 “Remote - SSH” 扩展
3. 配置 SSH 连接到 Toolbx 容器

或者,您可以在 Toolbx 中安装 VS Code 并通过 X11 转发运行:
  1. # 进入 toolbox
  2. toolbox enter
  3. # 安装 VS Code
  4. sudo dnf install code
  5. # 运行 VS Code
  6. code
复制代码

8.2 IntelliJ IDEA

使用 Flatpak 安装 IntelliJ IDEA:
  1. flatpak install flathub com.jetbrains.IntelliJ-IDEA-Community
复制代码

8.3 配置 Git
  1. # 进入 toolbox
  2. toolbox enter
  3. # 安装 Git
  4. sudo dnf install git
  5. # 配置 Git
  6. git config --global user.name "Your Name"
  7. git config --global user.email "your.email@example.com"
  8. git config --global core.editor vim
  9. # 生成 SSH 密钥
  10. ssh-keygen -t ed25519 -C "your.email@example.com"
  11. # 查看公钥并添加到 GitHub/GitLab
  12. cat ~/.ssh/id_ed25519.pub
复制代码

9. 系统维护和最佳实践

9.1 定期更新系统
  1. # 检查可用更新
  2. rpm-ostree upgrade --check
  3. # 应用更新
  4. rpm-ostree upgrade
  5. # 重启以应用更新
  6. systemctl reboot
复制代码

9.2 管理存储空间
  1. # 查看系统使用情况
  2. df -h
  3. # 清理旧部署
  4. rpm-ostree cleanup
  5. # 清理 Podman 资源
  6. podman system prune
  7. # 清理 Flatpak 缓存
  8. flatpak uninstall --unused
复制代码

9.3 备份和恢复
  1. # 备份主目录
  2. rsync -aAXv /home/username /path/to/backup/location
  3. # 备份系统配置
  4. sudo cp -r /etc /path/to/backup/location
  5. # 备份 Toolbx 容器
  6. toolbox list
  7. # 记录容器列表,以便在恢复时重新创建
复制代码

9.4 性能优化
  1. # 禁用不必要的服务
  2. systemctl list-unit-files --state=enabled
  3. sudo systemctl disable <service-name>
  4. # 优化内存使用
  5. echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
  6. sudo sysctl -p
  7. # 优化 SSD(如果使用 SSD)
  8. echo 'noop' | sudo tee /sys/block/sda/queue/scheduler
  9. echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
  10. echo 'vm.vfs_cache_pressure=50' | sudo tee -a /etc/sysctl.conf
  11. sudo sysctl -p
复制代码

10. 故障排除

10.1 常见问题及解决方案
  1. # 检查 toolbox 状态
  2. toolbox list
  3. # 如果容器损坏,尝试删除并重新创建
  4. toolbox rm <container-name>
  5. toolbox create
复制代码
  1. # 检查 Flatpak 安装
  2. flatpak list
  3. # 重新安装应用
  4. flatpak uninstall <app-id>
  5. flatpak install <app-id>
  6. # 检查权限
  7. flatpak override --user --filesystem=home <app-id>
复制代码
  1. # 回滚到上一个版本
  2. rpm-ostree rollback
  3. # 重启系统
  4. systemctl reboot
复制代码
  1. # 检查 Podman 网络
  2. podman network ls
  3. # 重启 Podman 服务
  4. systemctl --user restart podman
  5. # 检查防火墙设置
  6. sudo firewall-cmd --list-all
  7. sudo firewall-cmd --add-service=http --permanent
  8. sudo firewall-cmd --reload
复制代码

10.2 获取帮助

• Fedora Silverblue 文档:https://docs.fedoraproject.org/en-US/fedora-silverblue/
• Fedora 社区论坛:https://discussion.fedoraproject.org/
• Fedora IRC 频道:#fedora on Libera.Chat
• GitHub 问题跟踪:https://github.com/fedora-silverblue

11. 结论

Fedora Silverblue 提供了一种创新的、不可变的操作系统体验,特别适合那些重视系统稳定性和安全性的开发者。通过结合 Toolbx、Flatpak 和 Podman 等工具,您可以在 Silverblue 上创建一个强大而灵活的开发环境。

虽然 Silverblue 的工作流程与传统 Linux 发行版有所不同,但一旦适应了这种模式,您将受益于其提供的系统稳定性、安全性和可预测性。通过遵循本文介绍的最佳实践,您可以充分利用 Silverblue 的优势,同时保持高效的开发工作流程。

随着不可变操作系统概念的普及,掌握 Silverblue 的工作方式不仅对当前的开发工作有帮助,也为未来可能更广泛采用的不可变系统模式做好准备。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则