Installer symfony sur ubuntu 8.04

Ne pas utiliser apt, la version qu’il installe va générer des erreurs.

PHP Fatal error: Uncaught Error: Call to undefined method Composer\Package\RootPackage::getConfig() in /home/manu/.config/composer/vendor/fxp/composer-asset-plugin/Config/ConfigBuilder.php:111
Stack trace:
#0 /home/manu/.config/composer/vendor/fxp/composer-asset-plugin/Config/ConfigBuilder.php(74): Fxp\Composer\AssetPlugin\Config\ConfigBuilder::getConfigBase(Object(Composer\Composer), Object(Composer\IO\ConsoleIO))
#1 /home/manu/.config/composer/vendor/fxp/composer-asset-plugin/FxpAssetPlugin.php(82): Fxp\Composer\AssetPlugin\Config\ConfigBuilder::build(Object(Composer\Composer), Object(Composer\IO\ConsoleIO))
#2 /usr/share/php/Composer/Plugin/PluginManager.php(215): Fxp\Composer\AssetPlugin\FxpAssetPlugin->activate(Object(Composer\Composer), Object(Composer\IO\ConsoleIO))
#3 /usr/share/php/Composer/Plugin/PluginManager.php(188): Composer\Plugin\PluginManager->addPlugin(Object(Fxp\Composer\AssetPlugin\FxpAssetPlugin))
#4 /usr/share/php/Composer/Plugin/PluginManager.php(240): Composer\Plugin\PluginManager->registerPackage(Obje in /home/manu/.config/composer/vendor/fxp/composer-asset-plugin/Config/ConfigBuilder.php on line 111

Si vous l’avez déjà installée, supprimez la avec

sudo apt-get remove composer

ensuite, tapez la commande suivante dans un terminal:

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer

Et ça fonctionne

Freecad: erreurs et non fonctionnement

Si vous avez des problèmes avec freecad (astuce: lancez freecad dans une console pour voir les erreurs), il peut s’agir d’un problème de locales.

Traceback (most recent call last):
File "<string>", line 1, in <module>
<type 'exceptions.TypeError'>: Either three floats, tuple or Vector expected

La solution consiste à créer un fichier qui va exporter la lang qui va bien à freecad avant de le lancer.

Créez le fichier /usr/local/bin/freecad.sh avec le contenu suivant:


#!/bin/bash
export LC_ALL=C
freecad $1 $2 $3 $4 $5

rendez le exécutable par sudo chmox +x /usr/local/bin/freecad.sh

Modifiez le lanceur de freecad (/usr/share/applications.freecad.desktop) de la manière suivante:

[Desktop Entry]
Version=1.0
Name=FreeCAD
Name[de]=FreeCAD
Comment=Feature based Parametric Modeler
Comment[de]=Feature-basierter parametrischer Modellierer
GenericName=CAD Application
GenericName[de]=CAD-Anwendung
Exec=/usr/local/bin/freecad.sh %F
Path=/usr/lib/freecad
Terminal=false
Type=Application
Icon=freecad
Categories=Graphics;Science;Engineering
StartupNotify=true
GenericName[de_DE]=Feature-basierter parametrischer Modellierer
Comment[de_DE]=Feature-basierter parametrischer Modellierer
MimeType=application/x-extension-fcstd

Notez la modification de la ligne 9.

C’est tout. Quand vous lancez freecad, cela devrait désormais fonctionner.

Plus d’infos: https://www.freecadweb.org/tracker/view.php?id=2891

[Résoudre] LibreOffice: document verrouillé par utilisateur inconnu

Parfois, avec LibreOffice, vous obtenez le message d’erreur suivant:

Le document ‘xxx.ods’ est verrouillé pour édition par :

Utilisateur inconnu

Ouvrez le document en lecture seule ou ouvrez une copie du document pour l’édition.

Lorsqu’il y a plusieurs utilisateurs susceptibles d’accéder au document, c’est peut être un poste dont les données d’identité n’ont pas été renseignées dans les options de LibreOffice. Il faut donc s’assurer que tous les postes ont ces informations de renseignées pour pouvoir trouver quel utilisateur accède actuellement au document.

Par contre, si vous êtes le seul à accéder à ce document, le problème vient du fait que votre document est sur un partage réseau (SMB, NFS, …), même si vous l’avez monté en local et que LibreOffice active par défaut le verrouillage du fichier. Sauf que, quand vous fermez celui ci, il ne relâche pas le fichier…

Une solution de contournement, mais seulement si vous êtes le seul utilisateur à accéder à ces documents, consiste à modifier le lanceur de LibreOffice afin qu’il n’active plus cette fonction par défaut.

Éditez le fichier (en root ou avec sudo) /usr/bin/soffice et modifiez:

SAL_ENABLE_FILE_LOCKING=1
export SAL_ENABLE_FILE_LOCKING

en

#SAL_ENABLE_FILE_LOCKING=1
#export SAL_ENABLE_FILE_LOCKING

Enregistrez, fermez. Vous pouvez désormais immédiatement ouvrir et enregistrer vos fichiers.

Ce n’est pas une solution officielle, et il y a un risque important de perte de données si plusieurs utilisateurs accèdent simultanément au même fichier, mais elle a le mérite de fonctionner et de débloquer les utilisateurs uniques qui travaillent sur un NAS.

Gardez cette page dans vos favoris, la mise à jour de LibreOffice risque bien de remplacer le fichier modifié et de faire ré-apparaitre le problème.

[Resolu] L’installation d’Ubuntu (ubiquity) crashe avec une langue autre que l’anglais

Ou « [SOLVED] Ubiquity crashes with non english setup »

Le problème

Lors de l’installation d’Ubuntu (16.04 dans mon cas mais le bug existe avec d’autres versions), ubiquity plante et le message « Nous sommes désolés, l’installateur a planté » apparait. Si vous allez regarder dans le fichier /var/log/syslog vous verrez les lignes suivantes:


Jan 5 11:10:46 ubuntu ubiquity: Setting capabilities for gnome-keyring-daemon using Linux Capabilities failed.
Jan 5 11:10:47 ubuntu /plugininstall.py: log-output -t ubiquity chroot /target mount -t proc proc /proc
Jan 5 11:10:47 ubuntu /plugininstall.py: log-output -t ubiquity chroot /target mount -t sysfs sysfs /sys
Jan 5 11:10:47 ubuntu /plugininstall.py: log-output -t ubiquity mount –bind /dev /target/dev
Jan 5 11:10:47 ubuntu /plugininstall.py: log-output -t ubiquity mount –bind /run /target/run
Jan 5 11:10:47 ubuntu /plugininstall.py: Verifying downloads …
Jan 5 11:10:47 ubuntu /plugininstall.py: Downloads verified successfully
Jan 5 11:10:47 ubuntu /plugininstall.py: Traceback (most recent call last):
Jan 5 11:10:47 ubuntu /plugininstall.py: File « /usr/lib/ubiquity/ubiquity/install_misc.py », line 362, in run
Jan 5 11:10:47 ubuntu /plugininstall.py: self.update_interface()
Jan 5 11:10:47 ubuntu /plugininstall.py: File « /usr/lib/python3/dist-packages/apt/progress/base.py », line 255, in update_interface
Jan 5 11:10:47 ubuntu /plugininstall.py: if float(percent) != self.percent or status_str != self.status:
Jan 5 11:10:47 ubuntu /plugininstall.py: ValueError: could not convert string to float: ‘0,0000’

Jan 5 11:10:47 ubuntu /plugininstall.py:
Jan 5 11:10:49 ubuntu /plugininstall.py: Traceback (most recent call last):
Jan 5 11:10:49 ubuntu /plugininstall.py: File « /usr/lib/ubiquity/ubiquity/install_misc.py », line 954, in do_install
Jan 5 11:10:49 ubuntu /plugininstall.py: cache, fetchprogress, installprogress):
Jan 5 11:10:49 ubuntu /plugininstall.py: File « /usr/lib/ubiquity/ubiquity/install_misc.py », line 889, in commit_with_verify
Jan 5 11:10:49 ubuntu /plugininstall.py: res = cache.install_archives(pm, install_progress)
Jan 5 11:10:49 ubuntu /plugininstall.py: File « /usr/lib/python3/dist-packages/apt/cache.py », line 479, in install_archives
Jan 5 11:10:49 ubuntu /plugininstall.py: res = install_progress.run(pm)
Jan 5 11:10:49 ubuntu /plugininstall.py: File « /usr/lib/ubiquity/ubiquity/install_misc.py », line 409, in run
Jan 5 11:10:49 ubuntu /plugininstall.py: os.write(control_write, b’\1′)
Jan 5 11:10:49 ubuntu /plugininstall.py: BrokenPipeError: [Errno 32] Relais brisé (pipe)
Jan 5 11:10:49 ubuntu /plugininstall.py:
Jan 5 11:10:49 ubuntu ubiquity: PROGRESS STOP
Jan 5 11:10:49 ubuntu /plugininstall.py: log-output -t ubiquity chroot /target umount /sys
Jan 5 11:10:49 ubuntu /plugininstall.py: log-output -t ubiquity chroot /target umount /proc
Jan 5 11:10:49 ubuntu /plugininstall.py: log-output -t ubiquity umount /target/run
Jan 5 11:10:49 ubuntu /plugininstall.py: log-output -t ubiquity umount /target/dev
Jan 5 11:10:50 ubuntu /plugininstall.py: log-output -t ubiquity umount /target/cdrom
Jan 5 11:10:50 ubuntu ubiquity: debconf: DbDriver « config »: /var/cache/debconf/config.dat is locked by another process: Resource temporarily unavailable
Jan 5 11:10:50 ubuntu ubiquity: PROGRESS STOP
Jan 5 11:10:50 ubuntu /plugininstall.py: Exception during installation:
Jan 5 11:10:50 ubuntu /plugininstall.py: During handling of the above exception, another exception occurred:
Jan 5 11:10:50 ubuntu /plugininstall.py: Traceback (most recent call last):
Jan 5 11:10:50 ubuntu /plugininstall.py: File « /usr/share/ubiquity/plugininstall.py », line 1778, in <module>
Jan 5 11:10:50 ubuntu /plugininstall.py: install.run()
Jan 5 11:10:50 ubuntu /plugininstall.py: File « /usr/share/ubiquity/plugininstall.py », line 78, in wrapper
Jan 5 11:10:50 ubuntu /plugininstall.py: func(self)
Jan 5 11:10:50 ubuntu /plugininstall.py: File « /usr/share/ubiquity/plugininstall.py », line 212, in run
Jan 5 11:10:50 ubuntu /plugininstall.py: self.install_language_packs()
Jan 5 11:10:50 ubuntu /plugininstall.py: File « /usr/share/ubiquity/plugininstall.py », line 690, in install_language_packs
Jan 5 11:10:50 ubuntu /plugininstall.py: self.do_install(self.langpacks, langpacks=True)
Jan 5 11:10:50 ubuntu /plugininstall.py: File « /usr/lib/ubiquity/ubiquity/install_misc.py », line 964, in do_install
Jan 5 11:10:50 ubuntu /plugininstall.py: installprogress.finish_update()
Jan 5 11:10:50 ubuntu /plugininstall.py: File « /usr/lib/ubiquity/ubiquity/install_misc.py », line 439, in finish_update
Jan 5 11:10:50 ubuntu /plugininstall.py: self.db.progress(‘STOP’)
Jan 5 11:10:50 ubuntu /plugininstall.py: File « /usr/lib/python3/dist-packages/debconf.py », line 62, in <lambda>
Jan 5 11:10:50 ubuntu /plugininstall.py: lambda *args, **kw: self.command(command, *args, **kw))
Jan 5 11:10:50 ubuntu /plugininstall.py: File « /usr/lib/python3/dist-packages/debconf.py », line 83, in command
Jan 5 11:10:50 ubuntu /plugininstall.py: status = int(status)
Jan 5 11:10:50 ubuntu /plugininstall.py: ValueError: invalid literal for int() with base 10:  »

Suivies ou non de plein d’autres lignes d’erreur.

Ce qui nous intéresse ici, ce sont les premières lignes d’erreurs (puisque les autres en découlent), a savoir celles en gras ci dessus.
On voit que le programme essaie de convertir en float la valeur 0,0000, ce qui est une valeur numérique pour nous, européens, mais pas pour des programmes informatiques où ce même nombre s’écrit « 0.0000 » (Notez le point à la place de la virgule). Du coup, le programme plante et plein d’autres erreurs arrivent.

La solution

La solution pour corriger ce problème, va être de rajouter une ligne dans le programme « /usr/lib/python3/dist-packages/apt/progress/base.py ».

Ouvrez ce fichier avec les droits root dans votre éditeur préféré. Aux alentours de la ligne 255, vous devriez voir ceci:

elif status == "pmstatus":
    # FIXME: Float comparison
    if float(percent) != self.percent or status_str != self.status:
        self.status_change(pkgname, float(percent), status_str.strip())
        self.percent = float(percent)
        self.status = status_str.strip()

Modifiez ce bloc pour qu’il soit ainsi:

elif status == "pmstatus":
    # FIXME: Float comparison
    percent = str(percent).replace(',', '.') #<---------- Ajouter cette ligne
    if float(percent) != self.percent or status_str != self.status:
        self.status_change(pkgname, float(percent), status_str.strip())
        self.percent = float(percent)
        self.status = status_str.strip()

Dans le détail, on définit que percent est lui même mais en remplaçant la virgule par un point. Ainsi, la conversion en float du nombre ne plante plus.

Cela ne règle pas toutes les erreurs de l’installateur, mais les autres sont négligeables. Ces fonctions ne servent qu’à l’affichage de la barre de progression de l’installation et ne sont pas bloquantes, au contraire de celle que nous venons de corriger.

Maintenant, l’installation devrait se passer sans problème et aller jusqu’au bout.

PS: Vous noterez quand même que les développeurs sont conscinet du problème puisqu’il ont marqué « # FIXME: Float comparison » …

Mettre à jour une ancienne version d’ubuntu

Si vous avez une vielle version d’ubuntu qui n’est plus soutenue, il vous est encore possible d’installer certains logiciels ou d’effectuer un upgrade vers une version plus récente.

Les dépôts des anciennes releases qui ne sont plus supportées (comme la 10.04, 11.04, 11.10 et 13.04) sont déplacés vers un serveur d’archives. Ces dépôts sont accessible à  http://old-releases.ubuntu.com

La raison en est qu’elles sont désormais « hors support » et ne reçoivent plus ni mises à jour, ni correctifs de sécurité.

Si vous souhaitez continuer à utiliser une version périmée, alors éditez votre fichier /etc/apt/sources.list et modifiez archive.ubuntu.com en old-releases.ubuntu.com

Vous pouvez le faire avec sed en tapant la commande suivante dans un terminal:

sudo sed -i -re 's/([a-z]{2}\.)?archive.ubuntu.com|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list

puis upgradez avec:

sudo apt-get update && sudo apt-get dist-upgrade

Parfois, il est plus rapide de faire une sauvegarde des données importantes et d’installer une version récente que de faire la mise à jour ainsi.

Cependant, cela peut vous permettre d’installer des logiciel provisoirement ou de passer sur une LTS plus récente pour vous laisser le temps de planifier une réinstallation.

Firefox ouvre mes pièces jointes avec Gedit

Lorsque vous téléchargez un document, souvent depuis le webmail d’Orange, firefox vous propose simplement d’ouvrir celui ci avec gedit ou d’enregistrer le fichier.

Si vous le téléchargez et que vous double-cliquez sur celui ci, il s’ouvre bien avec le logiciel adéquat. Mais il serait plus simple de l’ouvrir directement depuis Firefox (pas dans Firefox) avec le logiciel adapté.

L’exemple que je vais vous donner concerne les fichiers pps, mais c’est adaptable à d’autres types de fichiers.

Ouvrez le fichier ~/.local/share/applications/mimeapps.list (qui associe les types de fichiers avec le logiciel adapté) avec votre éditeur de textes préféré.

Recherchez la ligne application/octet-stream=geany.desktop; et commentez la en mettant un dièse devant( #application/octet-stream=geany.desktop;)

Rajoutez la ligne suivante juste en dessous: application/octet-stream=libreoffice-calc.desktop;gedit.desktop;

Ainsi, Firefox vous proposera libreoffice en premier choix. Peu importe qu’on dise au pps de s’ouvrir avec calc, libreoffice s’adaptera automatiquement et l’ouvrira bien avec impress.

Enregistrez votre fichier, ça devrait fonctionner immédiatement pour le prochain téléchargement sans avoir à relancer quoi que ce soit.

En bonus, je vous met mon fichier mimeapps.list, ce qui peut vous être utile.

[Default Applications]
x-scheme-handler/mailto=thunderbird.desktop
message/rfc822=thunderbird.desktop
application/x-extension-eml=thunderbird.desktop
text/x-python=geany.desktop
application/x-php=geany.desktop
x-content/blank-cd=brasero-nautilus.desktop
application/x-designer=designer-qt4.desktop
text/x-gettext-translation=poedit.desktop
audio/mpeg=totem.desktop
text/html=firefox.desktop
x-scheme-handler/http=firefox.desktop
x-scheme-handler/https=firefox.desktop
x-scheme-handler/about=chromium-browser.desktop
x-scheme-handler/unknown=chromium-browser.desktop
application/pdf=evince.desktop
x-scheme-handler/ftp=firefox.desktop
x-scheme-handler/chrome=firefox.desktop
application/x-extension-htm=firefox.desktop
application/x-extension-html=firefox.desktop
application/x-extension-shtml=firefox.desktop
application/xhtml+xml=firefox.desktop
application/x-extension-xhtml=firefox.desktop
application/x-extension-xht=firefox.desktop
application/msword=libreoffice-writer.desktop
application/vnd.ms-excel=libreoffice-calc.desktop
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet=libreoffice-calc.desktop
audio/x-vorbis+ogg=vlc.desktop
application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop
application/x-ms-dos-executable=wine.desktop
application/xml=geany.desktop
[Added Associations]
x-scheme-handler/mailto=thunderbird.desktop;
message/rfc822=thunderbird.desktop;
application/x-extension-eml=thunderbird.desktop;
text/x-python=geany.desktop;
application/dicom=gedit.desktop;
application/octet-stream=geany.desktop;libreoffice-calc.desktop;gedit.desktop;
application/x-php=geany.desktop;firefox.desktop;
audio/x-mod=gedit.desktop;
application/x-ms-dos-executable=wine.desktop;
text/plain=gerbv.desktop;libreoffice-writer.desktop;
application/vnd.oasis.opendocument.presentation=libreoffice-writer.desktop;
x-content/blank-cd=brasero-nautilus.desktop;
application/x-designer=designer-qt4.desktop;
text/x-gettext-translation=poedit.desktop;
audio/mpeg=totem.desktop;
text/css=geany.desktop;
application/x-netcdf=gedit.desktop;geany.desktop;
application/x-trash=gedit.desktop;
application/pdf=evince.desktop;
application/vnd.ms-powerpoint=file-roller.desktop;
x-scheme-handler/http=firefox.desktop;
x-scheme-handler/https=firefox.desktop;
x-scheme-handler/ftp=firefox.desktop;
x-scheme-handler/chrome=firefox.desktop;
text/html=firefox.desktop;
application/x-extension-htm=firefox.desktop;
application/x-extension-html=geany.desktop;firefox.desktop;
application/x-extension-shtml=firefox.desktop;
application/xhtml+xml=firefox.desktop;
application/x-extension-xhtml=firefox.desktop;
application/x-extension-xht=firefox.desktop;
application/msword=libreoffice-writer.desktop;
application/vnd.ms-excel=file-roller.desktop;libreoffice-calc.desktop;
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet=libreoffice-calc.desktop;
audio/x-vorbis+ogg=vlc.desktop;
application/xml=wine-extension-msp.desktop;wine-extension-vbs.desktop;geany.desktop;
application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop;
image/jpeg=inkscape.desktop;
application/x-mono-extension-cb=cambam.desktop;
application/x-crossover-msg=geany.desktop;
application/x-wine-extension-vbs=gedit.desktop;
application/x-config=gedit.desktop;
text/x-vb=gedit.desktop;
image/vnd.dxf=inkscape.desktop;
image/png=inkscape.desktop;

Tester sa vitesse de connexion Internet depuis le terminal

speedtest-cli permet de tester sa vitesse de connexion sans utiliser de navigateur, et sans les problèmes liés au flash nécessaire pour utiliser les sites de test. C’est un outil écrit en python fonctionnant sur Debian et dérivées, ainsi que sur Fedora et dérivées.

Pour l’installer, il vous faudra python-pip et lancer la commande suivante:

sudo pip install speedtest-cli

Ensuite, il suffit de lancer speedtest-cli pour avoir une idée du débit descendant et ascendant de votre ligne. Les valeurs obtenue sur la mienne sont variables (dépend de l’utilisation de la ligne, du PC, de l’heure) mais restent dans une fourchette qui permet de voir quel est le débit moyen.


usage: speedtest-cli [-h] [--bytes] [--share] [--simple] [--list]
[--server SERVER] [--mini MINI] [--source SOURCE]
[--timeout TIMEOUT] [--version]
Command line interface for testing internet bandwidth using speedtest.net.
--------------------------------------------------------------------------
https://github.com/sivel/speedtest-cli
optional arguments:
-h, --help show this help message and exit
--bytes Display values in bytes instead of bits. Does not affect
the image generated by --share
--share Generate and provide a URL to the speedtest.net share
results image
--simple Suppress verbose output, only show basic information
--list Display a list of speedtest.net servers sorted by
distance
--server SERVER Specify a server ID to test against
--mini MINI URL of the Speedtest Mini server
--source SOURCE Source IP address to bind to
--timeout TIMEOUT HTTP timeout in seconds. Default 10
--version Show the version number and exit

Résultat chez moi
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Free SAS (78.207.166.41)...
Selecting best server based on latency...
Hosted by Altanetica SL (Calonge) [80.18 km]: 188.878 ms
Testing download speed........................................
Download: 7.35 Mbit/s
Testing upload speed..................................................
Upload: 0.99 Mbit/s

Si vous utilisez l’option –share, vous obtiendrez l’adresse d’une image, montrant les résultats, que vous pourrez partager.

Pour faire la mise à jour, utilisez:

sudo pip install speedtest-cli --upgrade

[Mémo] Désactiver la mise en veille sur un ordinateur portable

Portable ferméJ’ai eu besoin d’utiliser un ordinateur en tant que serveur (DHCP et fichiers) sur un réseau et, pour diverses raisons, j’ai préféré utiliser un ordinateur portable pour rendre ces services.

Cependant, la fermeture de l’écran mettait l’ordinateur en veille, et les services n’étaient plus rendus. Normal.

Pour désactiver ce fonctionnement qui est normalement désiré lors de l’utilisation en tant que poste de travail, il suffit d’aller modifier une variable dans un fichier.

Sur Ubuntu et Debian, éditez le fichier /etc/systemd/logind.conf , dé-commentez et modifiez la valeur de la ligne HandleLidSwitch.

Il suffit ensuite de mettre la valeur voulue pour le comportement désiré, dans le cas présent, ignore pour ignorer la fermeture de l’écran.

HandleLidSwitch=ignore

source: http://ubuntuhandbook.org/index.php/2013/12/change-behavior-when-lid-is-closed/

[Memo] Thunar a les menus en anglais

Thunar-about-logoFaisant des tests avec XFCE, je me suis retrouvé avec Thunar (et d’autres applications) avec des menus en anglais, alors qu’à l’installation de Xubuntu tout était bien en français.

Comme la gestion de la langue est automatique et que chez tout le monde ça fonctionne, j’ai eu du mal à trouver la solution.

Je vous donne la mienne ici, si ça peut servir:

Le logiciel localepurge supprime trop de choses et vous vous retrouvez avec des menus en « franglais ». Il suffit de désinstaller ce logiciel et de réinstaller les logiciels de la liste suivante (avec un sudo apt-get install –reinstall paquet) pour que tout rentre dans l’ordre.

  • gtk2-engines-xfce (moteur de thème Xfce)
  • libxfce4menu-0.1-0 (gestion du menu)
  • libxfcegui4-4
  • xfce4-appfinder
  • xfce4-mixer
  • xfce4-panel (panneau Xfce)
  • xfce4-places-plugin
  • xfce4-screenshooter
  • xfce4-session (c’est celui là pour le dialogue de déconnexion)
  • xfce4-settings (gestionnaire de configuration)
  • xfce4-terminal (le terminal Xfce)
  • xfdesktop4 (gestionnaire du bureau)
  • xfwm4 (gestionnaire de fenêtres)
  • thunar (gestionnaire de fichiers)
  • mousepad (éditeur de texte)
  • xfconf (démon de configuration)
  • thunar-data (contient les fichiers de traduction de thunar)
  • orage (calendrier Xfce)
  • xfce4-clipman-plugin (Gestion du presse-papier)
  • exo-utils
  • xfdesktop4-data (contient les fichiers de traduction de xfdesktop)
  • thunar-media-tags-plugin
  • thunar-archive-plugin
  • thunar-volman
  • thunar-thumbnailers

source: http://forum.ubuntu-fr.org/viewtopic.php?id=349559

Désactiver l’environnement graphique sur Ubuntu Desktop

Une petite astuce rapide pour me rappeler comment désactiver le lancement de lightdm sur une machine qui n’a pas besoin d’environnement graphique permanent, sans avoir à désinstaller quoi que ce soit.

Dans /etc/default/grub, modifier la ligne

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

en

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash text"
puis lancer la commande sudo update-grub dans un terminal.

L’ordinateur démarrera désormais en mode texte, sans lancer lightdm. En effet, dans /etc/lightdm.conf, on trouve ceci:


# Check kernel command-line for inhibitors, unless we are being called
# manually
for ARG in $(cat /proc/cmdline); do
if [ "$ARG" = "text" ]; then
plymouth quit || :
stop
exit 0
fi
done

qui indique de quitter plymouth si le mot text est dans les arguments.

  • Il suffit d’effectuer l’opération inverse (supprimer le mot « text » du fichier de configuration de grub) pour réactiver le lancement graphique.
  • Une fois l’ordinateur démarré, il suffit de se logguer en console et de lancer la commande startx pour activer l’interface graphique.
  • Notez qu’il est possible de modifier les arguments de grub lors du menu de sélection en appuyant sur la touche « e » et de supprimer le mot « text » de la ligne adéquate pour lancer ponctuellement l’ordinateur avec l’environnement graphique automatique.

source: http://askubuntu.com/questions/16371/how-do-i-disable-x-at-boot-time-so-that-the-system-boots-in-text-mode

MYSQL: start: Job failed to start

Ou

error: ‘Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock »

La première chose à faire est de consulter le fichier de log d’erreurs .

Attention: sur mon installation, je me suis fait avoir parce que j’avais un fichier /var/log/mysql.err vide. Or, le fichier est /var/log/mysql/error.log !


root@pouf:/var/log/mysql# tail error.log
130911 14:18:52 InnoDB: Compressed tables use zlib 1.2.3.4
/usr/sbin/mysqld: Can't create/write to file '/tmp/ibUjgCIe' (Errcode: 13)
130911 14:18:52 InnoDB: Error: unable to create temporary file; errno: 13
130911 14:18:52 [ERROR] Plugin 'InnoDB' init function returned error.
130911 14:18:52 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
130911 14:18:52 [ERROR] Unknown/unsupported storage engine: InnoDB
130911 14:18:52 [ERROR] Aborting
130911 14:18:52 [Note] /usr/sbin/mysqld: Shutdown complete

Le message d’erreur (sur la deuxième ligne lue) indique qu’il ne peut pas créer de fichier temporaire dans /tmp. Un coup d’oeuil sur les permission de tmp nous le confirme.

root@pouf:/# ls -l /|grep tmp
4849665 drwxrwxr-x 16 manu manu 20K sept. 11 14:20 tmp

Les propriétaire/groupe ne sont pas bons, et les permissions non plus! Il s’agit sans doute d’un script ou d’un paquet mal construit qui a modifié tout ça (en particulier les dpkg -x qui changent les permissions du répertoire courant!)
sudo chown root:root /tmp
sudo chmod 777 /tmp
sudo chmod +t /tmp

Problème corrigé, mysql redémarre alors correctement. C’est tout bête, mais j’ai perdu une heure à comprendre pourquoi mon système, et en particulier mysql ne fonctionnait plus correctement.
Si ça peut aider…

rsync par Cron: permission denied

J’ai été confronté à un étrange problème sur certaines machines en Ubuntu 12.04 (precise) pour lequel je vous livre ma solution de contournement. Ce n’est pas transcendant, mais ça fonctionne en attendant d’en savoir plus ou de trouver une autre solution.An_rsync_Primer

S.O.S.s.h.

J’ai des dossiers que je synchronise avec ou depuis un serveur distant en utilisant rsync, principalement pour faire des sauvegardes. Ces commandes rsync sont intégrées dans des scripts que j’utilise depuis plusieurs années sans problème. Pour pouvoir éviter les problèmes de droits, ces scripts sont lancés par le cron du root.
La commande qui nous intéresse est de cette forme:
rsync -avP dossier/local manu@serveur:/dossier/distant/ > /tmp/monlog.log 2>&1

Et le root peut se connecter au serveur sans mot de passe par échange de clef ssh.

Or, depuis quelques temps, impossible de faire la sauvegarde. Les logs contiennent quelque chose comme ceci:

Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]

Alors que lorsque le programme est lancé en root depuis un terminal, il fonctionne sans erreur! (Donc pas de problème de droits d’accès aux dossiers/fichiers)

Environnement variable ou Variables d’environnement

Le cron n’ouvre pas un véritable shell lorsqu’il lance une action programmée, et les variables d’environnement utilisées dans une console ne sont pas toutes présentes. C’est peut être l’une des raisons du problème.

Sur certains forums, on a parlé de SSH_AUTH_SOCK et de SSH_AGENT_PID, mais je n’ai pas réussi à les faire prendre en compte pour résoudre le problème…

Où est la clef?

Qu’importe, indiquons à ssh qu’on veut utiliser la clef qui nous permet de s’identifier sur le serveur

rsync -avP -e "ssh -l root -i /root/.ssh/id_rsa" dossier/local manu@serveur:/dossier/distant/ > /tmp/monlog.log 2>&1

Et? Pas mieux, toujours rejeté par le serveur…

Qui me parle ?

Comme les logs du serveur n’indiquaient pas d’informations utiles, il faut demander à rsync d’être plus bavard

rsync -avvvv -e "ssh -l root -i /root/.ssh/id_rsa" dossier/local manu@serveur:/dossier/distant/  > /tmp/monlog.log 2>&1

Du coup, ça donne quelques indications dans le log:

opening connection using: ssh -l root -i /root/.ssh/id_rsa -l manu serveur rsync --server -vvvvue.Lsf . /dossier/distant/
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).

Ahhhh! Pourquoi il me met un -l manu alors que je lui ai spécifié -l root ?
Eh bien je ne sais pas, mais c’est la source du problème: identifié en tant que manu, il ne peut donc plus accéder à la clef ssh du root.

Comme je suis vicieux et mauvais perdant, j’ai essayé d’accéder à la clef de manu:

rsync -avvvv -e "ssh -l root -i /home/manu/.ssh/id_rsa" dossier/local manu@serveur:/dossier/distant/  > /tmp/monlog.log 2>&1

Et ça marche! Parce que le root peut entrer partout et lire les clefs de tous les utilisateurs (et surtout parce que manu aussi peut s’identifier en ssh sur le serveur sans mot de passe)

Et les droits d’accès aux dossiers ? Pas de problème, c’est toujours root (par l’intermédiaire du cron) qui lit les fichiers, mais il n’utilise pas sa propre clef et se fait passer pour manu dans le rsync.

Carpe diem

Pour résumer:

  • Plein de personnes ont rencontré le même problème, mais aucune solution proposée n’a fonctionné pour moi
  • Tout se passe comme si rsync refusait d’utiliser la clef du root
  • On peut utiliser la clef de n’import quel utilisateur, tant qu’il peut accéder au serveur. Au besoin, créer un utilisateur dédié.
  • C’est pénible, il faut que je modifie mes scripts qui me permettaient d’unifier la méthodologie
  • Bug ou pas bug ? Je ne sais pas.
  • Résolu? Je ne suis pas sûr. J’aimerai comprendre pourquoi sur certaines installations ça fonctionne, et pas sur d’autres, d’autant que j’essaye d’avoir des configurations logicielles le plus identiques possibles pour en simplifier la gestion.

En tous cas, si vous avez des infos sur ce changement de comportement, ou sur le moyen de fonctionner à l’ancienne mode, n’hésitez pas à laisser une bafouille.

Nautilus: ouvrir avec le bon logiciel les extensions des programmes

Je sais, le titre n’est pas très clair, mais ça facilitera le travail aux moteurs de recherche…the-nautilus-ii-table-by-marc-fish-05

Il arrive que l’on ait installé des programmes générant des fichiers avec une extension propre à ces programmes, mais que l’accès direct (par double clic par exemple) ouvre le fichier avec un autre logiciel qui n’est pas celui escompté. Pourtant, le programme est bien installé et fonctionnel, mais l’association n’est pas effectuée correctement, et il n’est pas possible de la faire graphiquement.

Dans mon cas, j’ai installé sous Unity Qt4-designer qui fabrique des fichiers avec l’extension .ui mais qui est un programme prévu pour KDE. Or, quand je double clique sur le fichier .ui généré par le programme, c’est firefox qui s’ouvre pour me proposer de télécharger le fichier. Pourtant, dans le menu contextuel, ouvrir avec me propose bien Qt4-designer.

Qu’importe, me dis-je, il suffit d’aller dans les propriétés du fichier, onglet ouvrir avec, et de lui associer le bon logiciel. Sauf que le programme voulu (Qt4-designer) n’apparaît pas dans la liste!

Diable! Pourquoi?

Après quelques (heures de) recherches, c’est simple, encore faut-il le savoir. Le lanceur n’intègre pas la fonction d’ouverture de fichier, et par conséquent Nautilus ne l’affiche pas dans la liste des programmes disponibles.

Corrigeons cette erreur monumentale immédiatement.

Pour tous les utilisateurs du système

Éditez par le moyen de votre choix (avec sudo) le fichier /usr/share/applications/designer-qt4.desktop et modifiez la ligne indiquée ci dessous de

Exec=/usr/bin/designer-qt4

à

Exec=/usr/bin/designer-qt4 %f

Notez le « %f » qui indique que c’est le fichier transmis (celui sélectionné) qu’il faudra ouvrir. Il faudra peut être vous déloguer/reloguer pour que cela soit pris en compte, mais je ne suis même pas sûr que ce soit nécessaire. Retournez dans les propriétés du fichier .ui et vous devriez avoir le programme voulu dans la liste des choix disponibles.

Pour un utilisateur particulier

Admettons que je veuille que cette association ne soit valable que pour l’utilisateur manu. Il me suffit de copier le lanceur de qt4-designer dans le dossier ~/.local/share/applications et d’effectuer la modification indiquée ci dessus dans le fichier que je viens de copier.

cp /usr/share/applications/designer-qt4.desktop /home/manu/.local/share/applications/
gedit /home/manu/.local/share/applications/designer-qt4.desktop

Plus besoin du sudo dans le cas précis, puisque le fichier est dans mon dossier personnel. Ça fonctionne pour tous les logiciels et toutes les extensions, à condition qu’il existe un fichier .desktop dans le dossier des applications.

C’est une bricole, mais ça empoisonne la vie quand le comportement n’est pas celui attendu. En espérant que ça puisse vous servir.

Ransomware, ou prise d’otage informatique

prise-otageLes éditeurs d’antivirus rapportent actuellement la montée en puissance d’une forme récente de malware, baptisée ransomware. Ces nuisibles bloquent totalement l’accès au système d’exploitation d’un ordinateur et réclament une somme conséquente pour libérer les données.

Avec les ransomwares, l’infection est la plupart du temps réalisée via une faille provenant d’un logiciel non mis à jour. Un document PDF, Word ou Excel est adressé au destinataire par e-mail. En voulant l’ouvrir, le destinataire fait planter le logiciel associé. Le code stocké dans le document est alors activé et télécharge et installe le ransomware en question.

Lire l’article complet sur http://www.futura-sciences.com/fr/news/t/informatique/d/ranconner-les-internautes-lattaque-malware-a-la-mode_43225/

Notez que si vous avez linux en dual boot sur l’ordinateur et que le MBR est corrompu, la réinstallation du MBR depuis un live CD, exactement de la même manière qu’après une installation de windows, permet de relancer la machine. Windows ,n’est pas dévérolé pour autant, il faudra s’en occuper, mais linux redevient accessible.

En tout cas pour ce qui concerne les 2 machines dont j’ai dû m’occuper aujourd’hui.

Clonezilla: résoudre l’erreur « not a mounting point »

Clonezilla est un système très pratique permettant de prendre l’image d’un système et de la réinstaller sur un autre ordinateur (ou sur le même). Je m’en sers régulièrement avant des manipulations dangereuses pour le système, pour avoir la certitude de pouvoir revenir à l’état initial au besoin. Ou pour transférer un système vers un autre disque.

Je sauvegardais mes images sur le réseau, à l’endroit proposé par défaut dans le live CD, sur /home/partimag. Mais la partition home devenant remplie, j’ai déplacé les sauvegardes dans un nouveau disque sur le serveur, et j’ai créé un lien de /home/partimag pointant vers /stockage/partimag.

Erreur. Depuis ce jour, le message  « Clonezilla image home directory /home/partimag is not a mounting point! Failed to mount other device as /home/partimag! » venait gâcher le plaisir que j’avais à utiliser ce logiciel, sans trop savoir pourquoi.

La réponse est que sshfs a des problèmes avec les liens symboliques et qu’il n’arrive pas à accéder au contenu du lien. La solution consiste à monter le dossier des sauvegardes de partimage à l’endroit attendu avec la ligne de commande suivante dans le fstab

/stockage/partimag /home/partimag auto bind 0 0

Assurez vous de créer le dossier /home/partimag puis montez le dossier des sauvegardes au bon endroit avec
mount -a
L’utilisation de clonezilla redevient identique à celle d’avant, et surtout fonctionnelle.

Quand à savoir pourquoi tenir à utiliser /home/partimag au lieu de taper l’adresse du dossier de sauvegarde, c’est qu’il est plus simple de taper sur entrée que de taper le chemin quand le clavier est accidentellement en qwerty…

D’ailleurs, j’aimerais modifier le liveCD afin d’intégrer mes clefs et personnaliser certaines opérations, mais je n’arrive pas à faire quelque chose de fonctionnel. Si vous avez des pistes ou des tutos (autre que celles du site de clonezilla), je suis intéressé.

greemote et Ubuntu precise 12.04

greemotegreemote est une application très pratique pour commander sa freebox depuis son PC. Malheureusement, l’installation sur 12.04 ne fonctionne pas, le lancement provoque l’erreur suivante:

Traceback (most recent call last):
File "/usr/bin/greemote", line 4, in <module>
import libgreemote.greemote, socket
ImportError: No module named libgreemote.greemote

Mais on peut résoudre le problème!

Téléchargez l’archive libgreemote.tar.gz et copiez la dans /tmp/

Ensuite, exécutez les commandes suivantes:

sudo cp /tmp/libgreemote.tar.gz /usr/share/pycentral
cd /usr/share/pycentral
sudo tar xvfz libgreemote.tar.gz

Enfin, il ne reste plus qu’à modifier le programme afin qu’il trouve ce qu’il cherche et qu’on vient de ranger

sudo gedit /usr/bin/greemote

et remplacez le contenu par

#!/usr/bin/python
# -*- coding:utf-8 -*-
import sys
sys.path.insert(0, "/usr/share/pycentral/")
import libgreemote.greemote, socket
def main():
    print "Télécommande pour Freebox HD."
    socket.setdefaulttimeout(5)
    libgreemote.greemote.greemote()
if __name__ == '__main__':
    main()

Lancez, et ça devrait fonctionner!

Déplacer les base mysql sur Ubuntu

J’ai voulu déplacer des bases mysql pour les placer sur une autre partition, mais sur Ubuntu, il ne suffit pas de déplacer les bases pour pourvoir relancer le serveur, même en ayant modifié le fichier my.cnf.

L’erreur était la suivante dans le fichier /var/log/mysql/error.log

/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
120902 16:57:07 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
120902 16:57:07  InnoDB: Initializing buffer pool, size = 8.0M
120902 16:57:07  InnoDB: Completed initialization of buffer pool
120902 16:57:07  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.

J’ai heureusement trouvé la solution sur La case de l’oncle tom après avoir beaucoup cherché mais en n’ayant trouvé que des suggestions non fonctionnelles pour mon problème.

Le problème vient de apparmor qui ne considère pas le nouvel emplacement comme fiable. Il suffit donc de modifier le fichier /etc/apparmor.d/usr.sbin.mysqld comme indiqué pour pouvoir relancer mysql.

Pourtant, comme le dit Daniel, le fichier my.cnf comporte bien l’avertissement suivant:

# * IMPORTANT
#   If you make changes to these settings and your system uses apparmor, you may
#   also need to also adjust /etc/apparmor.d/usr.sbin.mysqld.

Comme quoi, vouloir aller trop vite pour gagner du temps et se jeter sur le net n’est pas toujours la bonne solution…

Note a moi même: prendre l’habitude de lire les commentaires des fichiers de configuration, ça peut aider.

Source: La case de l’oncle tom

Unity et le dual screen

C’est rien, mais j’ai cherché quelques minutes avant de trouver ce qui était sous mon nez…

Quand on active le dual-screen, il faut désormais se poser la question de savoir sur quel écran on désire le lanceur. Sur les deux? Celui de gauche? Celui de droite?

Ceci dit, si vous ne vous posez pas la question, un petit détail va vous faire rager rapidement: le passage d’un écran à l’autre est gêné par un ralentissement de la souris dû aux bords collants. Grrr!

Bon, c’est tout simple et il faut lire les fenêtres, même quand on croit les connaitre.

Dans le réglage d’affichage, sélectionnez l’écran sur lequel vous voulez le menu et si vous désirez les bords collants.

Equivalent à CHKDSK sous Linux

Il est bien évident qu’à choisir un système de fichier mon choix premier ne se porterait pas sur les formats Microsoft. Cependant, l’interopérabilité fait que le choix ne nous est pas forcément disponible.

Surtout quand on me transmet un disque externe  en me disant « Tiens, voilà la sauvegarde, prends en soin c’est la seule » et que je me rends compte que le système de fichier est dans les choux… ((d’ici à ce qu’on vienne dire que c’est parce que j’ai osé le brancher sur un Linux, il n’y a qu’un pas qui a déjà été franchi depuis longtemps!)).

Sueurs froides, tremblement, méditation et incantations :d plus tard, voici ce que ça donne.

Partitions FAT

Certains appareils (lecteur DVD, décodeur TNT, autoradio ou systèmes propriétaires) n’acceptent que les lecteurs externes au format VFAT. Or, quand il y a des problèmes sur la partition et qu’on veut la corriger, c’est dommage de ne garder un windows que pour ça.

Heureusement, le paquet dosfstools possède la commande dosfsck qui permet de le faire:

sudo dosfsck -a -t -w /dev/sdc1

Cette commande va nous permettre de vérifier le disque /dev/sdc1 en réparant automatiquement les erreurs sans confirmation (-a), en marquant les mauvais secteurs comme tels (-t) et en le faisant immédiatement (-w). Vous pouvez aussi ajouter les options -n (à la place de -w) pour simplement tester, -l pour afficher la liste des fichiers traités et -v pour avoir plus de sortie à l’écran.

Démontez votre disque sans le retirer avant de lancer la commande, mais dans les cas où je l’ai utilisée, le disque ne montait pas de lui même.

Partitions NTFS

Je n’ai pas trouvé de commande permettant de le faire. Si vous en connaissez une, je suis preneur.

La commande ntfsfix du paquet ntfsprogs permet de faire certaines réparations simples, mais pas une véritable vérification. Comme le dit le man:

ntfsfix est un utilitaire qui permet de résoudre certains problèmes NTFS communs. ntfsfix N’EST PAS une version Linux de chkdsk. Il répare seulement certaines incohérences fondamentales du NTFS, réset le journal NTFS et programme une vérification du système de fichiers au prochain boot de Windows.

Cependant, on peut s’en sortir sans avoir windows installé, simplement avec le CD d’installation (exemple pour XP) ((même si ça pique les yeux, tout ce bleu)):

  • démarrez un ordinateur où le disque est branché depuis le CD d’installation
  • Dans les choix qui vous sont donnés, choisissez R pour réparation
  • Quand vous êtes dans la console de réparation, lancez la commande CHKDSK C: /R. Si un seul disque est présent, vous pouvez omettre de le nommer.

Si vous n’avez pas le CD d’installation de windows, vous pouvez télécharger Revovery Console (RC.iso) fourni par The computer paramedic qui contient des outils de réparation et l’utiliser comme dans la méthode donnée ci dessus. Notez que si vous avez eu un ordinateur sans CD d’installation, il est utile de le télécharger pour l’avoir sous la main, y compris pour réparer le MBR

Pour Vista et Seven, la méthode est approximativement la même, même si elle n’apporte rien de plus. Démarrez avec votre DVD d’installation et adaptez la méthode à ce qui vous est proposé. Vous pouvez aussi consulter cette page même si l’accès aux consoles de réparation est devenu payant pour des problèmes de licences Microsoft ((Obligé de payer des licences à Microsoft pour permettre de réparer leur système… Comme quoi c’est un business de leur part, pas un bug. Encore un bonnet d’ÂNE mérité.)) depuis Aout 2011.

Konica Minolta Bizhub 350 et cups

Après avoir encore une fois perdu du temps à retrouver comment le faire fonctionner, je le note pour pouvoir le retrouver.

Ensuite, ça fonctionne en utilisant le premier driver de la catégorie KONICA MINOLTA (je ne l’ai pas noté…)

A noter que cela est valable pour tous les modèles de la liste suivante:

  • bizhub 7222, 7322, 7228, 7235
  • 7145
  • 7155, 7165, Force 65
  • 7255, 7272
  • 7075, Force 75
  • 7085, Force 85
  • bizhub PRO 1050/1050P
  • bizhub 350/250/200
  • bizhub 500/420/360
  • bizhub 501/421/361
  • bizhub 750/600
  • bizhub 920/PRO 920
  • bizhub C250/C250P
  • bizhub C252
  • bizhub C351
  • bizhub C352/C352P/C300
  • bizhub C353/C353P/C253/C203
  • bizhub C450/C450P
  • bizhub C451
  • bizhub C650/C550
  • magicolor 8650

Ubuntu 11.10 (Oneiric) ne s’arrête pas

Sur certains ordinateur, avec Oneiric, l’ordinateur ne s’arrête pas véritablement. L’ordinateur reste sous tension, même si le système est coupé.
Il est alors nécessaire de faire un réset manuellement, ce qui peut être gênant quand l’ordinateur n’est pas accessible.
Cela peut se produire autant lors de la demande d’arrêt que pour celle du redémarrage. Parfois cela fonctionne depuis le gestionnaire de fenêtre, parfois non. La commande « halt » en ligne de commande ne fonctionne pas, elle ((2 machine différentes, même OS, comportement différent. Même avec des systèmes différents (ubuntu/voyager) )) .
Je n’ai pas trouvé de solution, et des rapports de bug ont été ouverts, et on en parle sur beaucoup de forums ((par exemple ici ou ))  mais en attendant, il faut bien pouvoir agir.

J’ai trouvé une solution de contournement qui permet d’effectuer ce qui est véritablement désiré et qui fonctionne sans problèmes.
Créez un script /usr/bin/force_halt et mettez y ce code dedans:

#!/bin/bash
dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

Rendez le exécutable et remplacez vos appels à « halt » par « force_halt« . Vous pouvez aussi remplacer /sbin/halt par un lien vers force_halt

Concernant le reboot, il faut répéter les mêmes opérations mais remplacer le Stop de la fin de la ligne de commande par Restart

Tftpd-hpa sur Lucid (erreur TFTP open timeout)

La mise à jour du programme tftpd-hpa sur lucid modifie son fichier de configuration par défaut. Si vous utilisez des clients légers avec LTSP, vous vous retrouvez avec des clients qui s’arrêtent à l’erreur PXE: TFTP open timeout juste après avoir obtenu leur adresse IP du dhcp.

Avant, votre fichier de configuration était ainsi:

root@ltsp:#cat /etc/default/tftpd-hpa
#Defaults for tftpd-hpa
RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot"

Or, maintenant, le fichier se présente ainsi:

# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS=""

Du coup, le serveur ne se lance plus (il n’apparait pas dans les processus) même si vous avez un message disant qu’il est déjà en cours de fonctionnement lorsque vous tentez de le relancer.

Il suffit alors de modifier votre fichier de la manière suivante:

# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"

Relancez ensuite votre serveur tftpd et vos clients devraient démarrer.

Si vous avez utilisé des outils qui paramètrent automatiquement le fichier de configuration avec l’ancienne version, réinstallez le paquet pour obtenir le nouveau fichier de configuration:

sudo apt-get install --reinstall tftpd-hpa

puis effectuez manuellement les modifications.

Changer la couleur de fenêtre de Pidgin

J’ai eu besoin de communiquer par IRC sur un chan particulier, mais j’ai été confronté à un problème auquel je ne m’attendais pas: les administrateurs utilisant mirc (qui utilise par défaut un fond noir), ou irssi (qui fonctionne en console…noire de base) avaient choisi d’avoir des couleurs de polices blanches et jaunes pour certains éléments.

Or, Pidgin utilise un fond blanc, ce qui fait que beaucoup de choses étaient illisibles ((et effectuer des sélections du texte pour arriver à le lire est fatiguant à la longue.)).

Empathy permet de changer les thèmes, et de voir les messages écrits en noir sans tenir compte de la couleur d’origine, mais ne m’affichait pas les personnes présentes dans le salon. Donc, il n’a pas été retenu comme solution.

Mais comme avec le libre, tout est faisable, et un simple changement de couleur devant être à ma portée, j’ai cherché comment modifier Pidgin, et j’ai fini par trouver.

Simple quand on le sait, mais quand on ne sait pas, c’est autre chose…

  • Tout d’abord, ne cherchez pas le dossier pidgin, mais bien purple, qui se trouve dans votre home (~/.purple)
  • Par défaut, pidgin utilise le thème GTK de votre environnement. Sinon, et seulement sinon, il crée un fichier gtkrc-2.0 dans le dossier ~/.purple.
  • Si vous utilisez un gestionnaire de fenêtre basé sur GTK et que vous ne voulez pas changer votre thème général, il faudra créer un fichier nommé gtkrc-2.0 dans le dossier ~/.purple qui apportera des modification à pidgin par rapport à votre thème général.
  • Vous mettrez dans ce fichier texte les informations que vous voulez selon la syntaxe que vous donne la FAQ de Pidgin.((si vous connaissez un peu le CSS, vous devriez comprendre comment fonctionne le fichier))

Dans mon cas, cherchant juste à modifier l’aspect des fenêtres, j’ai utilisé le code fourni:

# Create a style called "inverted" where the text and base (the base color behind the widget) are the reverse of typical.
style "inverted"
{
text[NORMAL] = "#FFFFFF"
base[NORMAL] = "#000000"
}
 
# Apply "inverted" to conversation entry box--where you type.
widget "*pidgin_conv_entry" style "inverted"
 
# Apply "inverted" to conversation history pane--where you read the conversation.
widget "*pidgin_conv_imhtml" style "inverted"

Après avoir relancé Pidgin, c’est tout de suite beaucoup plus lisible ((Il ne s’agit pas du chan qui m’intéressait, mais celui ci présente les mêmes caractéristiques et me sert d’exemple)).

Du texte en couleur, mais lisibleSources: http://developer.pidgin.im/wiki/Using%20Pidgin

Clavier qwerty sur Ubuntu Oneiric Ocelot

Après une install d’Oneiric sur une machine, je me suis retrouvé avec un clavier US dans l’environnement graphique et dans le gestionnaire de connexion lightdm.

J’ai bien sûr réglé le clavier avec les outils de gnome ((et de lxde puisque j’ai installé les deux environnements)) mais à chaque redémarrage, je me retrouvais en clavier qwerty au lieu de l’azerty voulu.

Après avoir longuement cherché , je suis tombé sur une discussion qui m’a donné la bonne solution.

Il faut aller consulter le fichier /etc/default/keyboard qui, s’il fait référence à un clavier US, est prioritaire sur les autres réglages.
Si c’est le cas, il faut reconfigurer le clavier pour corriger ce fichier et faire en sorte d’obtenir les bonnes touches

dpkg-reconfigure keyboard-configuration

Et suivre les instructions, ce qui devrait donner un résultat tel que celui ci:

# If you change any of the following variables and X is configured to
# use this file, then the changes will become visible to X only if udev
# is restarted. You may need to reboot the system.
 
# The following variables describe your keyboard and can have the same
# values as the XkbModel, XkbLayout, XkbVariant and XkbOptions options
# in /etc/X11/xorg.conf.
 
XKBMODEL="pc105"
XKBLAYOUT="fr"
XKBVARIANT=""
XKBOPTIONS="lv3:ralt_switch,compose:rctrl"
 
# If you don't want to use the XKB layout on the console, you can
# specify an alternative keymap. Make sure it will be accessible
# before /usr is mounted.
# KMAP=/etc/console-setup/defkeymap.kmap.gz

J’ai perdu du temps à trouver la solution, espérons que ça vous sera utile.

Source: http://forum.ubuntu-fr.org/viewtopic.php?pid=6654251#p6654251

Désactiver le lancement de GDM sur Lucid

Sur l’une de mes machine, destinée à un usage spécifique dont je parlerais plus tard, j’avais besoin d’avoir une interface graphique pour l’installation et le réglage d’un logiciel particulier.

Mais une fois celui ci configuré, je souhaitais que GDM ne se lance plus, sauf à la demande. J’ai donc installé une version « desktop » puis j’ai cherché à désactiver GDM.

Or, si cela était évident (ou du moins connu) dans les versions précédentes, en supprimant le lien de lancement dans /etc/rc2.d ou avec update-rc.d, avec upstart c’est désormais différent.

Les programmes lancés au démarrage sont situés dans des fichiers de configuration placés dans /etc/init. Celui qui nous intéresse est gdm.conf.

Il faut modifier le fichier de la manière suivante:

de

# gdm - GNOME Display Manager
#
# The display manager service manages the X servers running on the
# system, providing login and auto-login services
 
description    "GNOME Display Manager"
author        "William Jon McCann &lt;<a class="linkification-ext" title="Linkification: mailto:mccann@jhu.edu" href="mailto:mccann@jhu.edu">mccann@jhu.edu</a>&gt;"
 
start on (filesystem
          and started dbus
          and (drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1
          or stopped udevtrigger))
stop on runlevel [016]
 
emits starting-dm
 
env XORGCONFIG=/etc/X11/xorg.conf
...

à

# gdm - GNOME Display Manager
#
# The display manager service manages the X servers running on the
# system, providing login and auto-login services
 
description    "GNOME Display Manager"
author        "William Jon McCann &lt;<a class="linkification-ext" title="Linkification: mailto:mccann@jhu.edu" href="mailto:mccann@jhu.edu">mccann@jhu.edu</a>&gt;"
 
start on []
#start on (filesystem
#          and started dbus
#          and (drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1
#          or stopped udevtrigger))
stop on runlevel [016]
 
emits starting-dm
 
env XORGCONFIG=/etc/X11/xorg.conf
...

Relancer ensuite l’ordinateur, GDM ne se lancera plus au démarrage, et vous pourrez alors vous connecter sur les consoles.

Ce n’est pas une astuce exclusive, mais j’ai perdu assez de temps à chercher la réponse que je le note pour savoir où le retrouver.

Ne vous affolez pas parce que vous serez en mode texte, vous verrez qu’on arrive à faire des choses sympas ensuite.

Par exemple, vous pouvez vous identifier avec votre mot de passe et lancer la commande startx pour lancer votre environnement graphique.

Dans un prochain article, nous verrons qu’il y a mieux…

[Dolibarr 3.0] Avoir le montant des factures/devis sur les boites d’accueil

Note importante avant de commencer:

  • Je ne suis pas un expert du PHP et de ses subtilités. Pas plus que du code de Dolibarr. Donc on peut sans doute faire plus simple/ plus propre/ plus beau/ plus court/ plus clinquant/ plus rapide/ …
  • Ça fonctionne. Je ne demandais rien d’autre au code. Et ça fonctionne comme je le veux.
  • Ça n’a été testé que sur dolibarr-3.0.0 stable depuis avril 2011. Aucune garantie que ça fonctionne pour vous ou sur votre installation. Prenez les précautions d’usage avant de tout casser (sauvegarde des fichiers, BDD, travail sur une installation de test, etc)
  • Aucune assistance ne sera donnée. Les astuces ci dessous vous sont données brutes. Ensuite, voyez sur les forums de PHP ou de Dolibarr pour le reste. Ce n’est pas un manque de volonté de vous aider, mais un manque de compétence avoué. Je bricole en PHP, mais ce n’est pas mon métier.

Mise à jour:
Sur Dolibarr 3.6 (je ne sais pas pour les autres versions) les fichiers à modifier se trouvent dans /htdocs/core/boxes.
Le reste des modifications est identique.

Genèse

Lorsque j’ai un client au téléphone, ou par  courrier, il n’utilise jamais le numéro de devis ou de facture. Ça n’est pas naturel pour lui. En général, on me donne le montant. Exemple: « oublions le devis de 2412.35, mais on va faire celui de 1200. J’ai envoyé la facture de 360 à la compta, …. »

Ça a du vous arriver, si vous êtes dans la même situation professionnelle que moi.

Sauf qu’avec Dolibarr, quand vous avez la liste des documents sur le tableau de bord, vous n’avez pas sous les yeux tous les devis et toutes les factures. En effet, il faut aller sur la fiche client pour voir les détails de chaque document (les 4 derniers).

Tout va bien client par client. Mais j’ai des clients qui font gérer leur secrétariat par la même société, donc j’ai un seul interlocuteur pour plusieurs clients, et il est plus difficile de sauter d’un client à l’autre.

Et puis ce petit hack permet de diminuer le nombre de clics pour arriver sur la bonne facture ou sur le bon devis.

Pour les propositions commerciales (devis):

Modifier le fichier htdocs/includes/boxes/box_propales.php

ligne 73: modifier de

$sql.= " p.rowid, p.ref, p.fk_statut, p.datep as dp, p.datec, p.fin_validite, p.date_cloture";

à

$sql.= " p.rowid, p.ref, p.fk_statut, p.datep as dp, p.datec, p.fin_validite, p.date_cloture, p.total";

ensuite, à partir de la ligne 121, modifier comme suit (ajout d’un bloc de code et renumérotation des suivants):


$this->info_box_contents[$i][4] = array('td' => 'align="right"',
'text' => dol_trunc(number_format($objp->total, 2, ',', ' '),40)."€",
'url' => DOL_URL_ROOT."/comm/propal.php?id=".$objp->rowid);

$this->info_box_contents[$i][5] = array('td' => 'align="right"',
'text' =>dol_print_date($datec,'day'));

$this->info_box_contents[$i][6] = array('td' => 'align="right" width="18"',
'text' => $propalstatic->
LibStatut($objp->fk_statut,3));

Les dernières factures client modifiées:

Modifier le fichier htdocs/includes/boxes/box_factures.php ligne 75: modifier de

$sql = "SELECT f.rowid as facid, f.facnumber, f.type, f.amount, f.datef as df";

à

$sql = "SELECT f.rowid as facid, f.facnumber, f.type, f.amount, f.datef as df, f.total_ttc";

à partir de la ligne 128, modifier comme suit (ajout du premier bloc et renumérotation des blocs suivants):

$this->info_box_contents[$i][4] = array('td' => 'align="right"',
'text' => dol_trunc(number_format($objp->total_ttc, 2, ',', ' '),40)."€",
'url' => DOL_URL_ROOT."/compta/facture.php?facid=".$objp->facid);

$this->info_box_contents[$i][5] = array('td' => 'align="right"',
'text' => dol_print_date($datec,'day'),);

$this->info_box_contents[$i][6] = array('td' => 'align="right" width="18"',
'text' => $facturestatic->LibStatut($objp->paye,$objp->fk_statut,3));

Les dernières factures client impayées

Même chose que ci dessus, à adapter au fichier htdocs/includes/boxes/box_factures_imp.php

Résultat

N’utilisant pas dolibarr pour les factures fournisseurs, si vous voulez faire la même chose, il vous suffit de modifier les fichiers adéquats dans le dossier htdocs/includes/boxes/ de votre instalation dolibarr

Le total des factures

Maintenant qu’on a les montants de chaque facture, ce serait bien d’en avoir le total, en particulier pour les factures client impayées. C’est quand même pratique de savoir « l’argent qu’on a dehors » quand l’argent qu’on a dedans vient à manquer.

Attention: Le total ne sera calculé que sur la limite d’affichage des factures dans la boite d’information. Si vous avez choisi d’afficher 10 factures seulement dans cette boite, même si vous avez 50 factures impayées, le total sera effectué sur les 10 factures seulement affichées!

On va modifier à nouveau le fichier htdocs/includes/boxes/box_factures_imp.php .

On ajoute ligne 41 une variable qui va cumuler le total à chaque facture rencontrée

var $impayes;

Dans le bloc de code qu’on a ajouté pour avoir le montant, on ajoute une ligne (la dernière ci dessous, j’ai mis tout le bloc de code pour repérage facile dans le code)

$this->info_box_contents[$i][4] = array('td' => 'align="right"',
'text' => dol_trunc(number_format($objp->total_ttc, 2, ',', ' '),40),
'text2' => " €",
'url' => DOL_URL_ROOT."/compta/facture.php?facid=".$objp->facid);
$impayes += number_format($objp->total_ttc, 2, '.', ' ');

Cette ligne va cumuler le total des factures, et il ne reste plus qu’à afficher le total en bas du bloc des factures. Afin d’être logique, le total sera sous la colonne des montants. Il faudra donc donner des éléments vides à l’array de construction pour placer le total au bon endroit. Ce qui se fait avec le code suivant:

.....
$i++;
}
// code à ajouter ///////
$this->info_box_contents[$i][0] = array('td' => 'align="left" width="16"',);

$this->info_box_contents[$i][1] = array('td' => 'align="left"',);

$this->info_box_contents[$i][2] = array('td' => 'align="left" width="16"',);

$this->info_box_contents[$i][3] = array('td' => 'align="left"',);

$this->info_box_contents[$i][4] = array('td' => 'align="right"',
'text' => dol_trunc($impayes,40),
'text2' => " €",);
// fin de code à ajouter /////
if ($num==0) $this->info_box_contents[$i][0] = array('td' => 'align="center"','text'=>$langs->trans("NoUnpaidCustomerBills"));
.....

Repérez vous grâce à la ligne $i++ pour placer le reste après, avant la ligne if ($num==0) …

Résultat final

Conclusion

J’utilise ces modifications depuis plusieurs jours sans aucun soucis, et j’avoue que c’est bien plus pratique que l’affichage de base de Dolibarr.
Notez que vous devrez ré-appliquer ces modifications après chaque mise à jour de Dolibarr.

Vous pouvez aussi télécharger les fichiers modifiés que je met à votre disposition et les copier dans votre installation de Dolibarr.

Utiliser (tidy) HTML Validator sur Ubuntu Lucid 10.04


J’utilisais l’extension de Firefox Tidy HTML Validator jusqu’à ce qu’elle ne fonctionne plus avec les versions packagées par Ubuntu.

HTML Validator est une extension Mozilla qui ajoute une validation HTML dans Firefox et Mozilla. Le nombre d’erreurs d’une page HTML est visible sur la forme d’ une icône dans la barre d’état lorsque vous naviguez. Les détails des erreurs sont vu quand on regarde la source HTML de la page.

L’extension est basée sur Tidy et OpenSP . Les deux algorithmes ont été élaborés par le Web Consortium W3C . Et maintenant étendus et améliorés par un grand nombre de personnes. Les deux algorithmes sont intégrés à l’intérieur de Mozilla / Firefox et permettent la validation en local sur votre machine, sans envoyer de HTML à un serveur tiers.

Mais depuis quelques temps, je dois de nouveau me plonger dans la création de sites, et elle me manquait. Donc je me suis penché sur les solutions nécessaires pour l’utiliser.

Puis finalement, sans trop savoir le pourquoi du comment, j’ai réussi à la faire fonctionner. J’ai reproduit avec succès l’installation sur deux autres ordinateurs et je vous livre ici la méthode pour la Lucid Lynx en 32 bits.

HTML validator est compilé pour utiliser la librairie libstdc++5. Or, sur Ubuntu, ce n’est pas la dernière version existante (c’est la libstdc++6).Si vous essayez d’installer directement l’extension, vous aurez le message d’erreur suivant:

error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory

Installation de la librairie libstdc++5 sur Ubuntu

La première chose à faire est de trouver cette librairie et de l’installer. Pas de chance, les liens vers les sites Ubuntu des anciennes versions proposant cette librairie sont morts, mais heureusement, on peut la trouver chez Debian et l’installer sans problème. J’ai utilisé la version Lenny (stable)/ i386 sur le miroir ftp.de.debian.org/debian

Installation des paquets supplémentaires

Certains paquets seront nécessaire par la suite, ajoutons les directement, cela évitera les problèmes de dépendances:

apt-get install libosp5 libnspr4-dev

Il faudra aussi modifier le fichier /etc/profile pour ajouter la ligne suivante en toute fin de fichier:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH/usr/lib/xulrunner/

Ensuite, fermez votre session et reconnectez vous pour que cela soit pris en compte.

Installation des éléments nécessaires au module HTML Validator

Quelqu’un a eu la bonne idée de packager les différents éléments nécessaires au fonctionnement du module, et de les mettre sur un PPA. Par contre, impossible d’utiliser le ppa, il ne liste pas les paquets qui nous intéressent… Mais on peut y accéder directement en suivant cette adresse.

Installez les paquets « data » et html-validator pour votre version. Dans mon cas: htmlvalidator-data_0.8.5.8+svn65-0ubuntu1~ppa1_all.deb et htmlvalidator_0.8.5.8+svn65-0ubuntu1~ppa1_i386.deb. Vous pouvez les télécharger et les installer en ligne de commande, ou le faire graphiquement, tant que vous commencez par le paquet « data ».

Installation du module

Si tout est présent, en redémarrant Firefox, vous verrez le module présent dans la liste des modules. Mais il vous dira que ce module n’est pas compatible avec la version de Firefox. Dommage…

Rassurez vous, les éléments nécessaires au fonctionnement sont installés. Il suffit maintenant d’aller sur le site de l’extension et de télécharger le module pour Firefox, et de l’installer normalement.

Redémarrez Firefox, et le module sera opérationnel.

Les idées sur lesquelles je ne me suis pas penché

Tout simplement parce que la méthode ci dessus fonctionne. Ce n’est peut être pas le plus propre, mais je manque de temps pour tout défricher.

  • Si on faisait croire à Firefox que la libstdc++6 est la libstdc++5 en créant un lien adéquat? Je ne connais pas les différences entre les deux versions.
  • Peut on utiliser wine pour faire tourner Firefox win32 et l’extention Tidy HTML Validator ?
  • Contacter le mainteneur du PPA pour savoir pourquoi il ne liste pas les paquets html-validator et s’il peut corriger ceux ci pour qu’il ne soit plus nécessaire d’installer l’extention par la suite (et suivre les mises à jour avec le gestionnaire des paquets)
  • Contacter le mainteneur de l’extention Tidy HTML Validator pour lui soumettre la méthode, et voir s’il peut proposer une extension directement compatible avec Ubuntu.

Si vous avez du temps…

[Apache2] Résoudre « Code d’erreur : ssl_error_rx_record_too_long »

En essayant de paramétrer un site en SSL sur Lucid, j’ai obtenu cette erreur de la part de Firefox ((à noter qu’Opera donne un autre type d’erreur, mais que je ne l’ai pas notée (erreur fatale 550, si ma mémoire est bonne) )). Erreur qui ne veut rien dire par elle même et une recherche sur le net ne vous donnera que peu de résultat au vu de la variété de réponses, parfois loufoques.

La première chose à faire est de vous assurer que le serveur réponde bien en HTTPS et non en HTTP, et de faire un GET:


telnet 82.XXX.XXX.XXX 443
Trying 82.XXX.XXX.XXX...
Connected to 82.XXX.XXX.XXX.
Escape character is '^]'.
GET /
<html>
<body>

<h1>It works !</h1>
<br />
</body>
</html>
Connection closed by foreign host.

Si vous obtenez du code html, comme c’est le cas ci dessus , au lieu d’une bouillie de caractères (ou de …rien), c’est que vous n’êtes pas en HTTPS mais en HTTP tout court.
Or, comme firefox s’attend à recevoir un certificat dont la longueur est faible, mais qu’il reçoit le code html complet d’une page, forcément il dit que c’est trop long.

Ce qui se trouve confirmé par la lecture du fichier /var/log/apache2/error.log:
[Sat Oct 09 14:40:18 2010] [error] [client 10.0.0.1] Invalid method in request \x16\x03
qui dit que la méthode d’accès n’est pas la bonne.

C’est pas très parlant, mais vu que j’ai galéré pour trouvé d’où venait le problème, j’essaye d’en faire profiter les autres.

Ah, au fait! Mon problème venait que dans la conf de mon virtualhost en SSL je mettais l’IP publique, vu que c’est le seul serveur en DMZ et que tout renvoie dessus. Je croyais le firewall transparent, vis à vis d’apache.
Je me trompais. Il faut mettre l’IP sur le réseau local, vu par la carte réseau elle même.
Après, ça va tout de suite mieux.

Mysql: Résoudre l’erreur « La connexion au « controluser » tel que défini dans votre configuration a échoué. »

Après une réorganisation de serveurs, et migration de mes bases Mysql vers une autre machine, j’ai pu voir dans la fenêtre de phpmyadmin l’erreur suivante:

« La connexion au « controluser » tel que défini dans votre configuration a échoué.« mysql

Comme je passe de la hardy vers la jaunty (LTS to LTS) pendant le déplacement, je me suis dit que quelques différences pouvaient exister et afficher ce message d’erreur qui ne m’empêchait pas de me connecter à phpmyadmin.

Puis je me suis souvenu que pendant l’installation de ce programme, il m’avait demandé plusieurs fois la configuration de MySql sans arriver à s’y connecter. Et dans le speed de la migration, j’ai oublié de vérifier que ça fonctionnait correctement, vu que j’arrivais à me connecter. Et que les principales opérations étaient effectuées en ligne de commande.

Après une recherche un peu plus poussée dans le code des fichiers de phpmyadmin, je me suis rendu compte qu’il cherchait à utiliser l’utilisateur phpmyadmin. Utilisateur visible dans les privilèges de l’ancien serveur, mais pas sur les privilèges du nouveau.

J’ai donc créé un nouvel utilisateur nommé « phpmyadmin » pour le serveur « localhost » ((très important: « localhost », pas autre chose)) avec le mot de passe permettant tous les privilèges, à savoir celui de root, et j’ai donné un droit d’usage simple, non Grant.

Il parait que lancer sudo dpkg-reconfigure phpmyadmin peut résoudre le problème, mais cela n’a pas fonctionné dans mon cas, au contraire de la création manuelle de l’utilisateur.

Classé dans la catégorie « ça a fonctionné pour moi ».