8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

相当于 vmImage: ubuntu 的 Ubuntu Docker 镜像

prabhakar 2月前

91 0

我正在尝试在 Azure 管道上的 ubuntu 容器作业上构建 Debian 包。这是我的设置:池:“AWSLinux”容器:映像:ubuntu:20.04但看起来 ubuntu:20.04 docker 映像确实……

我正在尝试在 Azure 管道上的 ubuntu 容器作业上构建 Debian 包。

这是我的设置:

pool: 'AWSLinux'

container: 
  image: ubuntu:20.04

但看起来 ubuntu:20.04 docker 镜像没有安装一些必需的工具。(SUDO,SVN,dpkg-architecture)

------Update and install packages------
/__w/_temp/40c7e2e3-ed1a-4d0f-a8da-5f7bf062cb90.sh: line 6: sudo: command not found
/__w/_temp/40c7e2e3-ed1a-4d0f-a8da-5f7bf062cb90.sh: line 7: sudo: command not found
/__w/_temp/40c7e2e3-ed1a-4d0f-a8da-5f7bf062cb90.sh: line 8: sudo: command not found
------Initialize build environment------
/__w/_temp/40c7e2e3-ed1a-4d0f-a8da-5f7bf062cb90.sh: line 11: sudo: command not found
------Build DEBIAN------
/__w/16/DEBIAN/scripts/build.includes: line 78: dpkg-architecture: command not found
../../../scripts/build_template.includes: line 118: svnversion: command not found

但是在 Ubuntu vmImage 上构建时我没有遇到如下所示的缺少工具的问题:

pool:
  vmImage: ubuntu-20.04  

所以我的计划是将 Ubuntu Docker 镜像拉到与 vmImage:ubuntu 等效的某个地方,然后推送到我的私人 Harbor 注册表以在容器规范中引用它:

container:
  image: registry:ubuntu2004
  endpoint: private_harbor_connection

问题是哪里可以找到这个相当于 vmImage: ubuntu 的 Ubuntu Docker 镜像?有没有更好的解决方案?谢谢。

/////////////////////////////////////////////////////////// //////////////////////////////////

这是更新后的 yaml 文件:

trigger:
- master

pool: 'AWSLinux'

container: 
  image: ubuntu:20.04
  options: "--name sample -v /usr/bin/docker:/tmp/docker:ro"
  
steps:
- checkout: self
  lfs: true
  path: HVD
  clean: true

- script: |
    /tmp/docker exec -t -u root sample mv /etc/sudoers /etc/sudoers.bak
    /tmp/docker exec -t -u root sample apt-get -qq update
    /tmp/docker exec -t -u root sample apt-get -qq install sudo
    /tmp/docker exec -t -u root sample apt-get -qq install subversion
    /tmp/docker exec -t -u root sample apt-get -qq install dpkg-dev
    /tmp/docker exec -t -u root sample mv /etc/sudoers.bak /etc/sudoers

- script: |

    cd HVD/Sources/Proprietary/hvd-client/
  
    echo ------Update and install packages------
    sudo apt update -y
    sudo apt upgrade -y
    sudo apt install -y build-essential devscripts equivs git git-lfs

    echo ------Initialize build environment------
    sudo ./init-dev-hvd

    echo ------Build HVD------
    ./build.tp

    echo ------Build finshed------

但是第二个脚本在运行“更新和安装包”部分时卡在以下屏幕输出。

Setting up tzdata (2024a-0ubuntu0.20.04) ...
debconf: unable to initialize frontend: Dialog
debconf: (Dialog frontend will not work on a dumb terminal, an emacs shell buffer, or without a controlling terminal.)
debconf: falling back to frontend: Readline
Configuring tzdata
------------------

Please select the geographic area in which you live. Subsequent configuration
questions will narrow this down by presenting a list of cities, representing
the time zones in which they are located.

  1. Africa      4. Australia  7. Atlantic  10. Pacific  13. Etc
  2. America     5. Arctic     8. Europe    11. SystemV
  3. Antarctica  6. Asia       9. Indian    12. US
Geographic area: 
##[error]The operation was canceled.

/////////////////////////////////////////////////////////// ///////////////////

这是 6 月 5 日更新的 yaml。

trigger:
- master

pool: 'AWSLinux'

container: 
  image: ubuntu:20.04
  options: "--name sample -v /usr/bin/docker:/tmp/docker:ro"
  
steps:
- checkout: self
  lfs: true
  path: HVD
  clean: true

- script: |
    /tmp/docker exec -t -u root sample mv /etc/sudoers /etc/sudoers.bak
    /tmp/docker exec -t -u root sample apt-get -qq update
    /tmp/docker exec -t -u root sample apt-get -qq install sudo
    /tmp/docker exec -t -u root sample apt-get -qq install subversion
    /tmp/docker exec -t -u root sample apt-get -qq install dpkg-dev
    /tmp/docker exec -t -u root sample mv /etc/sudoers.bak /etc/sudoers

- script: |

    cd HVD/Sources/Proprietary/hvd-client/
  
    echo ------Update and install packages------
    sudo apt update -y
    sudo apt upgrade -y
    sudo DEBIAN_FRONTEND=noninteractive apt install -y build-essential devscripts equivs git git-lfs

    echo ------Initialize build environment------
    sudo ./init-dev-hvd

    echo ------Build HVD------
    ./build.tp

    echo ------Build finshed------

脚本在步骤:\'./build.tp\' 失败,并出现以下错误:

------Build HVD------
No packages directory, rebuilding...
I: Cleaning hvd-client
dh clean
All build files have been removed.
I: Checking external version for hvd-client
I: This is not an external
I: Copying hvd-client
I: Checking source requirements for hvd-client
I: Checking build requirements for hvd-client
dpkg-checkbuilddeps: error: Unmet build dependencies: lbzip2 cmake qt5-default libssl-dev libpcsclite-dev libpng-dev libpulse-dev libxrandr-dev libxkbfile-dev libxcursor-dev libxt-dev chrpath python3-pip python3-venv libpython3-dev libxcb-xinerama0 libfreetype6-dev libxft-dev libqt5x11extras5-dev libxinerama-dev libudev-dev upx wmctrl libxmu-headers libxmu-dev libglib2.0-dev freerdp2-dev liblz4-tool cython3 clang-tidy-11 libuvc-dev libcups2-dev qtmultimedia5-dev qtpositioning5-dev libxext-dev libxcomposite-dev libxdamage-dev libxfixes-dev libxtst-dev libavcodec-dev libavutil-dev libicu-dev libgbm-dev libdrm-dev libjson-c-dev libopencv-dev libcurl4-openssl-dev
帖子版权声明 1、本帖标题:相当于 vmImage: ubuntu 的 Ubuntu Docker 镜像
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由prabhakar在本站《ubuntu》版块原创发布, 转载请注明出处!
最新回复 (0)
  • sab 2月前 0 只看Ta
    引用 2

    通常,docker 容器内不需要 sudo。只需在构建时运行 apt 命令即可

  • 在哪里可以找到与 vmImage 等效的 Ubuntu Docker 映像:ubuntu

    恐怕目前没有与最新的 ubuntu VmImage 具有相同配置的 docker 映像。

    以下是与 Docker Hub 上 Microsoft 托管代理相关的公共映像: Azure Pipelines Agent 。但它们已经过时了。

    看起来 ubuntu:20.04 docker 镜像没有安装一些必需的工具。(SUDO、SVN、dpkg-architecture)

    为了解决这个问题,您可以使用 apt-get install 命令来安装所需的工具。

    但是由于此映像以非root身份运行,因此您无法直接运行命令来安装工具。

    这将导致以下权限错误:

    enter image description here

    您需要按照以下 YAML 脚本来安装它们:

    pool: 
      vmImage: ubuntu-20.04
    
    container: 
     image: ubuntu:20.04
     options: "--name sample -v /usr/bin/docker:/tmp/docker:ro"
    
    steps:
    - script: |
        /tmp/docker exec -t -u root sample mv /etc/sudoers /etc/sudoers.bak
        /tmp/docker exec -t -u root sample apt-get -qq update
        /tmp/docker exec -t -u root sample apt-get -qq install sudo
        /tmp/docker exec -t -u root sample apt-get -qq install subversion
        /tmp/docker exec -t -u root sample apt-get -qq install dpkg-dev
        /tmp/docker exec -t -u root sample mv /etc/sudoers.bak /etc/sudoers
    
    - next tasks:
    

    然后就可以使用容器作业中的工具了。

    有关更多详细信息,您可以参考此票: 无法在常见的容器发行版上获取根权限

    更新:

    请选择您居住的地理区域。后续配置问题将通过显示城市列表(代表城市所在的时区)来缩小选择范围。

    为了解决这个问题,您需要 DEBIAN_FRONTEND=noninteractive 在 apt install 命令之前添加。

    您可以尝试使用以下 yaml 示例:

    trigger:
    - master
    
    pool: 'AWSLinux'
    
    container: 
      image: ubuntu:20.04
      options: "--name sample -v /usr/bin/docker:/tmp/docker:ro"
      
    steps:
    - checkout: self
      lfs: true
      path: HVD
      clean: true
    
    - script: |
        /tmp/docker exec -t -u root sample mv /etc/sudoers /etc/sudoers.bak
        /tmp/docker exec -t -u root sample apt-get -qq update
        /tmp/docker exec -t -u root sample apt-get -qq install sudo
        /tmp/docker exec -t -u root sample apt-get -qq install subversion
        /tmp/docker exec -t -u root sample apt-get -qq install dpkg-dev
        /tmp/docker exec -t -u root sample mv /etc/sudoers.bak /etc/sudoers
    
    - script: |
    
        cd HVD/Sources/Proprietary/hvd-client/
      
        echo ------Update and install packages------
        sudo apt update -y
        sudo apt upgrade -y
        sudo DEBIAN_FRONTEND=noninteractive apt install -y build-essential devscripts equivs git git-lfs
    
        echo ------Initialize build environment------
        sudo ./init-dev-hvd
    
        echo ------Build HVD------
        ./build.tp
    
        echo ------Build finshed------
    
  • 谢谢,您的安装工具脚本有效,但是出现了一个新问题导致构建脚本卡住,我已经更新了问题描述,您能看看吗?

  • @Ming 请参阅我在答案中的更新。它可以帮助您解决管道中的最新问题。您可以参考此票:serverfault.com/questions/949991/…

  • 所以我有这三个围绕玩家旋转的游戏对象和一个最终将治愈玩家的鬼魂库存系统。我遵循这个教程:\'https://www.youtube.com/watc...

    所以我有这三个 gameObjects 围绕着旋转的 player 和一个用于幽灵的库存系统,它们最终会治愈玩家。我按照这个教程:\'https://www.youtube.com/watch?v=AoD_F1fSFFg\' 并且当你拾取一个物品时,它会显示在你的库存中。我希望精灵不显示在库存中,而是出现在 gameObjects 围绕的 player ,但我不确定如何做到这一点。请帮忙。

    Manager and 3 gameObjects (Ghost1, 2, 3)

    public class GhostManager : MonoBehaviour
    {
        public static GhostManager Instance;
        public List<Ghost> Ghosts = new List<Ghost>();
    
        public GameObject ghost1;
        public GameObject ghost2;
        public GameObject ghost3;
    
        private void Awake()
        {
            Instance = this;
        }
    
        public void Add(Ghost ghost)
        {
            Ghosts.Add(ghost);
        }
    
        public void Remove(Ghost ghost)
        {
            Ghosts.Remove(ghost);
        }
    
        public void ListItems()
        {
            foreach (var ghost in Ghosts)
            {
                GameObject obj = Instantiate(ghost1);
                var ghostIcon = obj.transform.Find("GhostIcon").GetComponent<Image>();
    
                ghostIcon.sprite = ghost.icon;
            }
        }
    }
    
    public class GhostPickUp : MonoBehaviour
    {
        public Ghost ghost;
        private int maxGhosts = 3;
    
        void PickUp()
        {
            if (GhostManager.Instance.Ghosts.Count < maxGhosts)
            {
                GhostManager.Instance.Add(ghost);
                Destroy(gameObject);
            }
        }
    
        void OnTriggerEnter(Collider other)
        {
            if (other.gameObject.CompareTag("Player"))
            {
                PickUp();
            }
        }
    }
    
    [CreateAssetMenu(fileName = "New Ghost", menuName = "Ghosts/Create New Ghosts")]
    public class Ghost : ScriptableObject
    {
        public int id;
        public string itemName;
        public int value;
        public Sprite icon;
    }
    
  • Kevin,你的解决方案有效。但现在构建失败,错误为“未满足构建依赖项”(请参阅​​更新的问题描述),是否有任何命令可以安装这些依赖项,谢谢。

  • 您是否尝试过采用与健康栏相同的方式?您可以在对象上添加类似健康栏图像的内容。您可以显示所需的精灵,而不是显示健康状况的栏。YouTube 上有很多健康栏教程。

  • @Ming 您可以在命令中添加以下内容:sudo apt-get install devscripts 和 mk-build-deps --install 以安装所需的软件包。请检查它是否可以工作。如果问题仍然存在,我建议您可以创建一个新的工单并在 /build.tp 文件中分享示例代码。这将有助于理解新问题。

  • mao 2月前 0 只看Ta
    引用 10

    我的目标是截取我的 Python 开发 IDE 的矢量截图。我在 Ubuntu 22.04 下使用 PyCharm 社区版。我安装了 gtk-vector-screenshot 包(请参阅 https://launchpa...

    我的目标是截取我的 Python 开发 IDE 的矢量截图。我在 Ubuntu 22.04 下使用 PyCharm 社区版。我已经 gtk-vector-screenshot 安装了该软件包(参见 https://launchpad.net/ubuntu/jammy/+package/gtk-vector-screenshot ),理论上应该可以解决问题。

    它允许我截取 Eclipse 或 LibreOffice 等的 pdf 屏幕截图。但是,它不适用于 PyCharm。如果我启动 take-vector-screenshot ,单击按钮,然后单击 PyCharm 窗口,则什么也不会发生(与截取的屏幕截图相反)。现在 LibreOffice、Eclipse 和 PyCharm 都是 Java 应用程序(至少据我所知)。

    所以我想知道是否有任何配置设置或其他我可以做的事情来 take-vector-screenshot 使用 PyCharm?也许 PyCharm 由于某种原因没有使用“正确”的 GTK 版本,我可以强制它这样做吗?

    对 PyCharm 进行矢量截图的替代方法也会受到欢迎。但问题不在于“普通”截图(光栅图形/位图格式,如 png 或 jpg)。我想截取整个 IDE 的屏幕截图,即菜单、窗口、工具栏等。因此,仅截取代码本身的屏幕截图并不能解决我的问题。

    我将感谢任何想法和建议。托马斯。

  • @nobodyMore 精灵并不代表健康,这是玩家拾起的物品,它会做不同的事情,比如治愈或增加一颗心。我想要的是当玩家拾起这个物品时,它会出现在围绕着玩家的三个游戏对象中。

  • .com/questions/78584903/…@Kevin Lu-MSFT 这是我创建的新问题。

  • 选项 1 :您可以使用 UI Canvas,将其设置为 World Space,并在您的层次结构和场景中正确定位它。

    在这种情况下,您可以使用与 UI 相同的精灵。

    选项 2 :您可以使用 3D Quad 并在层次结构和场景中正确定位它。

    在这种情况下,您还需要正确设置代表精灵的纹理和材质。


    OnTriggerEnter 看起来很好,你 PickUp 看起来很好,你 Add 看起来很好。

    ListItems 看起来很奇怪:

    • p6

    • p7

    • p8

      for (var i = 0; i < 3; i++){    // Or you can just use List<GameObject> ghostVisuals instead of ghost1, ghost2 and ghost3    GameObject currentGhost = null;    if (i == 0)        currentGhost = ghost1;    else if (i == 1)        currentGhost = ghost2;    else if (i == 2)      currentGhost = ghost3;    else        throw new InvalidOperationException();    if (Ghosts.Count > i) {        currentGhost.SetActive(true); // We have a ghost, so enable the GameObject        // Here you access the data you need for the `currentGhost`        // e.g. if you have added a child GhostIcon to it:        var ghostIcon = currentGhost.transform.Find("GhostIcon").GetComponent<Image>();        ghostIcon.sprite = Ghosts[i].icon;    }    else {        currentGhost.SetActive(false); // No more ghosts, disable the game object    }}

      p9

  • ... 我测试了浅色模式和深色模式,但都无济于事。\'Hello World\' 源代码可用

  • 引用 15

    作为一个权宜之计,插件“Easy Code Screenshots”可以截取高质量的代码截图,但不是矢量,也不包括 IDE 的其余部分。

  • 如上所述,在我的 Ubuntu Linux 22.04 上,我可以截取 LibreOffice 和 Eclipse 的矢量截图。两者都运行良好。我假设 swing 或其他程序在这里使用 GTK 作为后端......这就是为什么我想知道为什么它不能与 PyCharm 一起使用。

  • 通过 alr 构建 sdlada 没问题,但运行步骤失败($ alr run)。sdlada_2.5.20_cd53c280$ alr run 正在运行 sdlada=2.5.20 的预构建操作... make:on...

    构建 sdlada 没问题,通过 alr 也可以,但是运行步骤失败($alr run)。

    sdlada_2.5.20_cd53c280$ alr run
     Running pre-build actions for sdlada=2.5.20...                            
    make : on entre dans le répertoire « /media/dubois/4To/Donnees/Courrier/020-Ada/X-Bibliotheque/sdlada_2.5.20_cd53c280/build/gnat »
    mkdir -p gen/src/
    make : on quitte le répertoire « /media/dubois/4To/Donnees/Courrier/020-Ada/X-Bibliotheque/sdlada_2.5.20_cd53c280/build/gnat »
     Building sdlada=2.5.20/build/gnat/sdlada.gpr...
     Build finished successfully in 0.47 seconds.
    error: Executable "sdlada" not found
    dubois@db:/media/dubois/4To/Donnees/Courrier/020-Ada/X-Bibliotheque/sdlada_2.5.20_cd53c280
    $ 
    

    -第二个问题是“with sdlada”失败:

    $ ./gnatmake -P unit_tests.gpr
    --------------------------------
    Compilation du unit_tests
    --------------------------------
    Compile
       [Ada]          unit_tests.adb
    unit_tests.adb:28:06: error: file "aunit.ads" not found
    unit_tests.adb:29:06: error: file "aunit.ads" not found
    unit_tests.adb:30:06: error: file "aunit.ads" not found
    unit_tests.adb:30:06: error: "Unit_Tests (body)" depends on "Sdl_Suites (spec)"
    unit_tests.adb:30:06: error: "Sdl_Suites (spec)" depends on "Aunit (spec)"
    gprbuild: *** compilation phase failed
    $ 
    
    with unit_tests.adb as:
    
    with AUnit.Run;
    with AUnit.Reporter.Text;
    with SDL_Suites;
    
    procedure Unit_Tests is
     etc..
    

    谢谢马克

  • alr run 将会失败,因为 sdlada 它是一个库箱,而不是二进制箱(即没有构建可执行文件)。

    至于第二个问题,以下内容无法保证(出于与 macOS 相关的原因;您应该擅长使用 Ubuntu),并且可能有更简单的解决方案......

    cd unit_tests
    alr init --in-place --bin unit_tests
    alr with aunit
    alr with sdlada --use=..
    

    这将创建 alire.toml 。现在编辑它,并插入行

    project-files = ["../build/gnat/unit_tests.gpr"]
    

    线前 [[depends-on]] .

    alr run 现在应该构建 unit_test 可执行文件并运行它。


    Github 项目 上提出问题 .

  • 如何才能完全禁用安装 Debian 软件包时出现的提示?我已经使用了找到的所有选项,但仍有一些软件包出现提示。我正在使用此 c...

    如何才能完全禁用安装 Debian 软件包时出现的提示?我已经使用了找到的所有选项,但有些软件包仍然会提示。

    我正在使用这个命令:

    apt-get -y --allow-unauthenticated --force-yes -o DPkg::Options::="--force-overwrite" -o DPkg::Options::="--force-confdef" install x11-common
    

    为什么 x11-common 包裹仍然提示?我该如何摆脱这些提示?

  • 您没有提供关于这是什么提示的任何详细信息,但我猜测它是在 debconf 提示配置问题。

    如果是,您可以设置 debconf 为非交互模式。例如,执行 dpkg-reconfigure debconf ,然后它将使用所有内容的默认值。

返回
作者最近主题: