首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dpkg对跨编译的debian包进行存储以伪造“奴仆”。

使用dpkg对跨编译的debian包进行存储以伪造“奴仆”。
EN

Stack Overflow用户
提问于 2015-09-01 06:19:37
回答 1查看 1.1K关注 0票数 3

我的设置如下:我有两组库,它们都是为amd64 (pc)和armelx (ARM)编译的。它们都用于在构建机器上交叉编译一些软件。

第一个版本(amd64)可以通过更新apt存储库和在构建机器上使用apt-get install来轻松地更新。然而,我不想用apt安装ARM的软件包,因为它不支持安装到不同的目录。如果安装到默认目录,则版本不能共存。对吗?

到目前为止,每次有新版本的包时,构建机器都会手动更新,只需将dpkg -x解压缩到专用的“假”私有目录中即可。这是编译器在交叉编译其他SW时也会查看的地方。问题是,系统中任何地方都没有关于这些提取的包或它们的版本的信息,对吗?它应该在状态文件中。

我的想法是用dpkg -i <package.deb> --root=<rootfs>将这些软件包安装在这个用户的dir上。这个能行吗?我有感觉它不会,因为deb软件包没有post/预删除/安装脚本,所以它可能在某种程度上适用于处女安装,而不是升级吗?此外,rootfs目录结构必须是什么样子,它必须包含什么才能让它第一次工作呢?有什么工具可以帮助解决这个问题吗?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-09-01 15:16:15

一旦您有了一个基本的armel Debian系统,您就可以实际输入它并使用类似QEMU的方法在其中运行armel代码。qemu-arm-static工具(在qemu-user-static包中)可以利用Linux中的其他功能使其能够在QEMU系统模拟器下直接运行ARM可执行文件。因此,您可以在armel "rootfs“中运行dpkgapt-get等,同时在amd64硬件上运行。

示例:

代码语言:javascript
复制
my_arm_system=/mnt/arm_system
sudo cp /usr/bin/qemu-arm-static "$my_arm_system/usr/bin/"
sudo chroot "$my_arm_system" apt-get update
sudo chroot "$my_arm_system" apt-get install $somepkg
sudo chroot "$my_arm_system" /bin/bash

首先,对于基本armel系统的设置,无论是在chroot中还是在其他场合,Debootstrap都是典型的建立Debian基系统的方法。您可以使用它来安装不同体系结构的基本系统,但是它需要额外的几个步骤:

代码语言:javascript
复制
distro=jessie   # or whatever
echo "Debootstrap phase 1"
sudo mkdir "$my_arm_system"
sudo debootstrap --arch=armel --verbose --foreign "$distro" "$my_arm_system"
sudo cp /usr/bin/qemu-arm-static "$my_arm_system"/usr/bin/
echo "Debootstrap phase 2"
sudo chroot "$my_arm_system" /debootstrap/debootstrap --second-stage

多带是另一个有用的工具;它的目的是在一个不同体系结构的主机上设置一个体系结构的Debian环境,或者使用更复杂的APT源代码组合。它并不完美,因为它没有完全遵循所有的deb安装“规则”。为了使它的工作变得合理,它需要一些捷径/偏差。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32324789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档