Есть много причин для этого, и немного истории для того, чтобы представить вещи в перспективе.
Помните, что когда мы говорим о «Linux», то, на что мы обычно ссылаемся, это один из множества различных дистрибутивов Linux . «Linux» - это просто ядро операционной системы.
Первоначальная цель Linux состояла в том, чтобы создать систему на основе Unix, которая работала бы на ПК (первоначально 386). Первым шагом было создание самого ядра. Пока Линус Торвальдс работал над ядром, Ричард Столлман работал над своей собственной системой Free Unix в рамках проекта GNU (Not Unix) GNU . Короче говоря, два сходятся, потому что GNU имеет связанные утилиты (C-компилятор / библиотека / инструменты сборки, оболочка, текстовые редакторы и т. Д.), Но не имеет ядра для его запуска, а у Linux есть ядро, но нет утилит для бегите сверху этого, чтобы сделать это полезным для масс.
Эта конвергенция стала официально известна как GNU / Linux. Вы увидите, что многие дистрибутивы по-прежнему называют себя дистрибутивами GNU / Linux.
Из-за свободной и открытой природы GNU / Linux любой мог подобрать ее и создать систему в соответствии со своими вкусами. Результатом стало то, что для создания этих систем использовалось много разных потоков с различными методами конфигурации, что имело побочный эффект - создание почти такого же количества различных систем управления пакетами, которые подходили бы для каждой из них.
У каждой отдельной законченной системы были свои сильные последователи, которые придерживались их на протяжении многих лет, что привело к тому, что мы имеем сегодня: несколько широко используемых, глубоко укоренившихся и стабильных систем управления пакетами, таких как RPM , APT / dpkg и Gentoo's Portage .
Есть проекты, такие как Autopackage , которые пытаются решить эту проблему, но непрерывное развитие различных поддерживаемых систем управления пакетами означает, что есть много движущихся целей, которым нужно следовать.
В конечном итоге некоторые поставщики программного обеспечения объединяют конкретные двоичные файлы и копии зависимостей, которые им требуются, в один большой пакет, который будет работать в определенных системах.