在 debian repo 上使用 apt-get 源,而不使用 /etc/apt/source.list

在 debian repo 上使用 apt-get 源,而不使用 /etc/apt/source.list

我正尝试apt-get source以普通用户身份在 Debiansqueeze系统上使用。

cyrus-imapd-2.4我想从存储库中检索源testing/wheezy

apt-get source无需 root 权限即可工作;但是,似乎没有办法让 apt-get 从不在的存储库中获取任何内容/etc/apt/sources.list

是否有任何命令行选项、备用sources.list文件、环境变量可以apt与自定义存储库一起工作?

我确实具有 root 访问权限,因此我可以更改/etc/apt/sources.list,但是由于多种原因我真的不想这样做。

答案1

因此,我利用 Dennis 和 Olaf 回答中最有用的信息制定了一个解决方案。这涉及使用自定义配置脚本apt,并提供更多选项。

Dir::State "some-dir/tmp/var/lib/apt";
Dir::State::status "some-dir/tmp/var/lib/dpkg/status";
Dir::Etc::SourceList "some-dir/tmp/etc/apt.sources.list";
Dir::Cache "some-dir/tmp/var/cache/apt";
pkgCacheGen::Essential "none";

这里引用的所有目录和文件都必须存在于文件系统中,并且还需要发出一些命令才能apt按预期工作:

builduser@host$ mkdir some-dir/tmp/var/lib/apt/partial
builduser@host$ mkdir some-dir/tmp/var/cache/apt/archives/partial
builduser@host$ touch some-dir/tmp/var

我的some-dir/etc/apt.sources.list文件如下所示:

deb-src http://ftp.debian.org/debian wheezy main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free

然后,我能够cyrus-imapd-2.4以 Squeeze 上的普通用户身份通过​​发出以下命令从 Wheezy 存储库成功下载源包:

builduser@host$ apt-get update -c some-dir/etc/apt.conf
builduser@host$ apt-get source cyrus-imapd-2.4 -c some-dir/etc/apt.conf 

对于那些对以下步骤感兴趣的人 - 以非 root 身份构建 cyrus 包 - 答案就在这里

答案2

apt-get 命令

...
-c, --config-file  
    Configuration File. Specify a configuration file to use. The program will
    read the default configuration file and then this configuration file.
    See apt.conf(5) for syntax information. 
-o, --option
    Set a Configuration Option. This will set an arbitrary configuration option.
    The syntax is -o Foo::Bar=bar.

Files

/etc/apt/sources.list
    Locations to fetch packages from. 
Configuration Item: Dir::Etc::SourceList.
...

因此,看来,您可以构建自己的配置文件并使用它或Dir::Etc::SourceList在命令行上设置-o Dir::Etc::SourceList=/path/to/my/sources.list

答案3

您可能对设置 Dir::Etc 和 Dir::State (apt-get -o Dir::State=/tmp/var ....) 感到困惑。请参阅 /usr/share/doc/apt/examples/configure-index.gz 了解所有可用变量。

答案4

如果有人在 2020 年偶然发现这一点,使用dget(devscripts 包的一部分)可能是一个更好的主意,因为它不需要任何配置;只需给它一个.dsc文件的 URL,它就会完成工作:

$ sudo apt install devscripts
$ dget -u http://archive.raspberrypi.org/debian/pool/main/f/ffmpeg/ffmpeg_4.1.6-1~deb10u1+rpt1.dsc

.dsc 文件通常与 .deb 文件一起位于存储库档案中。

相关内容