0

如何以编程方式下载 apt 包的最新 deb 文件并提取内容以便能够访问其中的脚本?我希望这可以使用标准工具套件(即没有 apt-get 或 apt-cache)在 Mac 上工作。

背景:我的模拟项目使用客户端代码来执行。主机模拟工具在linux环境下运行,通过内部apt服务器进行管理。一位同事正在他的 linux 机器上使用 apt-get 来安装软件包,然后将单个文件发送给我们。我希望我们的客户以适用于 mac 客户端的方式以编程方式执行此操作。我已经试运行了这个过程(见示例答案),但我很惊讶没有人谈论过这个。

关于如何最好地做到这一点的任何建议?

4

1 回答 1

0

这是我在询问之前试图说服自己可行性的内容。

获取 linux 系统上的链接信息:apt-cache show s-package-name 从这里,我找到了这一行:

Filename: pool/main/s/s-package-name/s-package-name_0.2.0-variousNumbers3_all.deb

由此,我能够做到以下几点:

wget http://aptserver/pool/main/s/s-package-name/s-package-name_0.2.0-variousNumbers3_all.deb
ar vx s-package-name_0.2.0-variousNumbers3_all.deb
tar -zxvf data.tar.gz

这反过来提取了一个文件夹opt,其中包含一个具有组织名称的文件夹(以下简称sOrg),其中是一个名为 package-name 的文件夹,其中包含我想要的文件。

最后,我在浏览器中回头查看http://aptserver/pool/main/s/s-package-name/,我看到了类似的内容:

s-package-name_0.2.0-variousNumbers0_all.deb    12-Jul-2013 22:40   2.5M     
s-package-name_0.2.0-variousNumbers1_all.deb    16-Jul-2013 15:30   2.6M     
s-package-name_0.2.0-variousNumbers2_all.deb    22-Aug-2013 23:45   2.6M     
s-package-name_0.2.0-variousNumbers3_all.deb    12-Sep-2013 22:21   2.6M     

这让我认为我应该能够使用网络查询来查看它并确定最新的 deb 文件的名称(无需进入 linux 机器)。

我已准备好将其自动化,但我想看看是否首先解决了这个问题,或者是否有更好的攻击方法。

于 2013-09-19T19:22:27.383 回答