Использовать apt-get source в репозитории Debian без использования /etc/apt/source.list

Я пытаюсь использовать apt-get source как обычный пользователь на Debian squeeze система.

Я хочу получить источники для cyrus-imapd-2.4 от testing/wheezy репозиторий.

apt-get source работает без прав root; однако, кажется, что apt-get не может получить что-либо из репозитория, который не находится в /etc/apt/sources.list,

Есть ли опция командной строки, альтернативная sources.list файл, переменная окружения, которая получит apt работать с пользовательским репозиторием?

У меня есть root-доступ, чтобы я мог изменить /etc/apt/sources.listОднако я действительно не хочу делать это по ряду причин.

3 ответа

Решение

Итак, я разработал решение, используя самую полезную информацию из ответов Денниса и Олафа. Это включает использование настраиваемого сценария конфигурации для 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 Исходный пакет из репозиториев Wheezy как обычный пользователь Squeeze, выполнив следующие команды:

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 

Для тех, кто заинтересован в следующем шаге - построении пакета cyrus в качестве пользователя без полномочий root - ответ лежит здесь.

От человека подходящего:

...
-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

Вероятно, вы можете испортить настройки Dir::Etc и Dir::State (apt-get -o Dir::State=/tmp/var ....). См. /Usr/share/doc/apt/examples/configure-index.gz для всех доступных переменных.

Если кто-нибудь наткнется на это в 2020 году, используя dget(часть пакета devscripts) может быть лучшей идеей, поскольку не требует каких-либо настроек; просто дайте ему URL-адрес .dsc файл, и он выполнит свою работу:

$ 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.

Другие вопросы по тегам