已加载插件:fastestmirror, langpacks Cannot open logfile /var/log/yum.log adding repo from: https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo grabbing file https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo Traceback (most recent call last): File "/bin/yum-config-manager", line 234, in <module> f = tempfile.NamedTemporaryFile() File "/usr/lib64/python2.7/tempfile.py", line 446, in NamedTemporaryFile dir = gettempdir() File "/usr/lib64/python2.7/tempfile.py", line 265, in gettempdir tempdir = _get_default_tempdir() File "/usr/lib64/python2.7/tempfile.py", line 212, in _get_default_tempdir ("No usable temporary directory found in %s" % dirlist)) IOError: [Errno 2] No usable temporary directory found in ['/tmp', '/var/tmp', '/usr/tmp', '/root']
时间: 2025-07-19 14:27:05 浏览: 7
<think>我们面对的问题是在使用yum-config-manager添加Docker CE仓库时出现错误:没有在/tmp, /var/tmp, /usr/tmp, /root中找到可用的临时目录。
这个错误通常意味着yum无法在系统的标准临时目录中创建临时文件,可能是由于权限问题、磁盘空间不足或这些目录不存在。
根据系统级指令,我们需要用中文回答,并遵循LaTeX格式要求。同时,我们需要生成相关问题。
步骤:
1. 确认临时目录的存在和权限:确保/tmp, /var/tmp, /usr/tmp, /root等目录存在,并且当前用户(可能是root)有写入权限。
2. 检查磁盘空间:使用`df -h`命令检查这些目录所在分区的可用空间。
3. 检查文件系统是否只读:有时候系统异常会导致文件系统挂载为只读,需要重新挂载为读写。
4. 设置环境变量:如果上述目录都不可用,可以尝试设置TMPDIR环境变量指定一个可写的临时目录。
具体解决方法:
方法一:检查并修复临时目录权限
- 对于/tmp目录,通常权限为1777(drwxrwxrwt),可以使用`ls -ld /tmp`查看。
- 如果权限不对,可以使用`chmod 1777 /tmp`来设置。
方法二:检查磁盘空间和inode
- 运行`df -h`和`df -i`查看磁盘空间和inode使用情况。
方法三:重新挂载/tmp(如果文件系统只读)
- 如果发现挂载点为只读(ro),可以尝试重新挂载为读写:`mount -o remount,rw /tmp`
方法四:设置TMPDIR环境变量
- 如果上述方法无效,可以尝试指定一个不同的临时目录,例如:
export TMPDIR=/path/to/your/tmpdir
然后再次运行yum命令。
方法五:检查selinux状态
- 有时selinux可能会阻止访问,可以尝试临时关闭selinux:`setenforce 0`,然后再运行命令。
注意:在操作前,请确保你有root权限。
根据引用[2]中的思路,有时候系统的默认路径被修改,我们可以尝试修复路径或者链接。但这里的问题更可能是临时目录的权限或空间问题。
下面我们按照结构化的方式给出解决方案:</think>### 解决 `yum-config-manager` 临时目录不可用错误
当使用 `yum-config-manager` 添加 Docker CE 仓库时出现 `No usable temporary directory found in /tmp /var/tmp /usr/tmp /root` 错误,通常由以下原因导致:
#### 1. **临时目录权限问题**
- **检查目录权限**:确保 `/tmp`、`/var/tmp` 等目录对当前用户(如 `root`)有写入权限:
```bash
ls -ld /tmp /var/tmp /usr/tmp /root
```
正常权限应为 `drwxrwxrwt`(`/tmp`)或 `drwxr-xr-x`(`/root`)。
- **修复权限**:
```bash
chmod 1777 /tmp # 恢复/tmp的粘滞位权限
chmod 755 /root # 确保/root可访问
```
#### 2. **磁盘空间或 inode 耗尽**
- **检查磁盘空间**:
```bash
df -h / /tmp /var # 查看空间使用
df -i # 检查inode使用
```
若空间不足,清理日志(`/var/log`)或临时文件(`/tmp/*`)。
#### 3. **文件系统挂载为只读**
- **检查挂载状态**:
```bash
mount | grep ' / \| /tmp \| /var '
```
若出现 `ro`(只读),需重新挂载为读写:
```bash
mount -o remount,rw / # 根目录
mount -o remount,rw /tmp
```
#### 4. **自定义临时目录**
- **指定临时目录**:
通过 `TMPDIR` 环境变量覆盖默认路径:
```bash
export TMPDIR=/your/custom/tmp
mkdir -p $TMPDIR && chmod 777 $TMPDIR
yum-config-manager --add-repo=docker-ce.repo
```
#### 5. **修复损坏的 RPM 数据库**
- 若 RPM 数据库损坏也会影响临时文件操作:
```bash
rpm --rebuilddb # 重建RPM数据库
yum clean all # 清理缓存
```
#### 6. **SELinux 限制**
- 临时禁用 SELinux 测试:
```bash
setenforce 0 # 临时禁用
yum-config-manager --add-repo=docker-ce.repo
setenforce 1 # 恢复
```
若有效,需调整 SELinux 策略(通过 `audit2allow` 生成规则)[^1]。
---
### 操作验证
成功添加仓库后,检查是否生效:
```bash
yum repolist | grep docker-ce # 确认仓库列表
```
### 预防措施
- 定期清理 `/tmp` 和 `/var/tmp`:使用 `tmpreaper` 或 `cron` 任务。
- 监控磁盘空间:设置警报避免耗尽。
- 避免非正常关机:防止文件系统挂载为只读。
阅读全文
相关推荐



















