# Portage 异常处理

URL: https://caijiao.org/gentoo/faq-portage
Source: docs/gentoo/faq-portage.md
Description: 本章介绍 Gentoo 系统中 Portage 异常处理方法，包括依赖冲突、掩码包、编译失败及日志分析技巧。

在掌握网络与编译错误排查后，下一步是 **学习 Gentoo 系统中 Portage 异常处理方法**，确保软件包管理稳定可靠。

## 一、依赖冲突处理

1. **识别冲突包**  

```bash
emerge --pretend --verbose <package>
````

* 查看冲突信息
* 检查全局 USE 标志与包级 USE 标志

2. **解决方法**

* 修改 `/etc/portage/package.use` 或全局 USE
* 删除冲突包后重新安装：

```bash
emerge --ask --depclean <conflict-package>
emerge --ask <package>
```

## 二、掩码与关键字异常

1. **掩码包**

* 包被掩码或关键字不匹配：

```bash
emerge --ask --autounmask-write <package>
```

* 更新 `/etc/portage/package.accept_keywords` 和 `/etc/portage/package.unmask`

2. **维护自定义 ebuild**

* 检查 Overlay 或自定义 ebuild 是否正确
* 使用 `repoman manifest` 更新 ebuild 校验

## 三、编译失败处理

1. **查看日志**

```bash
less /var/log/portage/elog/*
```

* 定位错误源（依赖、编译参数、环境变量等）

2. **常用修复方法**

* 清理 distfiles 和临时文件：

```bash
rm -rf /var/cache/distfiles/<package>*
rm -rf /var/tmp/portage/<package>*
```

* 调整 `CFLAGS`、`MAKEOPTS` 或 USE 标志
* 使用 `emerge --resume` 继续安装

## 四、系统异常与 Portage

1. **Portage 锁文件异常**

```bash
rm -f /var/lib/portage/world.lock
rm -f /var/lib/portage/lock
```

2. **数据库损坏**

```bash
emerge --sync
emaint sync --repo gentoo
```

3. **其他异常**

* 使用 `emerge --info` 检查环境变量
* 对比成功系统的配置

## 五、建议操作

* 遇到 Portage 异常先不要强行删除或跳过
* 详细查看日志，按步骤解决依赖、掩码和编译问题
* 定期备份 `/etc/portage/` 配置，方便恢复异常
