我正尝试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
...
-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 文件一起位于存储库档案中。