Мне нужно использовать, apt-get download
чтобы получить конкретную версию .deb
файла, но не обязательно точную версию. .deb
Зависимости могут использовать выражения, такие как >=0.3.0
и я хотел бы apt-get download
получить ту же версию, что и та, которая будет загружена с использованием такой зависимости.
Подводя итог, я хочу работать так:
$ apt-get download package='>=0.3.0'
Любая идея, как я мог получить эту функциональность?
Ответы:
Вы могли бы сделать это, сначала узнав, какая версия является самой новой версией, которая также больше или равна желаемой минимальной версии. Затем вы загружаете именно эту версию, используя
apt-get download
. Вот скрипт, который делает это (это немного уродливо, но вы поняли):Вы должны добавить проверку ошибок в случае, если пакет не существует и т. Д., Но он содержит основное решение. Кроме того, я предположил, что вам нужен новейший доступный пакет, по крайней мере, определенной версии. Если вместо этого вы хотите использовать самый старый из доступных пакетов, который имеет хотя бы определенную версию, вам нужно настроить скрипт так, чтобы он прекратил поиск, как только он найдет что-то, по крайней мере, желаемой версии.
источник
Поскольку вы хотите именно то,
apt-get install
что вам дается, возможно, стоит запуститьapt-get install
в режиме «только для загрузки», используя пользовательский каталог архивов:Как изменить каталог архивов? Это вариант конфигурации:
Они могут быть временно изменены с помощью
--option
параметра:Подвести итоги:
Эта команда загрузит (и только скачать, не устанавливать) соответствующие
.deb
файлы<package>
в/some/cache/dir
. Каталог будет содержать.deb
файлы для пакета, его зависимости, файл блокировки и «частичный» каталог (который должен быть пустым). Фильтрация нужного.deb
вам файла должна быть тривиальной.источник
apt-get install
требуется доступ суперпользователя.apt-get download
также позволяет установить целевой выпуск. Разве это не поможет?Комментарий # 1 (не может использовать комментарии) - добавление параметра
--print-uris
кapt-get install
не требует прав суперпользователя (но вы должны загрузить его на себя - лучше всего с Wget -i file_list).источник
Без привилегий SU вы все равно можете запустить apt-cache и объединить с фильтрацией, чтобы получить эту информацию. Используйте что-то вроде:
На Debian 5:
На 6 вы можете использовать:
Apt-cache, похоже, изменил поведение при упорядочении списка между 5 и 6, так что на 6 последним будет последний.
Одним словом предостережения является то, что если вы используете этот вывод, как вы говорите «для получения той же версии, что и та, которая будет загружена с использованием такой зависимости», версия доступного пакета может измениться, если вы запустите apt-get update (с конечно, или если это было установлено для автоматического запуска и происходит между тем, когда вы собрали версию, и когда вы запускаете скрипт, который устанавливает вещи, ожидающие, что это будет версия.
источник