Чому програмний центр не дозволяє кілька завантажень?


29

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


напевно, просто для збереження пропускної здатності ...
drnessie

1
AFAIK sudo apt-get installможе встановити скільки завгодно пакетів. Вам потрібно знати назву пакета.
sagarchalise

@drnessie ні, це не так! якщо ви встановите обидва одночасно з apt-get, ви будете завантажувати їх одночасно, а потім встановлювати їх лише один за один раз.
Алвар

@Alvar Добре. Я це зробив у 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-get, tar -xzfі Perl / Баш скрипт установки все в той же час :)


1
Якщо я не помиляюся, багато додатків можуть працювати , використовуючи sudoв той же час, але коли справа доходить до управління пакетами, тільки одне таке додаток може встановити або видалити пакети в даний момент часу, так як працює , aptотримує блокування на sources.listі , отже , якщо такі є намагається запустити інший додаток для управління пакетом, він не заблокує цей файл і, отже, не запуститься.
Кушаль

@Kush це доречно, лише один користувач може скористатися, вибачте, було дуже давно, як я отримав цю помилку.
Алвар

@Rinzwind це те, що ти маєш на увазі? :)
Алвар

2
@Alvar: відредаговано так, щоб вона містила подібну поведінку Windows внизу: не хочу, щоб люди неправильно інформували про те, що Windows якось "перевершує";)
Останній,

1
@Alvar ... Спасибі багато !! То скасуйте мої основи ..;)
Нірмік

7

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

Це межа дизайну базового програмного забезпечення.

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

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

І коли це трапляється, блокується замок. Після того, як ви додасте більше одного пакета для встановлення, наступне - це чекати, поки буде зроблено перший, перш ніж він запустить наступну aptкоманду.


4

Деякі дії, такі як оновлення меню, індексація шрифтів та перенастроювання бібліотек, повинні відбутися лише один раз, якщо всі пакети встановлені одночасно. Друга перевага, сподіваємось, не повинна траплятися часто, але якщо ви хочете встановити пакети, які виключають інше, ви знаєте це перед завантаженням усіх.

Остання перевага, головним чином, важлива при встановленні або оновленні багатьох пакетів одночасно: якщо на запитання потрібно відповісти, всі вони з’являться після того, як буде інший під час ходу встановлення. Таким чином, ви можете продовжувати працювати, а не клопотати кожні 5 хвилин іншим питанням.


У вас там було кілька цікавих моментів. :)
Жо-Ерленд Шінстад

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

дочекайтеся, поки не завершиться установка.


1
Це все ще встановлює .deb файли по одному . Не те, що запитував ОП - він хоче одночасно встановлювати кілька файлів .deb.
Останній

-1

Ви отримуєте завантаження пакета, а інший встановлюється, наприклад, у terminal1

sudo apt-get install vlc

потім також завантажте інший пакет в інший термінал2

sudo apt-get download openssh-server

щоб побачити інші варіанти, доступні в apt-get, зверніться до його простого типу man

apt-get <press tab on your keyboard>

Це не відповідає на запитання.
guntbert

@guntbert Я відповідав на другу частину свого запитання, він каже: "Або замість того, чому програмний центр не завантажує додаток, поки інший встановлюється", я подумав, що він стверджує, що не можна завантажити інший пакет під час встановлення. інше, що неправильно.
marengz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.