Comment compiler et installer des programmes depuis les sources

39

C’est un problème qui limite vraiment mon utilisation de Linux. Si l'application ne se trouve pas sur un référentiel ou si elle ne possède pas de script d'installation, je me demande vraiment où et comment installer une application à partir du code source.

Comparativement à Windows, c'est facile. Vous êtes (à peu près) obligé d'utiliser une application d'installation qui effectue tout le travail dans un assistant. Avec Linux ... pas tellement.

Alors, avez-vous des conseils ou des instructions à ce sujet ou existe-t-il des sites Web expliquant explicitement comment, pourquoi et où installer les programmes Linux à partir des sources?

Nitrodiste
la source
7
"Comparativement à Windows, c'est facile. Vous êtes (pratiquement) obligé d'utiliser un programme d'installation qui effectue tout le travail dans un assistant. Avec Linux ... pas tellement." Il y a le point faible de la question. Avec Windows, vous obtenez rarement le code source, vous êtes donc à la merci de celui qui a créé le package. Si vous y réfléchissez, ce n’est pas très différent de dire "il n’existait pas de paquet Linux, je dois donc construire à partir des sources", c’est-à-dire. il n'y avait pas moyen de l'obtenir pour commencer. Construire à partir de la source est généralement un dernier recours dans * nix-land, mais rarement une option dans Windows-ville.
Avery Payne
2
Cela étant dit ... +1 bosse pour avoir posé une question commune à laquelle tous les nouveaux venus dans les systèmes * nix devraient répondre. :) Construire à partir des sources signifie parfois faire la différence entre la résolution d’un bogue méchant et le fait de souffrir jusqu’à la prochaine version du logiciel. Ce n'est vraiment pas si mal, et comme beaucoup l'ont souligné ici, une fois que vous savez quoi chercher et comment le faire, c'est assez simple.
Avery Payne

Réponses:

22

Normalement, le projet aura un site Web avec des instructions pour le construire et l’installer. Google pour cette première.

Pour l'essentiel, vous ferez soit:

  1. Téléchargez un fichier tarball (fichier tar.gz ou tar.bz2), qui est une version d'une version spécifique du code source
  2. Extrayez l'archive avec une commande comme tar zxvf myapp.tar.gzpour une archive compressée ou tar jxvf myapp.tar.bz2pour une archive compressée
  3. cd dans le répertoire créé ci-dessus
  4. courir ./configure && make && sudo make install

Ou:

  1. Utilisez git ou svn ou autre chose pour extraire le dernier code source de son dépôt source officiel
  2. cd dans le répertoire créé ci-dessus
  3. courir ./autogen.sh && make && sudo make install

Configure et autogen.sh accepteront un argument --prefix pour spécifier l'emplacement d'installation du logiciel. Je recommande de vérifier où dois-je mettre le logiciel que je compile moi-même? pour obtenir des conseils sur le meilleur endroit pour installer un logiciel personnalisé.

Sablonneux
la source
Pourquoi autogen.sh est-il utilisé lors de la dernière mise à jour, mais configure / make est utilisé pour une version officielle?
Louis Salin
1
En règle générale, les personnes souhaitant utiliser le logiciel "à la fine pointe" extraient la version du logiciel de contrôle de version (comme git, subversion ou CVS). C'est un avantage décisif, car il n'a probablement pas été testé, contrairement à une archive cachée, qui a (probablement) été certifiée comme fonctionnant (du moins dans la plupart des cas). Avoir un sens?
Matt Simmons
2
@ Matt, bien sûr que cela a du sens, mais je pense que le commentaire portait davantage sur le fait que Sandy donnait maintenant l'impression qu'il y avait un autogen.sh dans chaque coffre git'd / svn'd.
reiche
1
Et un poulet dans chaque casserole ... ou quelque chose comme ça. Heck, de temps en temps, je tombe sur un logiciel sans script de configuration, aussi. S'il existait un moyen simple et unifié de le faire, nous n'aurions pas besoin de paquets ;-)
Matt Simmons
Matt a absolument raison, c'est pourquoi j'ai dit "pour la plupart" et j'ai d'abord préconisé de consulter le site Web du projet. Le conseil autogen.sh/configure s'appliquera à pratiquement tous les modules GNOME, ainsi qu'à une tonne d'autres projets. Certains projets n'utilisent pas automake et ne contiendront que des fichiers Makefile make && sudo make install. Certains projets Python n'auront qu'un fichier setup.py, que vous appellerez pour l'installer (car il n'y a pas vraiment d'installation de compilation). Il existe également de nombreux autres systèmes de construction / installation. Espérons que les fichiers README ou INSTALL expliqueront exactement quoi faire.
Sandy
3

Je veux juste ajouter qu'il existe des gestionnaires de paquets qui compilent les paquets à partir de la source et gèrent toutes leurs dépendances, drapeaux, etc.

Dans les systèmes BSD, c'est ports: Utiliser la collection de ports

Dans Debian, le apt-getgestionnaire de paquets peut également installer à partir de la source: APT HOWTO: Travailler avec les paquets sources (Idem pour Ubuntu, Linux-mint et tout le reste basé sur Debian)

La distribution Gentoo utilise le portagegestionnaire de paquets, qui compile l’ensemble du système à partir des sources uniquement: Introduction de Portage .

Slackware peut compiler des paquetages mais je ne sais pas s’il existe un gestionnaire de paquet pour cela .. =)

Quoi qu'il en soit , vous pouvez toujours compiler des paquets manuellement comme Sandy mentionné ci - dessus =) En outre , il doit être possible d'utiliser apt-getou portagegestionnaires de paquets dans tout autre ... distro

holms
la source
1
Dire que "le gestionnaire de paquets apt-get peut installer à partir des sources" est incorrect. La section citée décrit comment créer un paquet Debian à partir de sources Debian . Sources amont non arbitraires.
Faheem Mitha
2

Je pense qu'il est préférable de lire la documentation fournie avec le programme ou l'application spécifique que vous souhaitez installer. Il y a généralement des fichiers readmes / README dans l'archive (l'archive source de l'application que vous pouvez généralement télécharger) ou peut-être même INSTALLER des fichiers à lire et à apprendre sur le mode d'installation préféré de cette application. En bref: RTFM;)

reiche
la source
Je suis venu ici parce que le fichier README donnait toutes les conditions requises pour être construit sous Linux, mais ne contient que des instructions d'installation de Windows. La réponse acceptée a fonctionné pour moi et fonctionne probablement la plupart du temps. Je pense que c'est presque un meilleur conseil d'essayer la route ./configure et d'aller au fichier README si cela ne fonctionne pas (c'est-à-dire qu'il manque une dépendance et que vous ne pouvez pas lire la sortie du compilateur).
Stephen C
1

Un résumé pour utiliser la collection de ports dans FreeBSD:

Trouver un port

Les ports sont organisés par catégorie. Si vous ne savez pas dans quelle catégorie se trouve le port, vous devez le trouver en premier:

cd /usr/ports
make search name=myport

Parfois, il y a trop d'entrées de cette façon. Personnellement, je préfère:

find /usr/ports -name myport* -print -depth 2

Utilisez-le *lors de la recherche car il existe souvent plusieurs versions d'un port. L'argument de profondeur garantit que vos résultats de retour ne sont pas inutilement encombrés de correspondances que vous ne voudrez probablement pas.

Configuration

Souvent, vous aurez envie de faire une configuration; des logiciels tels que Apache et Postgres en ont pratiquement besoin. Il y a trois choix principaux: ligne de commande, environnement et créer des fichiers de configuration. Pour commencer avec la ligne de commande:

make showconfig

Cela listera les options de configuration par défaut. Si vous aimez les valeurs par défaut, vous êtes prêt à compiler et à installer. Si non,

make config

ouvrira une boîte de dialogue dans laquelle vous pourrez sélectionner les options de votre choix. (Ne vous y trompez pas et make configureconfigurez votre port avec les options que vous avez choisies!) C'est souvent suffisant, mais pour certains logiciels, comme Apache, il existe souvent une configuration complexe qu'un simple dialogue ne gérera pas. Pour cela, vous devriez également regarder le (s) Makefile (s) qui vous donnera parfois des cibles supplémentaires pour make qui vous donneront plus d’informations. Pour continuer l'exemple Apache

make show-modules
make show-options
make show-categories

vous donnera des informations sur la configuration des modules choisis, des options de fil, etc. Si les valeurs par défaut de votre port sont généralement correctes et que vous souhaitez simplement modifier quelques éléments, vous pouvez également transmettre des paires clé = valeur telles que des variables d'environnement:

make MYVBL1=MYVAL1 ... install clean

En outre, vous pouvez définir les options du commutateur via l’ -Doption:

make -D MYVAR -D MYOTHERVAR ... install clean

Pour une configuration complexe, toutefois, la ligne de commande ne fonctionnera pas bien et il vaut mieux qu'aucune des deux premières méthodes ne soit efficace. Dans ce cas, vous pouvez créer un fichier de configuration et le transmettre makeavec la variable __MAKE_CONF. FreeBSD a un fichier de configuration par défaut: il /etc/make.confcontient généralement des informations sur les ports précédemment installés et d’autres paramètres système. Pour commencer, créez un fichier avec vos options de ports, appelez ~/myport.mk-le puis combinez ce fichier avec /etc/make.conf:

cat /etc/make.conf ~/myport.mk >> ~/make.myport.conf

vous pouvez ensuite vérifier votre configuration:

make showconfig __MAKE_CONF=~/make.port.conf

et si tout va bien:

make install clean __MAKE_CONF=~/make.myport.conf

IL FAUT SE MÉFIER! Si vous avez besoin d'ajuster vos paramètres de configuration après make configureou après une installation, en totalité ou en partie, vous devez absolument effacer votre configuration :

make rmconfig

Sinon, des interactions inattendues se produiront entre le sous-système des ports, les makevaleurs par défaut de votre port et la configuration souhaitée.

C'est un peu beaucoup pour un résumé, mais la complexité de la configuration est principalement liée à l'application, pas au port. Bash par exemple, n'a pas vraiment d'options.

Installation

C'est la partie facile:

make install clean

ou tu peux

make build
make install
make clean

qui est juste plus en tapant.

C'est à peu près tout. Évidemment, vous pouvez faire plus, comme lister de manière récursive les dépendances et les options de configuration, mettre à jour avec les correctifs, etc. Dans cet exemple, je vous renvoie à la section Ports du manuel , à la page de manuel du sous-système de ports (bonne information sur les cibles de fabrication supplémentaires) et à la makepage de manuel.

gvkv
la source