You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在node:16.3.0-alpine镜像中安装yt-dlp失败求助

问题描述

我的Dockerfile内容如下:

FROM node:16.3.0-alpine

WORKDIR /home/node/app

RUN apk update
RUN apk upgrade
RUN apk add --no-cache ffmpeg
RUN apk add --no-cache python3
RUN apk add --no-cache yt-dlp

执行构建时,安装yt-dlp步骤失败,报错信息:

fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/community/x86_64/APKINDEX.tar.gz
ERROR: unable to select packages:
  yt-dlp (no such package):
    required by: world[yt-dlp]
The command '/bin/sh -c apk add --no-cache yt-dlp' returned a non-zero code: 1

我确认yt-dlp存在于Alpine的community仓库,但使用的node镜像默认已经启用该仓库,却找不到这个包。另外我必须使用Node.js 16版本的基础镜像,因为要运行的Wiki.js最新稳定版依赖Node.js 16。

解决方案

问题根源在于node:16.3.0-alpine对应的是Alpine 3.13版本,而yt-dlp是从Alpine 3.16版本才开始加入community仓库的,所以在Alpine 3.13的软件源里根本找不到这个包。

你有两种可行的解决方式:

方式一:更换对应更高版本Alpine的Node.js 16镜像

选择一个基于Alpine 3.16或更高版本的Node.js 16镜像,比如:

  • node:16-alpine(会自动使用Node.js 16分支下最新的Alpine版本)
  • 或者指定具体版本如node:16.20.2-alpine3.18

修改后的Dockerfile开头:

FROM node:16-alpine

之后的apk安装命令无需改动,就能正常找到yt-dlp包。

方式二:通过pip安装yt-dlp(保留原node镜像)

如果必须使用node:16.3.0-alpine,可以利用已安装的python3,通过pip来安装yt-dlp:
把原来的apk add --no-cache yt-dlp替换成:

RUN apk add --no-cache py3-pip && pip install yt-dlp

这样就能绕开apk源的限制,成功安装yt-dlp。

内容的提问来源于stack exchange,提问作者GhostOrder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 00:39:58