Команды apt-get upgrade
и apt-get install <packagename>
получают /var/cache/apt/archives/lock
при загрузке и установке.
Я думаю, что должна быть возможность загружать пакеты без блокировки. Мы должны получить блокировку только при обновлении / установке загруженных пакетов. Как вы думаете? Почему мы не можем загрузить более одного пакета одновременно? Или почему мы не можем загрузить пакеты при установке другого?
ОБНОВЛЕНИЕ: извините, мой отказ. apt-get download package-name
только загружают package-name
на текущий каталог. затем это не ответ на Ваш вопрос.
apt-get download
также не, загружают зависимости от пакета.
альтернатива для загрузки пакетов и зависимостей, но не установки была бы: sudo apt-get -d install package-name
, но это также не решает проблему блокировки.
я думаю, что не возможно работать, два экземпляра Кв. - получают simuntanea путем
, если Ваша цель состоит в том, чтобы загрузить пакеты более быстрый путь, возможно, опция состоит в том, чтобы использовать способно-быстрый ( https://github.com/ilikenwf/apt-fast) вместо Кв. - добираются (в моем случае, я использую способно-быстрый, потому что у меня есть очень нестабильное интернет-соединение)
предыдущий ответ:
опция состоит в том, чтобы использовать apt-get download package-name
, чтобы только загрузить пакет и затем работать sudo apt-get install package-name
для установки загруженного пакета.
apt-get download
не создают блокировку.
можно работать одновременно apt-get download
и sudo apt-get install
Блокировка используется, чтобы гарантировать, что только один процесс может изменить способную базу данных во время. Если другой процесс устанавливал пакет, и каждый устанавливал тот, который они могли бы закончить тем, что были очень смущены и повредить базу данных. для больше на этом понятии Google 'транзакции базы данных' или 'атомарность'.
можно избежать блокировок путем загрузки пакетов сами с помощью ссылок от/etc/apt/sources.list и просмотрев их в веб-браузере. Можно затем установить debs, который Вы загрузили gdebi или dpkg. Однако, если Вы делаете это, необходимо будет разрешить зависимости сами, который не всегда легок и является, по моему скромному мнению, путем, более раздражающим, чем блокировки.
, Если блокировки являются раздражающими затем, полагают, что пакетная обработка Ваших установок для включения нескольких пакетов, например, склонный - получает package1 package2 package3 установки и идет, делают немного чая.
, Если Вы просто хотите знать, что командная строка использует, пропустите к" команда, которую Вы получаете, ".
- Кв. - получает поведение -
Что касается, 'Почему' склонный - добираются, действительно получает блокировку при загрузке, причина, кажется, что это хочет удостовериться, что привычка блокировки быть устраненным (заблокированный) некоторым другим процессом, в то время как это загружает. Теперь проблема состоит в том, что, когда каждый готов установить некоторый пакет, и блокировка установлена, apt-get
отказывается делать что-либо, даже загружая файлы.
- Личное мнение -
должно быть возможно загрузить пакеты, не получая блокировку
, я определенно соглашаюсь с Вами. APT должен иметь опцию позволить загружать файлы, в то время как блокировка установлена. На самом деле, по-моему, должна быть система очереди установки, чтобы позволить ставить установку в очередь, в то время как некоторый пакет устанавливается, и следующие пакеты загружаются. Печально никакая такая опция, где добавлено для конечного пользователя. Мы должны несколько взломать склонный - добираются.
- Как я решил проблему -
Теперь, давайте решим проблему:
man apt-get
, сопровождаемый /
поиск с помощью ключевого слова download
учит нас, что возможно решить и загрузить пакет зависимости командой: sudo apt-get -d install <package-name>
info apt.conf
затем поиск /
lock
сообщает нам, что параметр конфигурации Debug::NoLocking=1
отключает блокировку.
man apt-get
затем /
configuration
сообщает нам, что параметры конфигурации могут быть установлены на основе на команду с помощью опции -o
. Так определение -o Debug::NoLocking=1
в командной строке обойдет использование блокировки для той команды. Быть осторожным, когда Вы используете переопределение блокировки. , В частности, необходимо удостовериться, что это не используется для установки пакетов (Можно хотеть настроить псевдоним). Предложено, чтобы это могло использоваться для выполнения пробных прогонов (apt-get -s
) или одновременные обновления (apt-get update
). Я предполагаю, что нет никакой проблемы с помощью него для загрузки пакетов, хотя было бы намного лучше, если специализированная опция могла бы быть добавлена разработчиками.
sudo apt-get -o Debug::NoLocking=1 -y -d install <package-name>
<час> - Псевдоним -
можно хотеть создать псевдоним для него где-нибудь, как в Вашем ~/.bashrc
:
alias saptdl="sudo apt-get -o Debug::NoLocking=1 -y -d install"
я не знаю, как сказать удар, как к автоматическому заполнению вкладки, которые управляют, но я знаю, что альтернативная оболочка zsh
справляется с автозавершением псевдонима. Если Вы решаете дать ему движение, я предлагаю использовать oh-my-zsh
для большего опыта.
- Функция -
возможно уточнить немного больше это и создать функцию, которая проверяет, установлена ли блокировка (/var/lib/dpkg/lock
) и принимает решение или установить пакет или на незапертой загрузке это. Что-то как:
function saptdl () {
if [ sudo fuser /var/lib/dpkg/lock ]
then sudo apt-get -o Debug::NoLocking=1 -y -d install "$@"
else sudo apt-get install "$@"
fi
}
Что касается автоматического завершения функции, мне жаль, что я не мог помочь. Возможно, я найду путь и добавлю его позже. Не стесняйтесь редактировать мой ответ.