The cache is empty. You need to run “apt-file update“ first.

本文记录了在UnionTech OS系统上安装并配置apt-file过程中遇到的问题及解决方案,包括如何通过添加Debian源来实现文件搜索功能。

操作系统版本:

        uniontechos-desktop-20-professional-1040-amd64.iso

        uniontechos-desktop-20-professional-1050-amd64.iso

        今日安装 apt-file 后,出现以下问题

root@uniontech:~# apt-file search  dget
Finding relevant cache files to search ...E: The cache is empty. You need to run "apt-file update" first.

        虽然重复执行了 n 次 "apt-file update" ,但是依旧提示 The cache is empty. You need to run "apt-file update" first.

root@uniontech:~# apt-file update
命中:3 https://professional-packages.chinauos.com/printer eagle InRelease
获取:2 https://professional-packages.chinauos.com/desktop-professional eagle InRelease [19.7 kB]
获取:1 https://professional-store-packages.chinauos.com/appstore eagle InRelease [6,129 B]
获取:4 https://professional-store-packages.chinauos.com/appstore eagle/appstore amd64 Packages [956 kB]
已下载 981 kB,耗时 3秒 (321 kB/s)
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
有 561 个软件包可以升级。请执行 ‘apt list --upgradable’ 来查看它们。
 

       查询论坛后得知 Deepin源不支持 apt-file文件查找功能 https://bbs.deepin.org/zh/post/40803

实在想使用的话,一个临时方案可以考虑在 /etc/apt/sources.list.d/ 下放入一个 Debian 的源。

root@uniontech:~# apt edit-sources Debian-Stable.list

deb http://mirrors.163.com/debian/ buster main non-free contrib
deb http://mirrors.163.com/debian/ buster-updates main non-free contrib
deb http://mirrors.163.com/debian/ buster-backports main non-free contrib
deb http://mirrors.163.com/debian-security/ buster/updates main non-free contrib

deb-src http://mirrors.163.com/debian/ buster main non-free contrib
deb-src http://mirrors.163.com/debian/ buster-updates main non-free contrib
deb-src http://mirrors.163.com/debian/ buster-backports main non-free contrib
deb-src http://mirrors.163.com/debian-security/ buster/updates main non-free contrib

<think>我们注意到用户反馈使用官方APT仓库安装CMake的过程太慢。这通常是由于网络问题或软件源下载速度慢导致的。以下提供几种优化方案,包括更换镜像源、使用预编译二进制等。 ### 加速CMake安装的优化方案 #### 方案一:更换APT镜像源(最简单高效) ```dockerfile # 使用阿里云镜像加速Ubuntu官方源 RUN sed -i 's@archive.ubuntu.com@mirrors.aliyun.com@g' /etc/apt/sources.list && \ sed -i 's@security.ubuntu.com@mirrors.aliyun.com@g' /etc/apt/sources.list && \ apt-get update && \ apt-get install -y wget gnupg && \ wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc | gpg --dearmor - > /usr/share/keyrings/kitware.gpg && \ echo "deb [signed-by=/usr/share/keyrings/kitware.gpg] https://apt.kitware.com/ubuntu/ bionic main" > /etc/apt/sources.list.d/kitware.list && \ apt-get update && \ apt-get install -y cmake ``` #### 方案二:直接下载预编译二进制(最快) ```dockerfile # 跳过APT,直接下载官方预编译包 RUN apt-get update && \ apt-get install -y wget tar gzip && \ # 下载适用于Linux x86_64的最新CMake wget https://github.com/Kitware/CMake/releases/download/v3.28.5/cmake-3.28.5-linux-x86_64.tar.gz && \ tar -xzf cmake-3.28.5-linux-x86_64.tar.gz --directory /usr/local --strip-components=1 && \ rm cmake-3.28.5-linux-x86_64.tar.gz && \ # 验证安装 cmake --version ``` #### 方案三:使用Docker多阶段构建(长期最优) ```dockerfile # 第一阶段:在单独容器中准备CMake FROM ubuntu:18.04 as cmake_builder RUN apt-get update && \ apt-get install -y wget tar gzip && \ wget https://github.com/Kitware/CMake/releases/download/v3.28.5/cmake-3.28.5-linux-x86_64.tar.gz && \ tar -xzf cmake-3.28.5-linux-x86_64.tar.gz --directory /usr/local --strip-components=1 # 第二阶段:主构建阶段 FROM ubuntu:18.04 # 从上一阶段复制已安装的CMake COPY --from=cmake_builder /usr/local /usr/local # 确保系统库依赖 RUN apt-get update && \ apt-get install -y build-essential libssl-dev && \ # 验证 cmake --version ``` ### 关键优化点对比 | 方法 | 速度 | 稳定性 | 适用场景 | |---------------|------|--------|----------------------------| | APT镜像源 | ★★★ | ★★★★ | 需要后续APT安装其他软件 | | 预编译二进制 | ★★★★ | ★★★ | 快速构建且无需其他APT依赖 | | 多阶段构建 | ★★★★ | ★★★★ | 需要重复构建的CI/CD环境 | ### 国内用户特别优化 ```dockerfile # 使用国内镜像下载CMake二进制包 RUN wget https://mirrors.aliyun.com/kitware/CMake/v3.28.5/cmake-3.28.5-linux-x86_64.tar.gz ``` ### 验证脚本 ```dockerfile # 检查CMake版本及完整性 RUN command -v cmake && cmake --version | grep "3.28.5" ``` §§相关问题§§ 1. 如何为Docker构建选择最佳的APT镜像源以提升下载速度? 2. 直接使用预编译二进制文件安装软件有哪些优势和潜在风险? 3. 在Docker多阶段构建中,如何最小化最终镜像的体积? 4. 如何验证从第三方下载的预编译二进制文件的安全性? 5. 当目标系统架构与预编译包不匹配时(如arm64环境),应如何处理? </think>### 加速CMake安装的优化方案 #### 核心问题分析 ```bash wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc | gpg --dearmor - > /usr/share/keyrings/kitware.gpg ``` 速度慢的主要原因是: 1. **双重下载瓶颈**: - 需要先下载密钥(kitware-archive-latest.asc) - 再下载实际软件包(cmake) 2. **网络延迟影响**: - Kitware官方服务器位于国外 - 国内访问可能受网络限制 --- ### 高效解决方案(三种优化方式) #### 方案一:合并下载步骤(最快) ```dockerfile # 单次下载完成所有操作(无需两次apt-get updateRUN apt-get update && \ apt-get install -y wget gnupg ca-certificates && \ # 同时下载密钥和添加仓库 wget -qO /usr/share/keyrings/kitware.gpg https://apt.kitware.com/keys/kitware-archive-latest.asc && \ echo "deb [signed-by=/usr/share/keyrings/kitware.gpg] https://mirrors.aliyun.com/kitware/ubuntu bionic main" > /etc/apt/sources.list.d/kitware.list && \ apt-get update && \ apt-get install -y cmake ``` #### 方案二:使用国内镜像源 ```dockerfile # 使用阿里云镜像加速 RUN apt-get update && \ apt-get install -y gnupg ca-certificates && \ # 从国内镜像获取密钥 wget -qO /usr/share/keyrings/kitware.gpg https://mirrors.aliyun.com/kitware/keys/kitware-archive-latest.asc && \ echo "deb [signed-by=/usr/share/keyrings/kitware.gpg] https://mirrors.aliyun.com/kitware/ubuntu bionic main" > /etc/apt/sources.list.d/kitware.list && \ apt-get update && \ apt-get install -y cmake ``` #### 方案三:预编译二进制直装(最快) ```dockerfile # 跳过APT直接安装预编译包 RUN apt-get update && \ apt-get install -y wget tar gzip && \ # 下载官方编译好的二进制 wget https://github.com/Kitware/CMake/releases/download/v3.28.5/cmake-3.28.5-linux-x86_64.tar.gz && \ tar -xzf cmake-3.28.5-linux-x86_64.tar.gz -C /usr/local --strip-components=1 && \ rm cmake-3.28.5-linux-x86_64.tar.gz && \ # 验证安装 cmake --version ``` --- ### 速度优化对比表 | 优化方法 | 预计耗时 | 优势 | |-------------------|----------|--------------------------| | 原始方案 | 2-5分钟 | 官方标准流程 | | 国内镜像方案 | 30-60秒 | 无需改变安装逻辑 | | 预编译二进制方案 | 15-30秒 | 完全跳过APT仓库更新 | --- ### 附加优化技巧 1. **缓存管理**: ```dockerfile # 在Dockerfile开头添加缓存索引 RUN rm -f /etc/apt/apt.conf.d/docker-clean && \ echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache ``` 2. **并行下载**: ```dockerfile # 启用APT并行下载 RUN echo 'Acquire::http::Dl-Limit "100";' > /etc/apt/apt.conf.d/99parallel && \ echo 'Acquire::https::Dl-Limit "100";' >> /etc/apt/apt.conf.d/99parallel ``` 3. **最小化层**: ```dockerfile # 合并所有操作为单层 RUN apt-get update && \ apt-get install -y --no-install-recommends wget gnupg ca-certificates && \ wget -qO /usr/share/keyrings/kitware.gpg https://apt.kitware.com/keys/kitware-archive-latest.asc && \ echo "deb [signed-by=/usr/share/keyrings/kitware.gpg] https://apt.kitware.com/ubuntu bionic main" > /etc/apt/sources.list.d/kitware.list && \ apt-get update && \ apt-get install -y cmake && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* ``` --- ### 最终推荐方案 ```dockerfile # 最优组合:国内镜像+最小化层 RUN apt-get update && \ apt-get install -y --no-install-recommends wget gnupg ca-certificates && \ wget -qO /usr/share/keyrings/kitware.gpg https://mirrors.aliyun.com/kitware/keys/kitware-archive-latest.asc && \ echo "deb [signed-by=/usr/share/keyrings/kitware.gpg] https://mirrors.aliyun.com/kitware/ubuntu bionic main" > /etc/apt/sources.list.d/kitware.list && \ apt-get update && \ apt-get install -y cmake && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* /tmp/* ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值