GNU/Linux >> Znalost Linux >  >> Linux

Proč různé distribuce Linuxu potřebují záplatovat balíčky?

Trvalo to několik pokusů, ale myslím, že teď rozumím, na co se ptáte.

Existuje několik možných důvodů pro distribuci k opravě daného softwaru před zabalením. Pokusím se poskytnout neexkluzivní seznam; Jsem si jistý, že existují další možné důvody.

Pro účely této diskuse "upstream" odkazuje na původní zdrojový kód od oficiálních vývojářů softwaru

  1. Patche, které upstream nebyly (nebo ještě nebyly) začleněny do své hlavní větve z jakéhokoli důvodu nebo důvodů. Obvykle proto, že správce balíčků distribuce pro tento balíček věří, že uvedené patche stojí za to, nebo proto, že jsou potřebné k udržení kontinuity v distribuci (Předpokládejme, že máte webový server a po rutinní aktualizaci na php několik funkcí, na které jste se spoléhali, již nefunguje nebo není schopen načíst konfigurační soubor ze starého stylu)

  2. Distribuce mají tendenci mít rády standardizované vzory pro svou hierarchii souborového systému v /etc/; každý vývojář softwaru může, ale nemusí mít vlastní představy o tom, co tvoří správné standardy. Proto jedna z prvních věcí, které má správce distribučního balíčku tendenci dělat, je záplatovat skripty sestavení, aby nakonfigurovaly a očekávaly uvedené konfigurační soubory v hierarchickém vzoru, který odpovídá zbytku distribuce.

  3. Pokračujeme-li v tématu konfigurace, jedna z prvních „záplat“ bývá sada výchozích konfiguračních souborů, které budou fungovat se zbytkem distribuce takříkajíc „z krabice“, což koncovému uživateli umožní okamžitě začít. po instalaci místo toho, abyste museli ručně třídit pracovní konfiguraci.

To je jen z hlavy. Velmi dobře mohou existovat další, ale doufám, že vám to dá nějakou představu.


Z hlavy, kromě odpovědi @Shadur:

  • Některé distribuce odrazují od používání vkládacích knihoven nebo souborů poskytovaných jiným balíčkem. Například mnoho softwaru obsahuje vestavěný JQuery, ale Debian má balíček libjs-jquery, který jej poskytuje.
  • Upstream často mísí bezpečnostní záplaty a zpětně nekompatibilní změny, např. závisí na novějších knihovnách. Aby se zabránilo rozsáhlým změnám v celé distribuci jen kvůli získání řekněme správnější kontroly certifikátů, může správce balíčku zvolit pouze bezpečnostní záplaty.
  • Odchozí software může být v konfliktu s jiným softwarem, například může poskytnout soubor se stejnou cestou, ale odlišným obsahem. K vyřešení tohoto konfliktu může být zapotřebí patch, který bude soubor hledat jinde.
  • Upstream se často spokojí s pokyny k ručnímu přidání něčeho do jiného konfiguračního souboru softwaru, který je náchylný k chybám při instalaci a odinstalaci balíčků, takže distribuce může preferovat použití fragmentových souborů v adresáři *.d.
  • Některé části upstreamu mohou být nekompatibilní s licencí distribuce, takže se správce balíčku může rozhodnout problematické části opravit.
  • Upstream používá cesty s předpokladem konkrétního jiného softwaru (např. Apache), ale správce by chtěl, aby podporoval generický webový server.
  • Někdy upstream vývojář už nekomunikuje a software bitrotuje, takže je potřeba oprava, aby to fungovalo.

Důvodů je několik:

  1. Neexistuje nic takového jako dokonalý software
  2. V Linuxu neexistuje nic takového jako univerzální balicí software:

    • apt
    • mňam
    • pacman
    • ...
  3. Kvůli rozvětvení

  4. Kvůli různým výkladům Bible FHS
  5. Kvůli egu

Linux
  1. Různé způsoby instalace softwaru na Ubuntu Linux

  2. Linux – Jsou různá jádra Linux/unix zaměnitelná?

  3. Kdy je setsid() užitečné nebo proč potřebujeme seskupovat procesy v Linuxu?

  1. Proč potřebujeme bootloader ve vestavěném zařízení?

  2. Proč potřebujeme soubor .so.1 v Linuxu?

  3. Která distribuce Linuxu má nejaktuálnější balíčky?

  1. Proč je Bash všude (ve většině, ne-li ve všech distribucích Linuxu)?

  2. Proč je v Linuxu potřeba upravovat tabulky systémových volání?

  3. BCRYPT – Proč jej distribuce Linuxu nepoužívají ve výchozím nastavení?