rendere una determinata versione del software predefinita in Ubuntu


11

Al momento ho 2 versioni di php installate su Ubuntu 12.04.

uno per php 5.3 installato usando apt-get mentre l'altro è installato con xampp con php 5.5

Quando eseguo questi comandi:

> which php
/usr/bin/php

> php --version
PHP 5.3.10-1ubuntu3.8 with Suhosin-Patch (cli) (built: Sep  4 2013 20:05:42) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
    with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethan

>echo $PATH
/home/chanhxc/bin
/usr/lib/lightdm/lightdm
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/opt/lampp/bin
/home/chanhxc/pear/bin
/home/chanhxc/.composer/vendor/bin
/opt/lampp/bin
/home/chanhxc/bin
/usr/lib/lightdm/lightdm
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/home/chanhxc/bin
/usr/lib/lightdm/lightdm
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/opt/lampp/bin
/home/chanhxc/pear/bin
/home/chanhxc/.composer/vendor/bin
/opt/lampp/bin

Come posso rendere php 5.5 la versione predefinita da eseguire?

A proposito, la mia shell predefinita è zsh. ecco la linea nel mio .zshrc

export   PATH=$PATH:/home/chanhxc/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
    # xampp, pear, composer
export PATH=$PATH:/opt/lampp/bin:/home/chanhxc/pear/bin:/home/chanhxc/.composer/vendor/bin:/opt/lampp/bin

Aggiornare

Se sto optando per l' opzione di aggiornamento-alternative . Ecco quello che ho attualmente.

>update-alternatives --query php
Link: php
Status: auto
Best: /usr/bin/php5
Value: /usr/bin/php5

Alternative: /usr/bin/php5
Priority: 50
Slaves:
 php.1.gz /usr/share/man/man1/php5.1.gz

Risposte:


18

Penso che il modo migliore per farlo su Ubuntu sia così:

sudo update-alternatives --set php /usr/bin/php5.6

È possibile modificare la versione in base alle proprie esigenze.


Sono d'accordo che questo è il modo migliore per farlo. Aggiorna il collegamento in / usr / bin / php alla versione corretta. In Ubuntu 16 è possibile installare php5.6 e php7.0 e farli funzionare contemporaneamente, il che è carino, ma a volte si desidera aggiornare l'impostazione predefinita.
Dave Drager,

10

Ci sono un milione di cose che puoi fare invece di cambiare $ PATH.

Uno è definire un alias nel tuo file /home/YOUR_NAME/.bashrc,

alias myphp=' /path/to/my/favorite/php ' 

Un altro è rinominare la versione di php che non si desidera e trasformare / usr / bin / php in un collegamento simbolico alla versione che si desidera utilizzare:

sudo mv /usr/bin/php /usr/bin/php_5.3.10
sudo ln -s /path/to/php/you/want /usr/bin/php

Oppure puoi usare il sistema di alternative Debian. Innanzitutto, installa un'alternativa php,

 sudo update-alternatives --install "/usr/bin/php" "php" "/pathto/your/favorite/php" 1 

allora controlli che tutto vada bene per mezzo di

sudo update-alternatives --display php

E molto altro ancora.


grazie per il suggerimento. ma qual è il modo migliore lì. in realtà ho un alias come phplatest con php versione 5.5. il soft linking di php in / usr / bin / php renderebbe l'altra versione di xampp di default?
chanHXC,

tra l'altro, cosa fa esattamente un comando update-alternative?
chanHXC,

Tiene traccia di quali programmi, tutti fornendo lo stesso servizio, che preferisci utilizzare. Come avere Chrome, Chromium, Firefox, Iceweasel sullo stesso PC, quale si dovrebbe aprire quando si fa clic su alink in un'e-mail? L'unica alternativa-aggiornamento ha indicato come master.
MariusMatutiae,

ok grazie. ma perché ottengo l'argomento sconosciuto `php '. durante l'esecuzione di update-alternative
chanHXC

@chanHXC Questo perché ho fatto un errore nella sintassi. Ho aggiornato il mio post, ora dovrebbe funzionare. Ricorda di spostare il php esistente in / usr / bin / php_old
MariusMatutiae

3
sudo update-alternatives --config php

Ciò potrebbe essere più intuitivo in quanto consente all'utente di selezionare in modo interattivo quale delle alternative disponibili scegliere.
Rolando Isidoro,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.