Pourquoi de nombreuses applications ne sont-elles pas disponibles dans les dépôts de packages ?
Il peut y avoir plusieurs raisons :
- Personne n'a pris la peine d'empaqueter l'application.
- Personne n'est autorisé à empaqueter l'application (comme Oracle qui insiste pour être le seul à distribuer Java).
- Le paquet est publié sous une licence qui contredit les valeurs des distributions.
- ...
Il n'y a pas une seule raison. Si vous souhaitez voir votre application préférée dans le gestionnaire de packages de votre distribution, vous devez traiter chaque cas séparément. Essayez d'entrer en contact avec les développeurs (sur un canal IRC ou une liste de diffusion par exemple) et demandez comment vous pourriez aider à l'empaquetage.
Comment installer une archive tar ?
Une archive tar (paquet .tar.gz) peut contenir n'importe quoi. Jusqu'à ce que vous l'ouvriez réellement, vous n'avez aucun moyen de supposer comment l'installer. Encore une fois, chaque paquet doit être abordé différemment.
Recherchez de la documentation ! Tout paquet (semi-)décent fournira des instructions sur la façon d'installer l'application. Votre premier réflexe devrait toujours être de rechercher un fichier texte appelé README, INSTALL ou quelque chose comme ça. Consulter le site Web de l'éditeur peut également être utile.
Étant donné que chaque paquet est différent, il n'y a pas de moyen universel de traiter chaque archive tar dans le monde. C'est comme demander une recette qui fonctionne avec tous les ingrédients du monde. Ne se produit pas.
Une bonne connaissance de votre système, de votre distribution et de votre environnement de bureau vous aidera, donc, si cela est rassurant, les choses paraîtront de plus en plus prévisibles au fur et à mesure que vous passerez du temps dans le monde Linux.
Un cas particulier :Autotools
Au fur et à mesure que les projets grandissent, ils doivent fournir des moyens simples de passer du code source au binaire à l'installation complète sur le système. C'est pourquoi ils sont livrés avec un système de construction intégré, une collection de scripts pour faire le nécessaire.
Dans le monde Linux/Open Source/Free Software, un système de construction a été largement adopté :GNU Autotools. Si jamais vous traitez avec un package (open) source, il y a de fortes chances que vous utilisiez Autotools.
Dans le cas le plus simple, voici comment installer une application packagée avec les outils automatiques :
./configure
:Un script qui va générer les Makefiles correspondant à votre système (il vérifie aussi souvent la disponibilité des dépendances).make
:Compilation du code source selon les Makefiles générés précédemment.make install
:copie les fichiers binaires aux emplacements appropriés, crée des liens symboliques et toute autre étape définie par le développeur.
Remarques
configure
les scripts ont généralement beaucoup d'options, comme le compilateur à utiliser ou la façon de définir le répertoire cible. Si vous avez besoin de flexibilité, cela vaut la peine de regarder./configure --help
.- Même si vous êtes sûr qu'il s'agit d'Autotools et que vous le connaissez très bien, toujours commencez par lire les docs (README, INSTALL, ...)
Répondez à la mise à jour dans la question
Ce que vous demandez n'a pas de réponse définitive. Tout le monde ici peut avoir une opinion sur ce qui constitue une "bonne pratique", mais en fin de compte, vous seul pouvez trouver ce qui fonctionne pour vous . S'il y avait une réponse facile, vous ne poseriez pas la question. Votre distribution y aurait répondu pour vous.
Ceci étant dit, voici quelques remarques personnelles.
-
Sur mon système, je réserve
/usr/local/bin
pour les packages installés par mon gestionnaire de packages. Tout ce que je compile/installe à la main va dans/opt
. C'est un détail mais cela permet d'éviter de gros maux de tête lorsqu'on a affaire à plusieurs versions d'un même programme. -
xxx.desktop
, et les problèmes d'interface graphique en général, sont spécifiques à l'environnement de bureau que vous utilisez. Si cela fonctionne pour votre système, tant mieux. Mais elle n'est pas généralisable à tous les environnements disponibles sous Unix. -
/usr/local/bin
a l'avantage d'être déjà dans votre PATH. Si vous souhaitez utiliser un autre répertoire (comme/opt
comme je le suggère), assurez-vous de l'inclure dans votre PATH. Si vous ne savez pas comment le faire, ouvrez un terminal et exécutez ce qui suit dans un terminal (ce n'est pas la plus jolie façon de le faire, mais sans rien savoir de votre système, je ne peux rien suggérer d'autre) :echo 'export PATH=$PATH:/opt' >> ~/.bashrc
Je pense que vous devez clarifier avec vous-même avec quoi vous voulez "l'enregistrer" avec .
Pour expliquer - et je n'essaie pas d'être intelligent - "linux" est, bien sûr, le noyau, et le noyau ne connaît ni n'a aucun intérêt dans aucun des logiciels de l'espace utilisateur sur votre système au-delà de init. Alors de quoi parle-t-on ici ?
Vous mentionnez un certain nombre de distributions différentes. Je construis parfois un logiciel à partir de la source même s'il est disponible dans le référentiel car je veux que certaines options de configuration soient définies qui ne sont pas définies dans le binaire de distribution. Le seul problème que j'ai avec cela est que si le paquet est une condition préalable à autre chose, je dois en effet l'enregistrer auprès du système de conditionnement afin d'éviter d'installer accidentellement le package de distribution par-dessus celui que j'ai construit. Sur les systèmes basés sur fedora/rpm, cela se fait avec rpm -i --justdb <package>
. Je ne fais pas cela sur les systèmes basés sur debian/apt; au lieu de cela, je force simplement les installations selon les besoins, ce qui est peut-être paresseux - il semble y avoir une meilleure façon de le faire, en créant un paquet factice qui prétend remplir n'importe quel prérequis. C'est en quelque sorte dans le sens de la suggestion de m0nhawk de créer un paquet à partir de la source .tar.gz -- sauf un peu plus simple (je vais être honnête et dire que je n'aime pas du tout la suggestion de m0nhawk).
Il semble que vous ayez d'autres problèmes que celui du système d'emballage. Ce n'est pas clair pour moi de quoi il s'agit, bien que vous mentionniez l'environnement de bureau (par exemple, Gnome). Celles-ci sont hétérogènes, il n'y a donc tout simplement pas de réponse unique à la question "comment puis-je faire cela sur Linux" -- ce n'est même pas une question de "comment puis-je faire cela sur Ubuntu" ou "comment puis-je faire cela sur gentoo" - c'est une question de "comment puis-je faire cela pour le bureau gnome" ou "comment faire cela sur le bureau XFCE", etc. À mon avis, le seul problème est la question des lanceurs que vous mentionnez, que je aimerait croire que chaque DE fournit un moyen simple de le faire (mais ce ne sera pas exactement la même chose, car ils sont différents). Il y a aussi peut-être le problème d'avoir quelque chose qui fournit une valeur par défaut pour traiter les fichiers - je pense que la question est "comment puis-je enregistrer une commande avec mon navigateur de fichiers" (et les navigateurs de fichiers sous Linux sont également une collection hétérogène).
Ensuite, il y a les services, qui sont gérés par le système init (par exemple, systemd ou upstart). Donc, cette question est en fait une série de questions connexes concernant, potentiellement :
- le système d'empaquetage, par exemple, apt ou yum
- le système init, par exemple, systemd ou upstart
- l'environnement de bureau, par exemple, kde ou unity
- le navigateur de fichiers, par exemple, nautilus ou konqueror
- ????
Une partie de la raison pour laquelle il ne peut y avoir une solution unifiée simple (bien que la norme XDG peut fournir certaines parties de celui-ci) est que "linux" n'est pas un simple système d'exploitation unifié et j'imagine que la grande majorité de ses utilisateurs le préfèrent ainsi. Souvent, je n'utilise pas du tout de DE, et je n'utilise jamais le navigateur de fichiers fourni, etc.
Encore une fois, j'essaie vraiment d'être utile avec cela et pas seulement de pontifier :s'il y a des problèmes que vous voulez résoudre ici, vous devrez considérer plus précisément quels sont ces problèmes et quel logiciel est réellement impliqué (au-delà de "linux ") si vous voulez les résoudre.
Je pense que la raison fondamentale de votre problème global est qu'un système Linux ne contient pas de "registre" en tant que tel. Un fichier exécutable est tout ce dont vous avez vraiment besoin pour que quelque chose fonctionne. Si vous ne souhaitez pas spécifier le chemin complet de l'exécutable, la plupart des shells les rechercheront dans les répertoires répertoriés dans la variable $PATH de votre environnement. Cela peut devenir un peu plus complexe avec les bibliothèques liées, etc., mais normalement, vous n'avez pas besoin d'aller aussi loin.
Différentes distributions de Linux se sont standardisées sur diverses dispositions de systèmes de fichiers et systèmes de gestion de packages, c'est là que réside le problème. Les Redhats utilisent rpm, Debians/Ubuntu utilisent des packages deb. Arch a également suivi sa propre voie. Du point de vue des projets logiciels, à moins que vous ne souhaitiez être inclus dans une distribution, votre base d'utilisateurs est entièrement dans une distribution, ou un produit commercial qui vise la facilité d'installation pour tout le monde, ce sont probablement les seuls points que vous commencez à chercher à construire différents forfaits.
En fait, une source tar.gz qui se construit avec gcc
est probablement la meilleure définition d'un "paquet Linux" commun. Un noyau Linux avec quelques utilitaires GNU et GCC à peu près le dénominateur commun entre toutes les différentes versions de systèmes d'exploitation basés sur Linux que vous pouvez obtenir.
Je n'irais pas jusqu'à dire que "si peu" de choses sont disponibles sous forme de packages, car quelque chose de spécifique que vous recherchez ne l'est pas. (ou peut-être que le distributeur a choisi de ne pas s'embêter avec tout ce remue-ménage ? Comme Chrome et son propre processus de mise à jour). Il y a tellement de paquets pour tant de systèmes de paquets différents pour tant d'architectures pour tant de logiciels libres que ce n'est pas drôle.
Si vous avez construit quelque chose qui n'est pas fourni en tant que paquet pour votre distribution de Linux, ou qui prend en charge l'option de construire en tant que paquet, la meilleure façon de "l'enregistrer" comme un vrai paquet est de construire un paquet pour lui, en définissant où tous les fichiers doivent être basés sur le système de packages que vous choisissez et installez-le de cette façon. Soyez une âme et apportez votre travail d'emballage au projet afin que d'autres puissent en bénéficier.
Il existe différents guides sur le Web concernant la création de packages. Debian en fait partie.
Si tout ce que vous voulez faire est d'exécuter un package compilé, ajoutez peut-être le chemin binaire à votre $PATH
?
Si vous faites autre chose, qu'est-ce que c'est ?