Почему центр программного обеспечения не допускает многократную загрузку?

29

Мне было интересно, почему центр программного обеспечения не загружает все запрошенные приложения и устанавливает по одному, когда они заканчивают загрузку. Или вместо этого, почему центр программного обеспечения не загружает приложение, в то время как другой устанавливает

JesusLives ii
источник
вероятно, просто чтобы сохранить пропускную способность ...
Drnessie
1
AFAIK sudo apt-get installможет установить столько пакетов, сколько вы хотите. Вам нужно знать имя пакета.
sagarchalise
@drnessie нет, это не так! если вы устанавливаете оба одновременно с помощью apt-get, вы загружаете их одновременно, а затем устанавливаете только по одному за раз.
Алвар
@ Алвар Хорошо. Я сделал это в Linux Mint. Но попробовать то же самое в Ubuntu не работает. Как сделать?
MycrofD
@MycrofD А что ты пытаешься?
Алвар

Ответы:

29

Это хороший вопрос. Это потому, что он основан на тех же пакетных инструментах, которые используют apt-get и другие. Они разработаны таким образом, что от вас требуется предоставить все устанавливаемые пакеты, а затем все остальное происходит автоматически. В большинстве случаев это очень хорошо, но для Центра программного обеспечения это вызывает некоторые проблемы. Вам сначала нужно будет выбрать пакеты, которые вы хотите установить, а затем нажать кнопку, чтобы фактически загрузить и установить их, либо вы должны поставить приложения в очередь, а затем загрузить и установить один за другим. Это обеспечивает гораздо лучший пользовательский опыт, если вы устанавливаете одно приложение, чем необходимость использовать эти дополнительные клики, но это также раздражает, когда вы «совершаете покупки».

Это можно исправить, поэтому я ожидаю, что в будущем это будет исправлено, но это действительно означает воссоздание или переписывание существующих инструментов, поэтому я не думаю, что это будет иметь очень высокий приоритет.

Позвольте мне уточнить:

Пакет может зависеть от других пакетов. Если эти пакеты недоступны, пакет не может быть установлен. Поэтому такие инструменты, как apt-get, сначала загрузят все запрошенные вами пакеты и все пакеты, от которых они зависят, и т. Д., А затем установят все из них. Таким образом, вы обычно предоставляете все нужные вам пакеты за один раз, и они сначала загружаются, а затем устанавливаются.

Когда вы решаете установить приложение в центре программного обеспечения, вы обычно хотите, чтобы оно сразу начало загружаться и устанавливаться. Но чтобы убедиться, что все в порядке, можно выполнить только одну установку за один раз. Поэтому, когда вы устанавливаете приложение, вам нужно подождать, пока это приложение будет полностью загружено и установлено, прежде чем начнется следующая загрузка и установка.

Это можно исправить, не используя apt-get для установки пакетов, а вместо этого загружая пакеты вручную, а затем используя dpkg для их установки, когда они будут готовы. Вы по-прежнему не сможете установить два пакета одновременно, но вы сможете начать загрузку новых пакетов, когда завершались ранее запущенные установки. В некоторых случаях это сэкономит довольно много времени, поэтому это хорошая идея. Но в большинстве случаев это не имеет большого значения, поэтому усилия лучше сосредоточить в другом месте.

Джо-Эрленд Шинстад
источник
Фактически, apt-get может загружать пакеты без их установки, хотя я не уверен на 100%, что это работает с заблокированной базой данных ...
JanC
одновременная загрузка и, возможно, установка работает в Linux Mint. Это не в Ubuntu.
MycrofD
2
@MycrofD: я действительно не знаю, в чем смысл этого комментария. Конечно, вы можете загружать несколько пакетов одновременно с Ubuntu. Вы просто не можете сделать это с помощью apt-get и инструментов на его основе. Это очевидно независимо от того, о каком дистрибутиве вы говорите.
Джо-Эрленд Шинстад
10

вы можете установить только один пакет одновременно sudo apt-get install, но вы можете установить несколько пакетов одной командой. Так:

  • sudo apt-get install ubuntu-desktop lubuntu-desktop

Это установит ubuntu-desktopи lubuntu-desktopи все зависимости, которые им требуются, в правильной последовательности.

Кроме того, когда вы обновляете свою систему sudo apt-get upgrade, сначала загружаете все программное обеспечение, а затем устанавливаете один пакет за раз.

Причина, по которой
вы не можете установить несколько пакетов одновременно, заключается в том, что только один экземпляр может использовать apt-getпривилегии одновременно. Это потому, что apt-getблокирует software sourcesи блокирует любую другую команду от их использования.

Пример
Предположим, что вы как-то запускаете 2 отдельных apt-get, как говорит @Rinzwind, и теоретически вы можете, по крайней мере, редактировать список источников одновременно с его использованием для поиска и установки нового программного обеспечения. Это может привести к тому, что установленная вами программа отредактирует список источников и добавит небезопасный репозиторий одновременно с обновлением системы. Это может быть проблемой безопасности.

Другой пример
Кроме того, если вы редактируете список источников с помощью двух отдельных команд, то при сохранении вы заменяете самую новую версию, которая будет последней. Это означает, что команда в середине не будет иметь никакого эффекта, так как вы сохраните поверх старой версии.


Windows ведет себя аналогично, используя «официальный» (MSI) установщик

Даже в Windows несколько программ могут быть установлены одновременно ... есть ли в этом преимущество или почему это необходимо в linux / ubuntu и т. Д ...

Пакеты, в которых используется официальный установщик Windows (MSI), БУДУТ ОТКАЗАНЫ для запуска более одного экземпляра одновременно. Это связано с тем, что база данных установщика MSI похожа на sources.listинформационные файлы dpkg и т. Д. - вам не нужно, чтобы один установщик изменял / блокировал их одновременно.

Но во многих пакетах Windows используются сторонние установщики, такие как Installshield, NSIS и т. Д., Которые будут работать рядом друг с другом, поскольку им не требуется доступ к базе данных MSI / ее изменение. Точно так же в Linux / Ubuntu никто не мешает вам запускать сценарии установки apt-geta, a tar -xzfи perl / bash все одновременно :)

Альвар
источник
1
Если я не ошибаюсь, многие приложения могут работать , используя sudoв то же время, но когда дело доходит до управления пакетами, только одно такое приложение может установить или удалить пакеты в данный момент времени, так как работает , aptполучает блокировку на sources.listи , следовательно , если таковые имеются попытается запустить другое приложение управления пакетами, оно не будет заблокировано для этого файла и, следовательно, не будет запущено.
Кушал
@ Куш, это уместно, только один может использовать, извините, прошло много времени с тех пор, как я получил эту ошибку.
Алвар
@Rinzwind это то, что вы имеете в виду? :)
Alvar
2
@Alvar: отредактированы включить подобное поведение Windows , в нижней части : не хотят люди , чтобы получить дезинформировали , что Windows , как - то «выше»;)
иш
1
@ Алвар ... Большое спасибо. !! Это очистит мои основы ..;)
Нирмик
7

Во-первых, пусть будет известно, что этот ответ основан на том, что я почерпнул из своего опыта с dpkgи apt. Я не смотрел на фактический код центра программного обеспечения, чтобы определить это.

Это предел дизайна базового программного обеспечения.

Часть dpkgсистемы, которую Ubuntu использует для пакетов, включает в себя функцию, которая «блокирует» /var/lib/dpkg/lockфайл, чтобы предотвратить перезапись самими множеством dpkg( apt-getи Ubuntu Software Center являются внешними интерфейсами) и других плохих, злых вещей.

Что происходит при установке программного обеспечения? Что происходит, это начинается sudo apt-get install chromium-browser(использовать Chromium в качестве примера).

И когда это происходит, включается блокировка. Как только вы добавляете более одного пакета для установки, что происходит дальше, он ждет, пока первый не будет выполнен, прежде чем он начнет следующую aptкоманду.

JRG
источник
4

Некоторые действия, такие как обновление меню, индексация шрифтов и перенастройка библиотек, должны выполняться только один раз, если все пакеты установлены одновременно. Надеемся, что второе преимущество не должно происходить часто, но если вы хотите установить пакеты, исключающие друг друга, вы знаете об этом до загрузки всех из них.

Последнее преимущество особенно важно, когда вы устанавливаете или обновляете много пакетов одновременно: если нужно ответить на вопросы, они все придут друг за другом во время процесса установки. Таким образом, вы можете продолжать работать, а не глючить каждые 5 минут другим вопросом.

johanvdw
источник
У вас там было несколько интересных моментов. :)
Джо-Эрленд Шинстад
2

Причина, по которой два экземпляра apt-get не могут работать одновременно, заключается в том, что приложение считывает / записывает несколько файлов, важных для работы системы. Чтение или запись файла с помощью операции apt-get, в то время как другой выполняет те же операции с ним, приведет к проблемам с неправильной конфигурацией и / или повреждением файлов. Поэтому, когда происходит операция apt-get, он «блокирует» нужные ему файлы, поэтому другая операция не может быть выполнена одновременно, иначе он поднимает флаг, который сообщает другим операциям, что файлы используются в данный момент.

Однако одновременная загрузка файлов, необходимых для apt (или, скорее, загрузка из нескольких источников), возможна с помощью команды apt-fast

https://github.com/ilikenwf/apt-fast

Месси
источник
0

простой способ установки нескольких файлов за один раз, выполните следующие действия

  1. скопируйте все установочные папки, например: / home / user / apps
  2. Откройте терминал и введите:

    CD / дом / пользователь / приложения

  3. а затем введите снова

    sudo dpkg -i * .deb

подождите до завершения установки.

hardianto
источник
1
Это все еще устанавливает файлы .deb один за другим . Не то, что спросил ОП - он хочет, чтобы несколько файлов .deb устанавливались одновременно.
иш
-1

Вы получаете загрузку пакета, в то время как другой устанавливает, например, в терминал1

sudo apt-get install vlc

затем также загрузите другой пакет в другой терминал2

sudo apt-get download openssh-server

чтобы увидеть другие опции, доступные с apt-get, обратитесь к его простому типу man

apt-get <press tab on your keyboard>
marengz
источник
Это не отвечает на вопрос.
Гюнтберт
@ guntbert Я отвечал на вторую часть его вопроса, он сказал: «Или вместо этого, почему центр программного обеспечения не загружает приложение, пока другой устанавливает», я подумал, что он утверждал, что во время установки невозможно загрузить другой пакет другой, который не так.
Маренц