我想在将提供几个包的服务器上设置一个 APT 存储库。
有没有办法在服务器上不安装任何软件的情况下进行设置?
文件必须如何组织?
编辑:我一定做错了什么......有人可以帮助我吗?我在http://quickmediasolutions.com/apt/dists有存储库
我不确定在哪里或什么,但有些地方配置错误。我目前只有一个包,它适用于所有架构。
这是我添加的内容/etc/apt/sources.list
:
deb http://quickmediasolutions.com/apt stable main
只需在网络服务器上设置一个简单但签名的存储库。因为大多数其他教程有些过时或繁琐,我将尝试在此处复制该过程。初始配置需要一些努力,但简单的构建脚本使其易于管理。你可以直接放入新
*.deb
文件,然后更新,或者让一个 cron 作业来处理。生成一些签名密钥
首先,您需要
gpg
为包和存储库创建一个签名密钥。将其设为 (4) 个 RSA 签名密钥,无需密码,并在需要时赋予其唯一$KEYNAME
性。(更多示例假设“dpkg1
”作为键名。)我说没有密码,因为你的网络服务器没有内置的猴子来重复输入。并且签名的包和存储库只是为了满足更新管理员对此的抱怨。只需将两个密钥上传到您的网络服务器上的新存储库目录,但在初始化后
/apt/
删除secret.gpg
密钥。更新 CGI 脚本
这是它的简单更新 shell/CGI 脚本:
这
gpg
三行只需要执行一次,即可在某个目录$GNUPGHOME
(文档根目录之上)中初始化 GPG 设置。只删除secret.gpg
成功后。这个小型 shell 脚本的一个独特功能是它接受
*.deb
您放入的任何文件,但也递归搜索(从上一级开始)其他文件,并将它们符号链接。(Options FollowSymLinks
最终需要 .htaccess。)您可以手动执行此脚本作为 CGI 或每个 cron 作业。但是隐藏它,或者最好将它移出文档根目录。
因为它是一个“微不足道”的 apt 存储库,所以它需要以下
apt-sources.list
条目:这适用于单架构存储库,如果您不期望有数百个软件包。
包签名
一旦你设置了你的 gpg 密钥,签署你的个人包也很简单:
(这应该在构建软件包的工作站上完成,而不是在存储库网络服务器上。)
未签名的存储库
如果您不需要签名包,那么您可以将更新脚本缩减为:
普通用户仍然可以使用,但需要一个自定义标志
apt.sources
:但是请不要
trusted=yes
习惯性地使用该标志,或者如果您不确定包裹的来源。为了可用性
对于最终用户,只需将 a
HEADER.html
放入存储库目录即可。Apachesmod_auto_index
将在前面添加注释:备择方案
现在有一些工具可以自动化存储库管理。甚至还有存储库在线托管商和包构建服务(gemfury、packagecloud、bintray等)
一个相当方便的替代方案是prm。这是一个 Ruby 脚本,用于构建复杂的 APT 和 YUM 存储库。(但我们只希望 RPM 最终在不久的将来消亡。) - 最好安装在
gem install prm
.而且我还编写了一个小脚本来类似地自动执行此操作:http: //apt.include-once.org/apt-phparchive - 请注意它不是过于健壮并且是用 PHP 编写的(一次,这是巧合),最初用于 DEB、RPM-over-APT 和 Phar 包。
由于这与原始问题密切相关,因此还有一些工具可以更轻松地构建 Debian 软件包。有些过时:EPM。更现代:FPM。还有我个人的分支:XPM(打包脚本语言应用程序的更懒惰的方法。)
使用 dpkg-scanpackages 设置一个简单的存储库非常容易。这个页面解释了如何设置一个简单的 repo,这个页面解释了如何使用它(向下滚动到示例 4)。
是的。你可以这样做。您只需要以正确的方式组织文件并创建索引文件。如果您将目录结构放在 Web 服务器的文档根目录中,则可以通过 Web 服务器访问包。
以下是如何组织文件以及如何创建索引文件的详细说明。
如果您愿意安装该软件包,也可以使用名为reprepro的工具。这将使管理更加方便。
您也许还可以考虑使用Launchpad PPA
对于在遵循马里奥的回答后遇到此错误的任何人:
请执行下列操作:
我把我
*.deb
的文件放在debs
文件夹里。