Je vois tous ces liens expliquant les packages et les .debs ... Je le sais ... et il y a beaucoup de contraintes pour faire fonctionner les fichiers tar.gz (par exemple: update-alternatives pour Java ou déposer manuellement le fichier dans / usr / local / bin (ou ailleurs, que j'avais déduit d'heures de recherche)). Si les packages sont si intelligents, comment si peu d'applications Linux sont-elles disponibles dans les packages ou .debs / rpms?
Je parle en tant que nouvel utilisateur; Je sais que les experts le savent probablement mieux (je pense que je peux télécharger une version compilable d'Eclipse?). Comme netbeans et chrome .sh
, eclipse est un répertoire simple et lancable, Java nécessite cette update-alternatives
activité mais je ne pense pas qu'il s'enregistre dans la "liste des programmes" d'Ubuntu / Debian (s'enregistre simplement en tant que commande), etc. (je sais que ce sont parfois disponible dans les référentiels, mais je ne comprends pas pourquoi les pages de téléchargement n'ont pas d'explications appropriées).
En bref: si vous téléchargez ou compilez un fichier tar.gz, comment l'enregistrer sur le système? update-alternatives
semble l'enregistrer comme une commande, dans Ubuntu, il n'apparaît pas dans la barre de recherche. Dans Debian, je peux ajouter manuellement un raccourci vers le lanceur GNOME 2. Mais que dois-je vraiment faire?
Éditer:
Donc après avoir joué un peu plus avec les nouvelles solutions, je peux en quelque sorte affiner mon "problème":
Comment dois-je gérer mes programmes installés manuellement? Firefox et Eclipse sont mes seuls exemples à ce jour (je ne télécharge pas beaucoup de choses). Ils peuvent tous deux sortir de la boîte, ce que j'aime. Sauf, où dois-je les installer? Je vois qu'Eclipse a ses propres instructions, mais je préfère faire tous mes "packages manuels" de la même manière.
- Après quelques recherches, j'ai décidé de mettre ces programmes en place
/usr/local/bin
. - De la façon d'installer eclipse , j'ai pensé à obtenir quelque chose à afficher dans le lanceur, je dois mettre un
xxx.desktop
fichier~/.local/share/applications/
. Le nom de ce fichier .desktop est-il important? - Les trucs avec les autotools (je cherche un
configure
ou ununix/configure
fichier) fonctionneront bien. Quelques points de recherche que je devrais utiliserCheckInstall
pour garder une trace de tout cela. - Je devrais utiliser
update-alternatives
pour enregistrer des chemins. À partir de ce fil java , il semble que je crée un lien de/usr/bin/java
à/usr/lib/jvm/jdk...
. Lorsque j'installe ces applications "autonomes" comme Eclipse ou Firefox, dois-je toujours créer un lien vers/usr/bin/[app]
? Et si l'assertion 1 est vraie, je ferais des trucs commesudo update-alternatives --install "/usr/bin/[app]" "[app]" "/usr/local/bin/[app]" 1
Ces instructions sont-elles correctes / un bon moyen de gérer les installations manuelles? Y a-t-il d'autres étapes à suivre? D'autres suggestions?
*.deb
forfait à la place?*.tar.gz
logiciel est de créer le package approprié:*.rpm
,*.deb
etc..desktop
fichier pour que quelque chose apparaisse dans le menu.update-alternatives
ne fonctionne que pour prioriser votrePATH
.Réponses:
Pourquoi de nombreuses applications ne sont-elles pas disponibles dans les référentiels de packages?
Il peut y avoir plusieurs raisons:
Il n'y a pas une seule raison. Si vous souhaitez voir votre application préférée dans le gestionnaire de paquets de votre distribution, vous devez traiter chaque cas séparément. Essayez de contacter les développeurs (sur un canal IRC ou une liste de diffusion par exemple) et demandez comment vous pourriez aider à l'emballage.
Comment installer une archive tar?
Une archive tar (package .tar.gz) peut contenir n'importe quoi. Jusqu'à ce que vous l'ouvriez, vous n'avez aucun moyen de supposer comment l'installer. Encore une fois, chaque paquet doit être abordé différemment.
Cherchez de la documentation! Tout package (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. La consultation du site Web de l'éditeur peut également être utile.
Étant donné que chaque package est différent, il n'existe aucun moyen universel de traiter toutes les archives tar dans le monde. C'est comme demander une recette qui fonctionne avec tous les ingrédients du monde. N'arrive 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 seront de plus en plus prévisibles à mesure que vous passerez du temps dans le monde Linux.
Un cas particulier: Autotools
À mesure que les projets grossissent, ils doivent fournir des moyens faciles de passer du code source au binaire pour une 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 / Logiciel libre, un système de build a été adopté plus largement: GNU Autotools . Si vous avez déjà affaire à un package source (n ouvert), il y a de fortes chances que vous utilisiez Autotools.
Dans le cas le plus simple, voici comment installer une application empaquetée avec des 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 comment définir le répertoire cible. Si vous avez besoin de flexibilité, cela vaut la peine de regarder./configure --help
.Répondre à la mise à jour dans la question
Ce que vous demandez n'a pas de réponse définitive. Tout le monde ici pourrait avoir une opinion sur ce qui constitue une "bonne pratique", mais à la fin de la journée, 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 aurait répondu pour vous.
Cela étant dit, voici quelques remarques personnelles.
Sur mon système, je réserve
/usr/local/bin
les packages installés par mon gestionnaire de packages. Tout ce que je compile / installe à la main entre/opt
. Ceci est un détail mais il permet d'éviter les maux de tête majeurs lors de l'utilisation de plusieurs versions du 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 il ne peut pas être généralisé à tous les environnements disponibles sur Unix./usr/local/bin
a l'avantage d'être déjà dans votre PATH . Si vous souhaitez utiliser un autre répertoire (comme/opt
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 (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
la source
emacs
utilisateur). Vous devez passer par des essais et des erreurs pour apprendre, avec le temps, les avantages et les inconvénients de chacune des différentes approches.xxx.desktop
fonctionne généralement pour GNome. Que savez-vous sur l'utilisationupdate-alternatives
pour définir le chemin?Je pense que vous devez clarifier avec vous - même ce que vous voulez « enregistrer » ce 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 pour aucun des logiciels de l'espace utilisateur sur votre système au-delà d'init. Alors de quoi parle-t-on ici?
Vous mentionnez un certain nombre de distributions différentes. Je crée parfois des logiciels à partir des sources, même s'ils sont disponibles dans le référentiel, car je veux des options de configuration 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 package est une condition préalable à autre chose, je dois en effet l'enregistrer avec le système de package afin d'éviter d'installer accidentellement le package de distribution au-dessus de 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; à la place, je force les installations au besoin, ce qui est peut-être paresseux - il semble y avoir une meilleure façon de le faire, en créant un package factice qui prétend remplir toutes les conditions préalables. C'est un peu dans la ligne de la suggestion de m0nhawk de créer réellement 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 en plus de celui du système d'emballage. Ce n'est pas clair pour moi, 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" - il ne s'agit même pas de "comment faire cela sur ubuntu" ou "comment dois-je faire cela sur gentoo "- il s'agit de" comment 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 le même, car ils sont différents).
Ensuite, il y a les services, qui sont gérés par le système init (par exemple, systemd ou upstart). Cette question est donc en fait une série de questions connexes concernant, potentiellement:
Une partie de la raison pour laquelle il ne peut pas y avoir une solution unifiée simple (bien que la norme XDG puisse en fournir certaines parties) est que "linux" n'est pas un système d'exploitation unifié simple et j'imagine que la grande majorité de ses utilisateurs le préfèrent de cette façon. Souvent, je n'utilise pas du tout un 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 quels logiciels sont réellement impliqués avec eux (au-delà de "linux"). ") si vous voulez les résoudre.
la source
.desktop
fichiers, pour ce type de tâches, celles-ci sont requises.configure
, vousmake install
. Voilà, c'est fait. Tout ce qui suit est une question de préférence personnelle.Je pense que la raison fondamentale de votre problème global est qu'un système Linux ne contient pas en soi de "registre" en tant que tel. Un fichier exécutable est tout ce dont vous avez vraiment besoin pour exécuter quelque chose. Si vous ne souhaitez pas spécifier le chemin d'accès complet à 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 et ainsi de suite, mais normalement vous n'avez pas besoin d'aller plus loin.
Différentes distributions de Linux se sont normalisées sur diverses configurations de systèmes de fichiers et systèmes de gestion de paquets, c'est là que réside le problème. Les Redhats utilisent rpm , Debians / Ubuntu utilisent les packages deb. Arch a également suivi sa propre voie . Du point de vue des projets logiciels, à moins que vous ne vouliez être inclus dans une distribution, votre base d'utilisateurs est entièrement dans une distribution, ou un produit commercial qui vise à faciliter l'installation pour tout le monde, ce sont probablement les seuls points que vous commencez à chercher à construire divers forfaits.
En fait, un tar.gz source qui construit avec
gcc
est probablement la meilleure définition d'un "paquet Linux" commun. Un noyau Linux avec certains 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 parce que 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 tapage? Comme Chrome et son propre processus de mise à jour). Il y a tellement de nombreux paquets autour de si nombreux différents forfaits systèmes pour tant d'architectures pour le logiciel libre tant son pas drôle .
Si vous avez construit quelque chose qui n'est pas fourni en tant que package pour votre distribution de Linux, ou prend en charge l'option de génération en tant que package, la meilleure façon de "l'enregistrer" comme un vrai package est de construire un package pour lui, en définissant où tous les fichiers doivent être basés sur le système de package que vous choisissez et l'installer 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 sur 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, c'est quoi?
la source
make install
ou similaire) installerait à tout le moins un lien symbolique sous/usr/bin/
, sinon installer le tout sous/
)--prefix=/elsewhere
pour garder les builds personnalisés loin de l'arbre normal.make install
seront installés sur/usr/local/bin
Je voudrais ajouter que vous pouvez également créer un lien symbolique vers
~/bin/
au lieu de/usr/bin
.*.desktop
les fichiers peuvent être placés dans~/.local/share/applications/
ou/usr/share/applications/
. Seulement, j'utilise mon ordinateur et j'aime éviter autant que possible de toucher moi-même les fichiers système (quoi que ce soit en dehors de mon répertoire personnel).Bien sûr, lorsque vous placez des éléments dans les équivalents du "répertoire personnel", ils n'apparaissent pas pour les autres utilisateurs.
Voici ce qui est inclus dans la valeur
~/.profile
par défaut pour Debian Wheezy:la source