Dans un système linux, on installe habituellement ses applications depuis le package manager (apt
pour debian, ''pacman'' pour archlinux, yum
ou dnf
pour l'univers RedHat).
L'intérêt principal est de pouvoir installer automatiquement les dépendances, et mutualiser ces dépendances entre plusieurs applications. Un autre aspect intéressant est que les dépôts sont gérés par les responsables de la distribution linux, et qu'on peut souvent leur faire confiance, on parle de source fiable. Souvent, les paquets sont testés avant d'être livrés, on peut trouver des systèmes particulièrement cohérents, homogènes et stables comme debian.
L'inconvénient est qu'il faut attendre que les mainteneurs des dépôts intègrent la dernière version d'une application avant de pouvoir l'installer, et parfois cela peut prendre du temps, surtout sur des distributions versionnées, fixed-release, comme debian. Il est également possible que l'application, trop confidentielle, ne soit jamais publiée dans les dépôts. Dans certains cas, il peut y avoir des conflits entre les versions de dépendances de certaines applications.
Pour répondre à ces inconvénients, publier des applications selon le modèle windows est arrivé sur Linux : les dépendances sont intégrées dans l'application. C'est le modèle inverse, et les inconvénients deviennent des avantages, et vice et versa. Citons dans les avantages le fait d'être indépendant de la distribution Linux. Et parmi les inconvénients : la taille des applications qui enfle sérieusement.
Ce mode de déploiement facilite la vie des développeurs, qui n'ont pas à gérer les questions de dépendances particulières à chaque distribution Linux.
Plusieurs solutions logicielles d'empactage, chacune avec ses propres dépôts, sont arrivés, citons : Flatpak, Snap, AppImage.
Il n'y a pas de meilleur, ça dépend des critères :