# 网络与编译错误排查

URL: https://caijiao.org/gentoo/faq-network-build
Source: docs/gentoo/faq-network-build.md
Description: 本章介绍 Gentoo 系统在网络和软件包编译过程中常见错误排查方法，包括 Portage 错误、依赖问题及解决技巧。

在掌握安装常见问题后，下一步是 **学习 Gentoo 系统网络与编译错误排查方法**，提高系统稳定性和问题解决能力。

## 一、网络错误排查

1. **无法同步 Portage 树**  
   - 检查网络连接：

```bash
ping mirrors.gentoo.org
````

- 更换镜像源：

```bash
eselect mirror list
eselect mirror set <number>
emerge --sync
```

2. **下载软件包失败**

   - 使用 `wget` 或 `curl` 测试下载 URL
   - 清理 Portage 缓存：

```bash
rm -rf /var/cache/edb/dep/*
rm -rf /var/cache/distfiles/*
```

## 二、编译错误排查

1. **依赖或 USE 冲突**

   - 检查冲突信息：

```bash
emerge --pretend --verbose <package>
```

- 修复依赖：

```bash
emerge --update --deep --newuse @world
```

2. **编译失败或报错**

   - 查看详细日志：

```bash
less /var/log/portage/elog/
```

- 根据错误信息调整 USE 标志或 CFLAGS
- 可能需要重新编译依赖包

3. **内存或资源不足**

   - 调整 `MAKEOPTS` 并使用 `-j` 控制并行数：

```bash
MAKEOPTS="-j2"
```

- 启用 `ccache` 缓存编译结果，减少重复编译

## 三、常见 Portage 错误

- **被掩码的软件包**

  - 编辑 `/etc/portage/package.unmask` 或使用 `--autounmask`：

```bash
emerge --ask --autounmask-write <package>
```

- **签名或校验错误**

  - 更新 GPG 密钥或下载完整包
  - 清理缓存并重新下载：

```bash
eclean distfiles
```

- **无法找到依赖包**

  - 检查 Portage 树同步是否完成
  - 检查 Overlay 是否正确启用

## 四、排查技巧

- 仔细阅读日志和错误提示
- 按模块或依赖逐步排查，避免一次性操作
- 使用 Gentoo Wiki、Bugzilla 或论坛搜索错误码
- 保留成功编译的环境作为参考

## 五、建议操作

- 遇到问题先备份配置和日志
- 调整编译参数和 USE 标志逐步修复
- 定期清理缓存，避免旧文件干扰新编译
