debian jessie 安装gcc

本文介绍如何在 Debian Sid 中更新软件源并安装 build-essential 工具包。通过编辑 /etc/apt/sources.list 文件添加新的软件源地址,然后使用 apt-get 命令更新软件包列表并安装 build-essential。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/etc/apt/sources.list 增加一行
deb http://ftp.de.debian.org/debian sid main
apt-get update

apt-get install build-essential

root@ubuntu:~/exploit-CVE-2015-3306-master# vi Dockerfile root@ubuntu:~/exploit-CVE-2015-3306-master# docker build -t vuln/cve-2015-3306 . [+] Building 8.4s (7/10) docker:default => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 827B 0.0s => WARN: MaintainerDeprecated: Maintainer instruction is deprecated in favor of using label (line 5) 0.0s => [internal] load metadata for docker.io/library/debian:jessie 0.3s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => CACHED [1/6] FROM docker.io/library/debian:jessie@sha256:32ad5050caffb2c7e969dac873bce2c370015c2256ff 0.0s => [internal] load build context 0.0s => => transferring context: 29B 0.0s => [2/6] RUN sed -i 's/deb.debian.org/archive.debian.org/g' /etc/apt/sources.list && sed -i 's|secur 0.3s => ERROR [3/6] RUN apt-get update && apt-get upgrade -y && DEBIAN_FRONTEND=noninteractive apt-ge 7.8s ------ > [3/6] RUN apt-get update && apt-get upgrade -y && DEBIAN_FRONTEND=noninteractive apt-get install -y wget apache2 php5 gcc make && apt-get clean && rm -rf /var/lib/apt/lists/*: 0.799 Ign http://archive.debian.org jessie InRelease 1.249 Ign http://archive.debian.org jessie/updates InRelease 1.514 Ign http://archive.debian.org jessie-updates InRelease 1.618 Get:1 http://archive.debian.org jessie Release.gpg [2420 B] 2.168 Ign http://archive.debian.org jessie/updates Release.gpg 2.421 Ign http://archive.debian.org jessie-updates Release.gpg 2.523 Get:2 http://archive.debian.org jessie Release [148 kB] 2.754 Ign http://archive.debian.org jessie Release 3.305 Ign http://archive.debian.org jessie/updates Release 3.558 Ign http://archive.debian.org jessie-updates Release 3.658 Get:3 http://archive.debian.org jessie/main amd64 Packages [9098 kB] 7.468 Err http://archive.debian.org jessie/updates/main amd64 Packages 7.468 404 Not Found [IP: 151.101.130.132 80] 7.723 Err http://archive.debian.org jessie-updates/main amd64 Packages 7.723 404 Not Found [IP: 151.101.130.132 80] 7.724 Fetched 9249 kB in 7s (1260 kB/s) 7.725 W: GPG error: http://archive.debian.org jessie Release: The following signatures were invalid: KEYEXPIRED 1587841717 7.725 W: Failed to fetch http://archive.debian.org/debian-security/debian-security/dists/jessie/updates/main/binary-amd64/Packages 404 Not Found [IP: 151.101.130.132 80] 7.725 7.725 W: Failed to fetch http://archive.debian.org/debian/dists/jessie-updates/main/binary-amd64/Packages 404 Not Found [IP: 151.101.130.132 80] 7.725 7.725 E: Some index files failed to download. They have been ignored, or old ones used instead. ------ 1 warning found (use docker --debug to expand): - MaintainerDeprecated: Maintainer instruction is deprecated in favor of using label (line 5) Dockerfile:11 -------------------- 10 | # install debian stuff 11 | >>> RUN apt-get update && \ 12 | >>> apt-get upgrade -y && \ 13 | >>> DEBIAN_FRONTEND=noninteractive apt-get install -y \ 14 | >>> wget apache2 php5 gcc make \ 15 | >>> && apt-get clean && rm -rf /var/lib/apt/lists/* 16 | -------------------- ERROR: failed to solve: process "/bin/sh -c apt-get update && apt-get upgrade -y && DEBIAN_FRONTEND=noninteractive apt-get install -y wget apache2 php5 gcc make && apt-get clean && rm -rf /var/lib/apt/lists/*" did not complete successfully: exit code: 100 更改以后运行命令还是爆粗
最新发布
07-05
<think>我们正在构建一个基于Debian Jessie的Docker镜像,但Jessie已经EOL,所以需要修改源为归档源。 根据用户提供的Dockerfile,我们需要在apt-get update之前替换源。 同时,由于Jessie的GPG密钥可能过期,我们还需要处理密钥问题。 解决方案: 1. 将现有的源替换为archive.debian.org的源 2. 导入已过期的密钥(或者忽略签名检查,但这不是最佳实践,但在构建旧环境时有时需要) 但是,在Docker构建中,我们可以通过以下步骤解决: - 修改sources.list,将主源和安全更新源替换为归档地址 - 更新前导入过期的密钥(如果必要)或者使用--allow-unauthenticated(不推荐,但有时不可避免) 然而,在Jessie中,我们可以先更新密钥环,但这里我们选择替换源并允许使用不安全的仓库(因为归档仓库没有更新密钥,所以我们需要信任这些仓库) 注意:在构建过程中,我们可能遇到GPG错误,因此需要允许不认证的包。但为了安全,我们只对当前安装步骤允许。 修改后的Dockerfile步骤: 步骤1:替换源 步骤2:更新并安装必要软件(允许未认证的包,因为归档源的签名可能已经过期) 具体修改如下:</think>### 解决Docker构建中apt-get更新和安装失败问题 您的Docker构建失败主要由Debian Jessie源失效引起,以下是完整解决方案: #### 解决方案1:替换为归档源(推荐) ```dockerfile FROM debian:jessie # 修复源失效问题 RUN sed -i 's/deb.debian.org/archive.debian.org/g' /etc/apt/sources.list && \ sed -i 's|security.debian.org|archive.debian.org/debian-security|g' /etc/apt/sources.list && \ echo "Acquire::Check-Valid-Until false;" > /etc/apt/apt.conf.d/99no-check-valid-until # 继续原有安装流程 RUN apt-get update && \ apt-get upgrade -y && \ DEBIAN_FRONTEND=noninteractive apt-get install -y \ wget apache2 php5 gcc make \ && apt-get clean && rm -rf /var/lib/apt/lists/* ``` #### 解决方案2:升级基础镜像(长期方案) ```dockerfile # 升级到受支持的Debian版本 FROM debian:bookworm # Debian 12(当前稳定版) # 修改PHP包名(新版本命名变化) RUN apt-get update && \ apt-get upgrade -y && \ DEBIAN_FRONTEND=noninteractive apt-get install -y \ wget apache2 php gcc make \ && apt-get clean && rm -rf /var/lib/apt/lists/* ``` #### 关键修改说明: 1. **源替换**: - `deb.debian.org` → `archive.debian.org` - `security.debian.org` → `archive.debian.org/debian-security` 2. **绕过签名验证**: ```dockerfile echo "Acquire::Check-Valid-Until false;" > /etc/apt/apt.conf.d/99no-check-valid-until ``` 解决GPG签名过期问题[^1] 3. **版本支持状态**: | Debian版本 | 状态 | 支持截止 | |------------|------------|--------------| | Jessie (8) | EOL | 2018-06-17 | | Stretch (9)| EOL | 2022-07-18 | | Bullseye(11)| LTS | 2026-06-30 | | Bookworm(12)| 稳定版 | 2028-06-10 | #### 验证构建: ```bash docker build --no-cache -t fixed-image . ``` #### 常见错误处理: 1. **GPG密钥过期**: ```dockerfile RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <缺失的KEYID> ``` 2. **依赖冲突**: ```dockerfile RUN apt-get install -y --allow-downgrades <包名>=<指定版本> ``` #### 最佳实践建议: 1. **定期清理缓存**: ```dockerfile RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* ``` 2. **使用国内镜像加速**(如适用): ```dockerfile RUN sed -i 's/archive.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值