Dlaczego oprogramowanie nie jest spakowane w jednym pliku?


15

Widzimy, że większość oprogramowania Windows jest spakowana w jednym pliku wykonywalnym. Po dwukrotnym kliknięciu pliku instalacyjnego konfiguruje się z nim wszystkie pliki, pliki binarne i biblioteki.

Rozumiem zależność Ubuntu lub bardziej ogólnie pakietów Linux. Ale zastanawiam się, dlaczego one istnieją. Czy nie jest możliwe zbudowanie jednego pliku ze wszystkimi zależnościami? Jakie są problemy z tą metodą?

Spróbuj szczegółowo podać przyczynę.

Odpowiedzi:


17

Głównym powodem, dla którego zależności nie są uwzględnione w samym programie, jest łatwość aktualizacji składników systemu.

Wyobraź sobie, że jedna zależność jest używana przez pięć różnych programów. Jeśli w tej zależności zostanie stwierdzona luka w zabezpieczeniach, należy zaktualizować tylko jedną kopię, a nie pięć kopii.

Dla użytkownika nie ma znaczenia, że ​​trzeba zainstalować wiele pakietów - instalacja jednego oprogramowania, które chcesz, automatycznie instaluje jego zależności.


Główną różnicą między pakietami .deb i .exe nie jest to, że oprogramowanie Ubuntu nie jest publikowane w jednym pliku. Główną różnicą jest cała koncepcja repozytorium oprogramowania, które zawiera pakiety, i że aktualizacje mogą być łatwo dostarczane.

Czasami może to być problematyczne w przypadku komputerów bez bezpośredniego połączenia z Internetem. Istnieją narzędzia, takie jak APTonCD , które pomagają zminimalizować te trudności.


2
czasami liczy się z użytkownikami takimi jak my bez odpowiedniego dostępu do Internetu
Anwar

2
W każdym razie nienawidzę tej funkcji, ponieważ mój internet jest wolny. Udostępnianie pobranych programów ubuntu jest bardzo trudne (nie sugeruj tworzenia kopii zapasowych apt-cache, ponieważ robię to codziennie)
Tachyons,

1
Ale powinieneś pokochać tę funkcję! Ponieważ zamiast pobierać bibliotekę pięć razy, wystarczy pobrać ją raz. Wyobraź sobie, że każdy program w twojej instalacji Ubuntu ma własną instalację GTK + lub Qt! Te rzeczy są ogromne .
Michael Wild

4

To nie do końca prawda. Oprogramowanie Ubuntu zwykle jest dostarczane w jednym pliku .deb. Ponieważ pliki .deb są całkowicie uproszczone (i niedokładne), są odpowiednimi plikami .exe dla systemu Windows. Wszystkie programy, łącznie z tymi w systemie Windows, używają zależności od innych plików w systemie operacyjnym (bibliotekach). Proces instalacji jest po prostu mniej lub bardziej wyraźny w różnych systemach operacyjnych. Podczas korzystania z centrum oprogramowania w systemie Ubuntu do pobierania programu pobierane są tylko zależności, które nie są zainstalowane w systemie, oraz rzeczywiste pliki programu. Zapobiega to przeciążeniu systemu przez duplikaty plików i duplikowanie funkcji, które mogłyby doprowadzić do konfliktu.

Wierzcie lub nie, jedyną różnicą między instalacją programu w systemie Windows lub Ubuntu jest ilość informacji, które dostarczają użytkownikom. Windows uważa, że ​​jego użytkownicy są głupi i nie chcą, aby wiedzieli, co jest instalowane podczas uruchamiania pliku exe. W Linuksie otrzymujesz te informacje ... dla niektórych użytkowników jest zbyt wiele szczegółów, ale inni (większość) naprawdę to doceniają.

mam nadzieję, że to ma sens.


2
Dokładnie tak. Nawet inne dystrybucje (nie tak dobre jak Ubuntu) używają .rpms. W plikach .exe, .deb itp. Jest to, że jest to po prostu duży plik .tar, który rozpakowuje się w różne miejsca! W Windows przechodzi do Program Files i pokazuje pasek postępu, ale w Linuksie pokazuje o wiele więcej.
WindowsEscapist

1
Myślę, że sugestia, że ​​plik exe jest jak duży plik tar, idzie zbyt daleko w kierunku uproszczenia. Plik tar nie jest wykonywalny. Plik exe (oczywiście) to. Oznacza to, że w przypadku pliku deb (który jest plikiem tar) jest to menedżer pakietów, który obsługuje faktyczny proces przenoszenia plików, dzięki czemu system może dość elegancko nadążać za wszystkim. W przypadku programu instalacyjnego (jak w systemie Windows) sam instalator to robi. Może rozmawiać z niektórymi komponentami systemu, aby utrzymać porządek, ale tylko wtedy, gdy wydaje się, że tak jest.
Dylan McCall

1
Najlepszym sposobem na podsumowanie tego jest to, że Windows ma twórców programów instalacyjnych, takich jak InstallShield i NSIS. Istnieją również takie narzędzia dla Linuksa. MojoSetup jest popularny. To tam czasami pobierasz program, który ma plik wykonywalny (zwykle kończący się na .sh lub .run) i daje ci małego kreatora. Zwykle nie rozmawiają z menedżerem pakietów i działają podobnie jak programy instalacyjne w systemie Windows. W tym względzie Instalator Windows (wraz z plikami .msi) jest czymś w rodzaju próby usunięcia bałaganu na ich końcu;)
Dylan McCall

Myślę, że sposoby na Linuksa są znacznie lepsze niż sposoby na Windows. Ale tak, sposoby na Windows są proste i łatwe
Anwar,

2
Format pliku systemu Windows, który odpowiada, .debto .msi.
Eliah Kagan

3

W systemie Ubuntu większość oprogramowania jest dostępna w jednym pliku. Jest to *.debplik pakietu Debiana, który jest pobierany, rozpakowywany i instalowany z poziomu menedżera pakietów.

Dlaczego Ubuntu nie instaluje oprogramowania z samorozpakowujących się plików wykonywalnych, jak większość programów Windows?

Ponieważ samorozpakowujące się *.exepliki są bardzo niebezpieczną propozycją do zaakceptowania.

Najważniejsze różnice między samowyodrębniającymi się plikami wykonywalnymi a systemem pakowania, takim jak debian / Ubuntu, to:

  • Bezpieczeństwo
  • Przezroczystość
  • Bardziej szczegółowa kontrola

Bardziej szczegółowo:

Bezpieczeństwo

W świecie Windows musisz ufać temu pojedynczemu *.exeplikowi. Jak można być pewnym, że można mu zaufać? Skąd możesz wiedzieć, że coś instaluje? Jak możesz być pewien, że nie robi to za twoimi plecami?

W Ubuntu wszystkie pakiety są podpisane cyfrowo, więc przy użyciu osobnego pliku pakietu - menedżera pakietów (mionowego, synaptycznego, aptitude, a nawet zwykłego apt) - zawartość jest weryfikowana przed rozpakowaniem, a co dopiero instalacją. Zakłada się oczywiście, że ufasz repozytoriom. Wolę ufać repozytoriom Ubuntu (jeden organ) niż setkom często nieznanych różnych źródeł do pobrania.

Kontrola szczegółowa

Za pomocą *.exepliku możesz zasadniczo zrobić jedną rzecz: wykonać go. W Ubuntu możesz sprawdzić zawartość pakietu, opisy, konfiguracje, poszczególne pliki, najnowsze zmiany, poprawki błędów itp. Z wygody menedżera pakietów, zanim zdecydujesz, czy zainstalować, czy nie.

Kiedy instalujesz z *.exepliku, musisz także zaufać jego hakowi „odinstalowującemu” (i nie *.exema gwarancji, że wszystkie pliki go posiadają). W Ubuntu wszystkie pliki należące do standardowych pakietów instalowanych przez menedżera pakietów można zawsze odinstalować, ponieważ jest to funkcja menedżera pakietów, a nie sam pakiet. Menedżer pakietów jest oddzielną i zaufaną aplikacją, która zapewnia zarówno instalatorowi, jak i deinstalatorowi, pakiet nie może odebrać ci haka dezinstalacyjnego. Oczywiście złośliwy pakiet może się przekraść za pomocą działań poinstalacyjnych, ale właśnie dlatego mamy oficjalny system repozytorium i te same osoby, którym ufamy, że je utrzymują.

Przezroczystość

Idzie dalej. W Ubuntu mogę naprawdę zaufać mojemu systemowi, ponieważ mogę zweryfikować oprogramowanie na wielu poziomach. Najwyższym poziomem jest możliwość patrzenia na kod źródłowy. pakiety binarne mają odpowiednie pakiety źródłowe. Mogę faktycznie spojrzeć na źródło (przykład: „ apt-get source bash ” da ci pełne źródła powłoki bash). W świecie plików * .exe zwykle są tylko pliki binarne, a kto wie, co faktycznie robią za kulisami?

To powiedziawszy, zawsze są wyjątki od reguł, ale dla mnie bezpieczeństwo i zaufanie oznaczają, że nie mogę zaakceptować wykonywania plików binarnych z setek różnych źródeł, które trudno zweryfikować jako standardowy sposób instalowania komponentów w moim systemie.


2

Oprócz tego, co powiedzieli inni, czasami jedno oprogramowanie jest podzielone na kilka pakietów, ponieważ nie wszystkie funkcje są istotne dla wszystkich użytkowników. Na przykład, jeśli dokumentacja programu jest obszerna, zwykle będzie dostarczana w osobnym pakiecie. Pozwala to użytkownikom, którzy nie są zainteresowani tymi opcjonalnymi funkcjami, zaoszczędzić miejsce na dysku oraz przepustowość / czas pobierania.


0

Spróbujmy podzielić się moim zrozumieniem na temat zależności (Tak, byłem świadomy zalet Ubuntu lub bardziej ogólnie Linuxa do obsługi oprogramowania. Po prostu starałem się zebrać wszystkie dobre opinie i powody w centralny sposób, aby móc zademonstrować niektóre moich przyjaciół) .

Oprogramowanie Windows jest najczęściej spakowane w jednym pliku. Czy to oznacza, że ​​nie mają żadnej zależności?

Nie, prawie wszystkie programy są zależne od niektórych innych programów. (Chyba że oprogramowanie jest na bardzo niskim poziomie i może bezpośrednio komunikować się ze sprzętem, takim jak sam system operacyjny) . Oprogramowanie Microsofts nie jest wolne od zależności. Zatem ważne pytanie brzmi: jak sobie z tym poradzą?

Odpowiedź: Podchodzą do tego na swój tradycyjny sposób. Zakładając, że ich większość użytkowników jest głupia, po prostu umieszczają całą zależność w jednym pliku, co powoduje powstanie oprogramowania o większym rozmiarze (1 pole).
Na przykład zobacz Gry wydane dla Microsoft. Prawie każda gra zawiera konfiguracje DirectX, chociaż użytkownicy mogą już zaktualizować ich wersje.

Oto coś, co znalazłem w Google na temat tego, dlaczego DirectX jest dołączony do każdej gry.

Nawet jeśli późniejsza wersja pliku binarnego jest już zainstalowana, tej wersji nie można użyć, a nawet jeśli Twoja instalacja DirectX jest aktualna, ponieważ masz nowszą wersję instalatora, w której nie ma gwarancji, że zainstalowano wszystkie poprzednie wersje. Co gorsza, jeśli wersja jest zainstalowana dla x86, nie gwarantuje to, że ta sama wersja zostanie zainstalowana dla x64, więc gry 64-bitowe i 32-bitowe mogą wymagać uruchomienia tej samej dokładnej wersji instalatora, ale podczas uruchamiania atakują różne platformy.

kliknij tutaj, aby zobaczyć cały artykuł. Oczywiste jest, że nie radzą sobie zbyt dobrze z obsługą zależności.

Przez większość czasu, niezależnie od istniejących zależności, zapewniają prostotę (dla użytkowników) . Zobacz także, ile tematów oprogramowania zawiera składniki środowiska wykonawczego .NET.
Kolejny przykład z mojego doświadczenia: po pobraniu i zainstalowaniu oprogramowania MS. Będąc usatysfakcjonowanym procesem, kliknąłem ikonę, aby otworzyć oprogramowanie. Dopiero wtedy mówi mi, że „muszę uruchomić Javę”. Taka sytuacja nigdy nie występuje w świecie Linuksa poprzez zarządzanie pakietami. (chyba że spróbujesz pobrać pliki .deb ze strony repozytorium i zainstalować, klikając dwukrotnie, w sposób MS) .

Jak Linux radzi sobie z tym problemem zależności?

Cóż, Linux lub Ubuntu nie ukrywa faktu, że musisz mieć zainstalowane zależności do korzystania z oprogramowania (w przeciwieństwie do sposobu Microsoft). Ale kiedy instalujesz komponenty, inne oprogramowanie, które zależy od tego samego komponentu, korzysta z zainstalowanych uprzednio zainstalowanych zależności (w przeciwieństwie do oprogramowania MS zawierającego wszystkie rzeczy).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.