Чому програмне забезпечення не пакується в одному файлі?


15

Ми бачимо, що більшість програмних засобів Windows упаковані в один виконуваний файл. Коли я двічі клацнув файл установки, він налаштовує всі файли, бінарні файли та бібліотеки з ним.

Я розумію залежність Ubuntu або загалом пакетів Linux. Але мені цікаво, чому це існує. Чи не можливо створити єдиний файл з усіма залежностями? Які проблеми з цим методом?

Будь ласка, спробуйте детально пояснити причину.

Відповіді:


17

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

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

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


Основна відмінність упаковки .deb від .exe не в тому, що програмне забезпечення Ubuntu не публікується в одному файлі. Основна відмінність полягає в цілій концепції сховища програмного забезпечення, що містить пакети, і звідки можна легко отримати оновлення.

Іноді це може бути проблематично для комп'ютерів без прямого підключення до Інтернету. Є такі інструменти, як APTonCD , які допомагають мінімізувати ці труднощі.


2
іноді стосується таких користувачів, як ми, без належного доступу до Інтернету
Anwar

2
Будь-який спосіб я ненавиджу цю функцію, тому що мій Інтернет повільний. А обмін завантаженими програмними програмами ubuntu дуже складний (не
пропонуйте резервне копіювання

1
Але тоді вам слід насправді полюбити функцію! Тому що замість завантаження бібліотеки п'ять разів ви просто завантажуєте її один раз. Уявіть, що кожна програма на вашій установці Ubuntu оснащена власною установкою GTK + або Qt! Ці речі величезні .
Майкл Дикий

4

Це не зовсім вірно. Програмне забезпечення Ubuntu зазвичай поставляється в одному файлі .deb. Файли .deb є коректним (і неточним) файлом .deb відповідним .exe-файлом для Windows. Усі програми, включаючи програми Windows, використовують залежність від інших файлів в операційній системі (бібліотеках). Процес установки просто більш-менш явний в різних ОС. Коли ви використовуєте програмний центр в Ubuntu для завантаження програми, ви завантажуєте лише залежності, які не встановлені у вашій системі, та фактичні файли програм. Це запобігає перевантаженню системи дублюючими файлами та функцією дублювання, що може призвести до конфліктів.

Вірите чи ні, єдиною різницею між встановленням програми у Windows або Ubuntu є кількість інформації, яку вони надають користувачам. Windows вважає, що його користувачі німі, і не хочуть, щоб вони знали, що він встановлюється під час запуску файлу exe. У Linux ви отримуєте цю інформацію. Для деяких користувачів це занадто багато деталей, але інші (більшість) це дуже цінують.

сподіваюся, що це має сенс


2
Абсолютно вірно. Навіть інші дистрибутиви (не такі гарні, як Ubuntu) використовують .rpms. Справа в .exe, .deb або будь-якому іншому полягає в тому, що це в основному великий .tar, який витягує себе в різні місця! У Windows він переходить до програмних файлів і показує панель прогресу, але в Linux він показує вам набагато більше.
WindowsEscapist

1
Я думаю, що пропозиція про те, що EXE-файл схожий на великий файл tar, надто далеко йде в напрямку спрощення. Файл tar не може виконуватися. Файл EXE (природно) є. Тобто, з деб-файлом (який насправді є файлом tar), саме менеджер пакунків обробляє фактичний процес переміщення файлів навколо, тож система може тримати верх над речами досить елегантно. З програмою інсталятора (як в Windows) це робить сам інсталятор. Він може поговорити з деякими компонентами системи, щоб утримати речі в порядку, але лише в тому випадку, якщо вам це здається.
Ділан Макколл

1
Найкращим підсумком цього є те, що Windows має виробників програм інсталятора, таких як InstallShield та NSIS. Такі засоби є і для Linux. MojoSetup - популярний. Ось де ви іноді завантажуєте програму, і вона має виконуваний файл (як правило, закінчується на .sh або .run), і це дає вам трохи майстра. Зазвичай вони не спілкуються з менеджером пакунків, і вони дуже працюють, як програми встановлення в Windows. З цього приводу інсталятор Windows (з його файлами .msi) є чимось спробою прибрати цей безлад на їх кінці;)
Ділан Макколл

Я думаю, що способи Linux набагато кращі, ніж способи Windows. Але так, способи для Windows є простими та легкими
Anwar

2
Формат файлу Windows, який відповідає, .debє .msi.
Елія Каган

3

У Ubuntu більшість програмного забезпечення входить в один файл. Це *.debфайл пакунків Debian, який завантажується, розпаковується та встановлюється з вашого менеджера пакунків.

Чому Ubuntu не встановлює програмне забезпечення з саморозпаковуваних виконуваних файлів, як це робить більшість програмного забезпечення Windows?

Оскільки самостійне вилучення *.exeфайлів - це дуже небезпечна пропозиція прийняти.

Найбільш критичні відмінності між саморозпаковуються виконуваними файлами та системою упаковки, на зразок Debian / Ubuntu:

  • Безпека
  • Прозорість
  • Більш детальний контроль

Більш детально:

Безпека

У світі Windows ви повинні довіряти цьому єдиному *.exeфайлу. Як можна насправді бути впевненим, що йому можна довіряти? Звідки ви навіть можете знати, що він щось встановлює? Як ви можете бути впевнені, що він не робить інших речей за вашою спиною?

В Ubuntu всі пакети цифрово підписані, тому, використовуючи окремий файл пакету - менеджер пакунків (будь то muon, синаптичний, здатність чи навіть прямий apt) - ви отримуєте контент перевірений ще до того, як він буде розпакований, не кажучи вже про встановлений. Це, звичайно, передбачає, що ви довіряєте сховищам. Я вважаю за краще довіряти сховища Ubuntu (єдиний авторитет), ніж сотні часто незнайомих різних джерел для завантаження.

Гранульований контроль

З *.exeфайлом ви можете по суті зробити одне: виконати його. В Ubuntu ви можете перевірити вміст пакета, описи, конфігурації, окремі файли, останні зміни, виправлення помилок тощо із зручності менеджера пакунків, перш ніж приймати рішення про встановлення чи ні.

Під час встановлення з *.exeфайлу вам також доведеться довіряти його гачку "видалення" (і не всі *.exeфайли гарантовано мають). В Ubuntu всі файли, що належать до стандартних пакетів, встановлених менеджером пакунків, завжди можна видалити, оскільки це функція менеджера пакунків, а не самого пакета. Менеджер пакунків - це окрема і довірена програма, яка забезпечує як інсталятор, так і видалення, пакет не може зняти гачок для видалення. Звичайно, зловмисний пакет може прокрадати речі через дії після встановлення, але саме тому у нас є офіційна система сховищ і ті самі люди, яким ми довіряємо їх підтримувати.

Прозорість

Це йде далі. У Ubuntu я справді можу довіряти своїй системі, тому що я можу перевірити програмне забезпечення на багатьох рівнях. Кінцевий рівень здатний подивитися на вихідний код. двійкові пакети мають відповідні вихідні пакети. Я фактично можу переглянути джерело (Приклад: ' apt-get source bash ' дасть вам повні джерела до оболонки bash). У світі файлів * .exe зазвичай є лише бінарні файли, і хто знає, що вони насправді роблять за кадром?

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


2

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


0

Давайте спробуємо поділитися своїм розумінням щодо залежностей (Так, я знав про заслуги Ubuntu або загалом для Linux способу поводження з програмним забезпеченням. Я просто намагався зібрати всі добрі думки та причини в центральний спосіб, щоб я міг продемонструвати деякі моїх друзів) .

Програмне забезпечення Windows здебільшого пакується в одному файлі. Це означає, що вони не мають ніякої залежності?

Ні, майже всі програмні засоби залежать від деяких інших програм. (Якщо тільки це програмне забезпечення дуже низького рівня і не може безпосередньо спілкуватися з обладнанням, наприклад, самою Операційною системою) . Програмне забезпечення Microsofts не вільне від залежності. Отже, важливе питання: як вони з цим справляються?

Відповідь: Вони справляються з цим по-своєму традиційним чином. Припускаючи, що більшість користувачів є німими, вони просто ставлять всю залежність в один файл, в результаті чого програмне забезпечення більшої величини (1 подано).
Наприклад, див. Ігри, випущені для Microsoft. Практично в кожній грі є налаштування DirectX, хоча користувачі можуть вже оновлювати їх версії.

Ось що я знайшов у Google про те, чому DirectX включений у кожну гру.

Навіть якщо пізніша версія двійкового файлу вже встановлена, цю версію неможливо використовувати, і навіть якщо встановлення DirectX оновлено, тому що ви запустили більш нову версію інсталятора, для якої не гарантується встановлення всіх попередні версії. Ще гірше, якщо версія встановлена ​​для x86, вона не гарантує, що однакова версія буде встановлена ​​для x64, тому 64-бітові та 32-бітні ігри, можливо, знадобляться для запуску тієї ж точної версії інсталятора, але при націлюванні на різні платформи.

натисніть тут для повної статті. Зрозуміло, що вони не дуже добре справляються із залежністю.

Більшу частину часу, незалежно від залежностей, які вже існують, вони забезпечують це простотою (для своїх користувачів) . Також дивіться, скільки програмних програм включає в себе компоненти .NET для виконання.
Ще один приклад з мого досвіду: Одного разу я завантажив та встановив програмне забезпечення для MS. Задоволений процесом, я натиснув на піктограму, щоб відкрити програмне забезпечення. Тільки тоді воно говорить мені, що "мені потрібна Java для запуску". Така ситуація ніколи не виникає у світі Linux через управління пакетами. (якщо ви не намагаєтеся завантажити файли .deb з сайту сховища та встановити, подвійним клацанням, в режимі MS) .

Як Linux вирішує цю проблему залежності?

Що ж, Linux або Ubuntu не приховують того факту, що для використання програмного забезпечення вам доведеться встановити залежності (на відміну від способу Microsoft). Але коли ви встановили компоненти, інше програмне забезпечення, яке залежить від того самого компонента, використовує встановлені раніше встановлені функції (на відміну від програмного забезпечення MS, включаючи всі речі).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.