CircleCi作业中恢复缓存时出现“Permission denied”错误。

5
每当我的工作运行时,它们总是需要大约40秒来下载和安装LibreOffice。我将把它存储到缓存中,在下一个工作中重用该缓存。
      - restore_cache:
          key: cache-libre-6.3-b             # Restore libreoffice
      - run:
          name: install libreoffice 6.3
          command: |
            if [[ ! -d /opt/libreoffice6.3/ ]]; then
                # download & install the .deb
                mkdir -p /tmp/libreoffice
                l=download.tar.gz
                cd /tmp/libreoffice
                  wget -O $l https://download.documentfoundation.org/libreoffice/stable/6.3.3/deb/x86_64/LibreOffice_6.3.3_Linux_x86-64_deb.tar.gz
                  tar -xvf $l
                  d=`ls -td */ | head -n1`
                  cd $d/DEBS/
                  sudo dpkg -i *.deb
                cd -

                # install dependencies required when run :soffice binary  ref. https://github.com/microsoft/vscode/issues/13089
                sudo apt update
                sudo apt install -y libxinerama1 libgtk2.0-0 libxss-dev libgconf-2-4 libasound2

            fi
            # make :libreoffice softlink to libreoffice binary 6.3
            sudo ln -s /opt/libreoffice6.3/program/soffice /usr/bin/libreoffice
            sudo chmod -R 777 /opt/libreoffice6.3/
      - save_cache:
          key: cache-libre-6.3-b
          paths:
            # Save cache libreoffice
            - /opt/libreoffice6.3/
            - /home/circleci/cache-libre

当我重新运行作业时,无法恢复缓存。我遇到了以下一些权限被拒绝的问题:

Found a cache from build 7593 at cache-libre-6.3-b
Size: 271 MB
Cached paths:
  * /opt/libreoffice6.3
  * /home/circleci/cache-libre

Downloading cache archive...
Validating cache...

Unarchiving cache...

Failed to unarchive cache

Error untarring cache: Error extracting tarball /tmp/cache785237819 : tar: opt/libreoffice6.3: Cannot mkdir: Permission denied tar: opt/libreoffice6.3: Cannot mkdir: Permission denied tar: opt/libreoffice6.3/CREDITS.fodt: Cannot open: No such file or directory tar: opt/libreoffice6.3: Cannot mkdir: Permission denied tar: opt/libreoffice6.3/LICENSE: Cannot open: No such file or directory tar: opt/libreoffice6.3: Cannot mkdir: Permission denied tar: opt/libreoffice6.3/LICENSE.html: Cannot open: No such file or directory tar: opt/libreoffice6.3: Cannot mkdir: Permission denied tar: opt/libreoffice6.3/NOTICE: Cannot open: No such file or directory tar: opt/libreoffice6.3: Cannot mkdir: Permission denied tar: opt/libreoffice6.3/help: Cannot mkdir: No such file or directory tar: opt/libreoffice6.3: Cannot mkdir: Permission denied tar: opt/libreoffice6.3/help/a11y-toggle.js: Cannot open: No such file or directory tar: opt/libreoffice6.3: Cannot mkdir: Permission denied tar: opt/libreoffice6.3/help/default.css: Cannot open: No such file or directory tar: opt/libreoffice6.3: Cannot mkdi: exit status 2

我该如何解决这个问题。


1
我记得这个问题好像出现在他们的论坛上 - 你可以在 discuss.circleci.com 上搜索一下。 - halfer
1个回答

5
最近我也遇到了这个问题。鉴于我以前有许多构建都使用该密钥保存和恢复缓存,因此可能是间歇性的,不太可能是直接原因;不过,为了帮助人们,我会提一下这个问题。
我之前尝试使用“working_directory”命令来使用“persist-to-workspace”和“attach_workspace”,我认为这可能是引起问题的原因。
可能会导致错误的顺序:
- 构建 A: 1. 设置工作目录 "working_directory: ~/tmp" 2. 使用相同的密钥 X 保存缓存 - 构建 B: 1. 默认工作目录(未使用"working_directory"命令) 2. 尝试使用相同的密钥 X 恢复缓存(但工作目录不同) 3. "Error untarring cache: Error extracting tarball"
解决方法是简单地更改缓存密钥,例如从"v1"前缀更改为"v2"。这避免尝试将为工作目录"tmp"制作的缓存还原到不同的工作目录中。现在它使用一个新的缓存。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接