can‘t read /etc/apt/sources.list: No such file or directory

bash 复制代码
使用第二种方法现在直接报错了

(base) root@iZbp12r139zzzpzpwtqtqyZ:/opt/ppt_base# docker build -t ppt-base:latest -f Dockerfile .
[+] Building 0.5s (5/5) FINISHED                                                               docker:default
 => [internal] load build definition from Dockerfile                                                     0.0s
 => => transferring dockerfile: 367B                                                                     0.0s
 => [internal] load metadata for docker.io/library/python:3.11-slim                                      0.1s
 => [internal] load .dockerignore                                                                        0.0s
 => => transferring context: 2B                                                                          0.0s
 => CACHED [1/2] FROM docker.io/library/python:3.11-slim@sha256:8eb5fc663972b871c528fef04be4eaa9ab8ab45  0.0s
 => => resolve docker.io/library/python:3.11-slim@sha256:8eb5fc663972b871c528fef04be4eaa9ab8ab4539a5316  0.0s
 => ERROR [2/2] RUN sed -i 's@deb.debian.org@mirrors.aliyun.com@g' /etc/apt/sources.list &&     apt-get  0.2s
------                                                                                                        
 > [2/2] RUN sed -i 's@deb.debian.org@mirrors.aliyun.com@g' /etc/apt/sources.list &&     apt-get update &&     apt-get install -y --no-install-recommends         libreoffice-writer libreoffice-impress libreoffice-calc         fonts-dejavu imagemagick     && rm -rf /var/lib/apt/lists/*:
0.209 sed: can't read /etc/apt/sources.list: No such file or directory
------
Dockerfile:3
--------------------
   2 |     FROM python:3.11-slim
   3 | >>> RUN sed -i 's@deb.debian.org@mirrors.aliyun.com@g' /etc/apt/sources.list && \
   4 | >>>     apt-get update && \
   5 | >>>     apt-get install -y --no-install-recommends \
   6 | >>>         libreoffice-writer libreoffice-impress libreoffice-calc \
   7 | >>>         fonts-dejavu imagemagick \
   8 | >>>     && rm -rf /var/lib/apt/lists/*
   9 |     
--------------------
ERROR: failed to solve: process "/bin/sh -c sed -i 's@deb.debian.org@mirrors.aliyun.com@g' /etc/apt/sources.list &&     apt-get update &&     apt-get install -y --no-install-recommends         libreoffice-writer libreoffice-impress libreoffice-calc         fonts-dejavu imagemagick     && rm -rf /var/lib/apt/lists/*" did not complete successfully: exit code: 2
(base) root@iZbp12r139zzzpzpwtqtqyZ:/opt/ppt_base# 

对,这次的报错是合理的,不是网络问题,是我们"换源那一行"写得太老了:

bash 复制代码
sed: can't read /etc/apt/sources.list: No such file or directory

原因:现在的 python:3.11-slim 基于比较新的 Debian(bookworm/trixie),它已经用 /etc/apt/sources.list.d/debian.sources 这种新格式了,根本没有传统的 /etc/apt/sources.list,所以你一 sed 就报错。

给你一份能在这类 slim 镜像上跑的 兼容写法,直接用👇这个 Dockerfile:

bash 复制代码
FROM python:3.11-slim

# 1. 替换源(兼容老文件和 debian.sources)
RUN if [ -f /etc/apt/sources.list ]; then \
        sed -i 's@deb.debian.org@mirrors.aliyun.com@g' /etc/apt/sources.list && \
        sed -i 's@security.debian.org@mirrors.aliyun.com@g' /etc/apt/sources.list ; \
    elif [ -f /etc/apt/sources.list.d/debian.sources ]; then \
        sed -i 's@deb.debian.org@mirrors.aliyun.com@g' /etc/apt/sources.list.d/debian.sources && \
        sed -i 's@security.debian.org@mirrors.aliyun.com@g' /etc/apt/sources.list.d/debian.sources ; \
    else \
        echo "no apt source file found"; \
    fi \
    && apt-get update \
    && apt-get install -y --no-install-recommends \
        libreoffice-writer \
        libreoffice-impress \
        libreoffice-calc \
        fonts-dejavu \
        imagemagick \
    && rm -rf /var/lib/apt/lists/*

要点讲清楚:

  1. 先判断 /etc/apt/sources.list 在不在,在就 sed 它;

  2. 不在就改 /etc/apt/sources.list.d/debian.sources;

  3. 再 apt-get update,再装 libreoffice。

相关推荐
zzb158024 分钟前
Agent记忆与检索
java·人工智能·python·学习·ai
wzl2026121333 分钟前
从0到1搭建私域数据中台——公域引流的数据采集与分析
python·自动化·企业微信
源码之家1 小时前
大数据毕业设计汽车推荐系统 Django框架 可视化 协同过滤算法 数据分析 大数据 机器学习(建议收藏)✅
大数据·python·算法·django·汽车·课程设计·美食
HealthScience1 小时前
COM Surrogate的dllhost.exe高占用(磁盘)解决
python
站大爷IP1 小时前
用 Python 30 分钟做出自己的记事本
python
曲幽1 小时前
FastAPI里玩转Redis和数据库的正确姿势,别让异步任务把你坑哭了!
redis·python·mysql·fastapi·web·celery·sqlalchemy·task·backgroundtask
未知鱼1 小时前
Python安全开发之简易csrf检测工具
python·安全·csrf
何政@1 小时前
Agent Skills 完全指南:从概念到自定义实践
人工智能·python·大模型·claw·404 not found 罗
AmyLin_20011 小时前
【pdf2md-3:实现揭秘】福昕PDF SDK Python 开发实战:从逐字符提取到 LR 版面分析
开发语言·python·pdf·sdk·markdown·pdf2md
IP老炮不瞎唠1 小时前
Scrapy 高效采集:优化方案与指南
网络·爬虫·python·scrapy·安全