我看了另一个类似的问题关于添加第三方存储库。我正在尝试添加一个名为的第三方桌面 IM 客户端暴动。虽然该网站提供了第三方链接,但它没有提供如何在 Debian 中添加第三方源或密钥环的说明。我经历了https://riot.im/packages/debian/pool/main/并在我的 /etc/apt/sources.list 中添加了以下内容 -
######## Third party repos #######
deb https://riot.im/packages/debian/ stretch main
现在我有两个问题:-
A。是第三方回购。我输入的是正确的还是我应该向上游询问更多信息。
b.由于所有软件包通常都在 Debian Universe 中签名,因此如何添加安全密钥。公钥给出于https://riot.im/packages/debian/repo-key.asc
我正在进行 Debian 拉伸/测试。
答案1
正如其他帖子中所建议的那样,您绝不能使用 来安装任何第三方密钥apt-key add
,因为这会导致系统接受来自系统上配置的所有其他存储库上的第三方密钥持有者的签名。您应该设置存储库并安装密钥,如下所示:
为手动安装的 OpenPGP 密钥创建目录:
$ sudo mkdir /usr/local/share/keyrings
将密钥下载到目录中。
由于您的密钥的扩展名是
.asc
,它可能是“ascii-armored”(您可以通过下载密钥并在文本编辑器中打开它来检查这一点:如果它以类似的内容开头-----BEGIN PGP PUBLIC KEY BLOCK-----
然后它是装甲的;如果它看起来像一组二进制数据,那么它没有装甲,您可以按原样使用它):
对于铠装钥匙:
$ curl https://riot.im/packages/debian/repo-key.asc | gpg --dearmor | sudo dd of=/usr/local/share/keyrings/riot-archive-keyring.gpg
如果钥匙没有装甲,则使用以下命令:
$ sudo wget -O /usr/local/share/keyrings/riot-archive-keyring.gpg https://riot.im/packages/debian/repo-key.asc
将所需的第 3 方存储库添加到源列表中(注意该
signed-by
选项,它告诉 APT 该存储库已使用特定密钥进行签名):现在建议对源使用新的 deb822 多行格式。因此,
.sources
使用以下相应内容创建新文件:$ sudoedit /etc/apt/sources.list.d/riot.sources
Types: deb URIs: https://riot.im/packages/debian/ Suites: stretch Components: main Signed-By: /usr/local/share/keyrings/riot-archive-keyring.gpg
或者,如果您更喜欢传统样式(每个源一行),请改用此命令:
$ echo "deb [signed-by=/usr/local/share/keyrings/riot-archive-keyring.gpg] https://riot.im/packages/debian/ stretch main" | sudo tee -a /etc/apt/sources.list.d/riot.list
将第 3 方存储库限制为仅某些特定软件包。为 APT 创建首选项控制文件:
$ sudoedit /etc/apt/preferences.d/riot.pref
将以下内容放入文件中(如有需要,可以在包名后面添加星号(
*
)作为通配符,或者列出多个包名,并用空格()分隔:
Package: * Pin: origin riot.im Pin-Priority: 1 Package: riot-web Pin: origin riot.im Pin-Priority: 500
您可以在这里找到 Debian 的官方信息: https://wiki.debian.org/DebianRepository/UseThirdParty
答案2
要添加密钥,请运行:
wget https://riot.im/packages/debian/repo-key.asc
sudo apt-key add repo-key.asc
第三方存储库是正确的并且与发布的通用格式兼容 Debian 维基:
该文件中的条目通常遵循以下格式:
deb http://site.example.com/debian distribution component1 component2 component3