我试图在debian squeeze系统上使用apt-get source作为常规用户。
我想从testing/wheezy仓库中检索cyrus-imapd-2.4的源代码。
apt-get source没有root权限; 但是,似乎没有办法使apt-get从不在/etc/apt/sources.list的存储库中获取任何内容。
有没有任何命令行选项,备用sources.list文件,环境variables,将apt使用自定义存储库?
我有根访问权限,所以我可以改变/etc/apt/sources.list ,但是我真的不想这样做的原因很多。
从男人得到 :
... -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. ...
所以,看起来,你可以build立自己的configuration文件,并使用该命令或在命令行上设置Dir::Etc::SourceList -o Dir::Etc::SourceList=/path/to/my/sources.list
所以,我制定了一个解决scheme,使用丹尼斯和奥拉夫答案中最有用的信息。 这涉及到使用apt的自定义configuration脚本,以及更多的选项。
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";
这里引用的所有目录和文件必须存在于文件系统中,并且需要发布一些更多命令才能按照预期工作:
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
然后,我可以通过发出以下命令,以成熟的Squeeze用户的身份从Wheezy回收站成功下载cyrus-imapd-2.4源码包:
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
对于那些有兴趣的下一步 – build立一个非根的cyrus包 – 答案就在这里 。
你可以用Dir :: Etc和Dir :: State(apt-get -o Dir :: State = / tmp / var ….)来设置。 有关所有可用的variables,请参阅/usr/share/doc/apt/examples/configure-index.gz。