Affichage des articles dont le libellé est ライナックス. Afficher tous les articles
Affichage des articles dont le libellé est ライナックス. Afficher tous les articles

dimanche 21 novembre 2010

Migration de tâches entre deux versions de Thunderbird ?

J'ai du réinstaller Linux récemment et avant ça j'utilisais plus fréquemment Windows.
J'ai mis en place tout doucement mon profil et bien sûr j'ai réinstaller Firefox et Thunderbird mais je n'ai pas restauré mes profils de Windows. En principe il suffit de recopier le dossier du profil entre les OS et c'est parti mais me limitant aux versions proposées dans les dépôts je n'ai pas la dernière version ni de Firefox et encore moins de Thunderbird.
Il se trouve qu'en voulant essayer de remplacer le fichier locale.sqlite dans le dossier calendar-data j'ai eu droit à un joli message d'erreur m'indiquant que la version du fichier avait été construit par une version plus récente du logiciel. Alors ne voulant pas installer 15000 trucs sur ma petite (mais pour le moment suffisante) partition système Linux j'ai regardé ce qui se faisait comme viewer SQLite et il se trouve qu'une extension Firefox plutôt légère offre cette possibilité et en plus ça édite. ;)
Alors bon, j'imagine que pour une migration y'a sûrement mieux mais j'avais pas envie de me casser la tête d'autant plus que j'ai pas 15000 utilisateurs (juste moi) avec chacun 15000 tâches à restaurer donc j'ai un peu fait ça à la mano.
Donc le post n'a pas grand intérêt pour les personnes qui ont ce besoin là.
En revanche les données qui m'intéressaient étaient réparties sur plusieurs tables qui regroupaient pas mal de colonnes pour moi inutiles ce qui nuit à la lisibilité et donc j'ai créé une vue pour avoir tout ce qu'il me fallait sous la main.
C'est très certainement perfectible mais ça fait un petit moment que j'ai pas fait de SQL et ce que j'ai fait est bien suffisant.
Donc voilà la requête SQL :

SELECT cal_todos.title,cal_properties.key,cal_properties.value,cal_todos.priority,cal_todos.ical_status,cal_todos.id,cal_properties.item_id
FROM cal_todos,cal_properties
WHERE cal_properties.item_id=cal_todos.id


Alors bon ensuite je me suis demandé ce qu'il aurait fallu faire pour automatiser un peu plus tout ça et je dois avouer qu'entre les deux versions du fichier (Linux plus ancien et Windows plus à jour) la structure n'est pas tout à fait la même et il semble même que certain types de données ont changés donc pour passer du vieux au neuf (en quantité limité là encore) il suffirait d'installer la vielle version du plugin sur la version à jour de Thunderbird pour ensuite faire une mise-à-jour qui devrait s'occuper des modifications au niveau du fichier mais dans l'autre sens ça paraît plus délicat.
A mon avis installer le nécessaire pour analyser et préparer des requêtes SQL plus conséquences (et surtout scriptable donc le plugin Firefox pourrait ne pas suffire) est presque inévitable.

jeudi 29 avril 2010

LINUX : Mes fichiers de config. part 1

Bon alors c'est simple. J'ai envie de garder une trace de certains fichiers de config et j'utilise ce blog pour le faire.

On commence par /etc/bash.bashrc


# System-wide .bashrc file for interactive bash(1) shells.

# To enable the settings / commands in this file for login shells as well,
# this file has to be sourced in /etc/profile.

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color, overwrite the one in /etc/profile)
#PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

########
COLOR_RED="\[\e[31;40m\]"
COLOR_GREEN="\[\e[32;40m\]"
COLOR_YELLOW="\[\e[33;40m\]"
COLOR_BLUE="\[\e[34;40m\]"
COLOR_MAGENTA="\[\e[35;40m\]"
COLOR_CYAN="\[\e[36;40m\]"

COLOR_RED_BOLD="\[\e[31;1m\]"
COLOR_GREEN_BOLD="\[\e[32;1m\]"
COLOR_YELLOW_BOLD="\[\e[33;1m\]"
COLOR_BLUE_BOLD="\[\e[34;1m\]"
COLOR_MAGENTA_BOLD="\[\e[35;1m\]"
COLOR_CYAN_BOLD="\[\e[36;1m\]"

COLOR_NONE="\[\e[0m\]"

promptFunc()
{
    PREV_RET_VAL=$?;
    PS1=""
   
    if test `whoami` != "root"
    then
        PS1="${debian_chroot:+($debian_chroot)}${COLOR_BLUE_BOLD}\u@${COLOR_GREEN_BOLD}\h${COLOR_NONE}:${COLOR_BLUE_BOLD}\w${COLOR_NONE}"
    else
        PS1="${debian_chroot:+($debian_chroot)}${COLOR_RED_BOLD}\u@${COLOR_GREEN_BOLD}\h${COLOR_NONE}:${COLOR_RED_BOLD}\w${COLOR_NONE}"
    fi

    #PS1="${PS1}"

    if test $PREV_RET_VAL -eq 0
    then
        PS1="${PS1}${COLOR_GREEN_BOLD}\\$ ${COLOR_NONE}"
    else
        PS1="${PS1}${COLOR_RED_BOLD}\\$ [Valeur de retour : ${PREV_RET_VAL}] ${COLOR_NONE}"
    fi
}

PROMPT_COMMAND=promptFunc


# Commented out, don't overwrite xterm -T "title" -n "icontitle" by default.
# If this is an xterm set the title to user@host:dir
#case "$TERM" in
#xterm*|rxvt*)
#    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
#    ;;
#*)
#    ;;
#esac

# enable bash completion in interactive shells
#if [ -f /etc/bash_completion ]; then
#    . /etc/bash_completion
#fi

# if the command-not-found package is installed, use it
if [ -x /usr/lib/command-not-found ]; then
    function command_not_found_handle {
            # check because c-n-f could've been removed in the meantime
                if [ -x /usr/lib/command-not-found ]; then
           /usr/bin/python /usr/lib/command-not-found -- $1
                   return $?
        else
           return 127
        fi
    }
fi
[[ -f "/etc/autopackage/paths-bash" ]] && . "/etc/autopackage/paths-bash"


On continue avec /etc/ntp.conf

# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help

driftfile /var/lib/ntp/ntp.drift


# Enable this if you want statistics to be logged.
#statsdir /var/log/ntpstats/

statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable


# You do need to talk to an NTP server or two (or three).
#server ntp.your-provider.example

# pool.ntp.org maps to about 1000 low-stratum NTP servers.  Your server will
# pick a different set every time it starts up.  Please consider joining the
# pool:
server 0.debian.pool.ntp.org iburst dynamic


# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for
# details.  The web page
# might also be helpful.
#
# Note that "restrict" applies to both servers and clients, so a configuration
# that might be intended to block requests from certain clients could also end
# up blocking replies from your own upstream servers.

# By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery

# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1

# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated.
#restrict 192.168.123.0 mask 255.255.255.0 notrust


# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
#broadcast 192.168.123.255

# If you want to listen to time broadcasts on your local subnet, de-comment the
# next lines.  Please do this only if you trust everybody on the network!
#disable auth
#broadcastclient
server 0.fr.pool.ntp.org
server 1.fr.pool.ntp.org
server 2.fr.pool.ntp.org
server 1.debian.pool.ntp.org
server 2.debian.pool.ntp.org
server 3.debian.pool.ntp.org
server canon.inria.fr
server chronos.cru.fr
server ntp.cs.strath.ac.uk
server bernina.ethz.ch
server ntps1-1.cs.tu-berlin.de
server ntps1-0.cs.tu-berlin.de
server ntps1-2.uni-erlangen.de
server time.ien.it
server ntp0.nl.net
server ntp1.nl.net
server ntp2.nl.net
server ntp.certum.pl
server vega.cbk.poznan.pl
server ntp2.ja.net
server ntpa2.kph.uni-mainz.de
server ntp.univ-lyon1.fr


Alors bon il faut encore s'assurer que l'heure reste corrècte. Normalement une contrôle de l'heure une fois par jour voir par semaine ou même moins suffit mais mon Ordi déconne grave et il perd sans cesse l'heure juste quand bien même il est en fonction !
Pour ça j'ai planifié une commande avec Crontab sur le compte Root. Tout simplement celle qui permet la synchronisation avec un serveur NTP.

# m h  dom mon dow   command
0 * * * * /usr/sbin/ntpdate -u 0.fr.pool.ntp.org


On continue avec /home/moncompte/.bashrc

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

# don't put duplicate lines in the history. See bash(1) for more options
export HISTCONTROL=ignoredups

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(lesspipe)"

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

########
COLOR_RED="\[\e[31;40m\]"
COLOR_GREEN="\[\e[32;40m\]"
COLOR_YELLOW="\[\e[33;40m\]"
COLOR_BLUE="\[\e[34;40m\]"
COLOR_MAGENTA="\[\e[35;40m\]"
COLOR_CYAN="\[\e[36;40m\]"

COLOR_RED_BOLD="\[\e[31;1m\]"
COLOR_GREEN_BOLD="\[\e[32;1m\]"
COLOR_YELLOW_BOLD="\[\e[33;1m\]"
COLOR_BLUE_BOLD="\[\e[34;1m\]"
COLOR_MAGENTA_BOLD="\[\e[35;1m\]"
COLOR_CYAN_BOLD="\[\e[36;1m\]"

COLOR_NONE="\[\e[0m\]"

#promptFunc()
#{
#    PREV_RET_VAL=$?;
#    PS1=""
#   
#    if test `whoami` != "root"
#    then
#        PS1="${debian_chroot:+($debian_chroot)}${COLOR_BLUE_BOLD}\u@${COLOR_GREEN_BOLD}\h${COLOR_NONE}:${COLOR_BLUE_BOLD}\w${COLOR_NONE}"
#    else
#        PS1="${debian_chroot:+($debian_chroot)}${COLOR_RED_BOLD}\u@${COLOR_GREEN_BOLD}\h${COLOR_NONE}:${COLOR_RED_BOLD}\w${COLOR_NONE}"
#    fi
#
#    #PS1="${PS1}"
#
#    if test $PREV_RET_VAL -eq 0
#    then
#        PS1="${PS1}${COLOR_GREEN_BOLD}\\$ ${COLOR_NONE}"
#    else
#        PS1="${PS1}${COLOR_RED_BOLD}\\$ [Valeur de retour : ${PREV_RET_VAL}] ${COLOR_NONE}"
#    fi
#}
########

# set a fancy prompt (non-color, unless we know we "want" color)
#case "$TERM" in
#xterm-color)
#    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
#    ;;
#*)
#    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
#    ;;
#esac

# Comment in the above and uncomment this below for a color prompt
#PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

# If this is an xterm set the title to user@host:dir
#case "$TERM" in
#xterm*|rxvt*)
#    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'
#    ;;
#*)
#    ;;
#esac

#PROMPT_COMMAND=promptFunc

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

#if [ -f ~/.bash_aliases ]; then
#    . ~/.bash_aliases
#fi

# enable color support of ls and also add handy aliases
if [ "$TERM" != "dumb" ]; then
    eval "`dircolors -b`"
    alias ls='ls --color=auto'
    #alias dir='ls --color=auto --format=vertical'
    #alias vdir='ls --color=auto --format=long'
fi

# some more ls aliases
#alias ll='ls -l'
#alias la='ls -A'
#alias l='ls -CF'

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

alias sauvegarde='rsync -ahv --stats --progress /home/eminomeneko/ /mnt/donnees/backup_Linux/'
function man2pdf()
{
    filename="$1"
    man -t ${filename} > man_${filename}.ps && ps2pdf man_${filename}.ps && rm -f man_${filename}.ps
}

export PATH=/usr/java/jre1.6.0_16/bin:$PATH


Voilà pour aujourd'hui

mardi 30 mars 2010

Grub !

Alors oui juste un petit message au sujet de grub.
Je fais partie des heureux utilisateurs qui ont un dual-boot entre Windows et Linux ou plus précisément entre Windows XP Home et Debian (da best distro ever !). Le fait est que mon utilisation de ces deux OS se fait par "phases" ou plus communément, j'ai mes périodes Windows et mes périodes Linux et jusqu'à aujourd'hui je passais mon temps à mettre à jour mon menu.lst entre la plupart de ces phases pour ne pas tout le temps avoir à choisir manuellement l'OS sur lequel je veux booter.
Donc est venu le moment où je me suis demandé si il existait un moyen de garder le dernier OS utilisé de telle sorte que je ne sois plus obligé d'éditer à chaque fois (bêtement) mon menu.lst et qu'entre chaque "phases", aussi courtes soit-elle, de simplement changer d'option de menu aux moments idoines.
Je ne doutais pas que ce soit possible vu que c'est un projet de la sphere Linux (et deux têtes valent mieux qu'une dit-on, d'autant plus quand ces têtes ont une approche très fusionnelle avec celle des "utilisateurs moyens"), j'ai donc commencé ma petite recherche sur internet. En parcourant mon menu.lst je remarques quelques lignes comme
# savedefault=true
ou
# howmany = all

Dans le premier cas on peut penser se rapprocher de la réponse, dans le second on en profite pour faire d'une pierre deux coups.
Parmis les pages que j'ai vu certains préconisent l'utilisation de startupmanager : un outil graphique dont la photo d'écran présentait bien une option "Last Used" pour le choix de l'OS par défaut donc exactement ce que je cherchais.
Je ne suis pas spécialement fan de l'outil graphique mais d'un autre côté je n'avais pas envie de me prendre la tête une heure à chercher la solution ; les pistes que j'ai parcouru jusqu'alors montraient qu'en fait je faisais un peu fausse route avec savedefault.

Bref, pour savoir quoi modifié je n'y suis pas allé par 4 chemins : j'ai installé startupmanager en une commande (ce qui, au passage, va bien plus vite que de chercher, télécharger puis installer un logiciel àla mode de Windows. Je vous le garantie. Et puis ça permet de faire des scripts comme le script d'installation du japonais que j'avais écrit il y a quelques temps) et j'ai laissé cet utilitaire faire les changements pour moi.
Ensuite, parce que c'est bien beau de choisir la solution de facilité mais encore faut-il nourrir sa culture générale, j'ai fait un petit diff entre ma sauvegarde avant les changements apportés par startupmanager et le fichier en production. Donc voilà le résultat de la commande :

eminomeneko@devstation:/boot/grub$ sudo diff menu.lst menu.lst.ima
[sudo] password for eminomeneko:
14c14
< default        saved
---
> default        0
34c34
< ## password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
---
> #      password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
136a137,146
> title        Debian GNU/Linux, kernel 2.6.26-1-686
> root        (hd0,5)
> kernel        /boot/vmlinuz-2.6.26-1-686 root=/dev/hda6 ro quiet
> initrd        /boot/initrd.img-2.6.26-1-686
>
> title        Debian GNU/Linux, kernel 2.6.26-1-686 (single-user mode)
> root        (hd0,5)
> kernel        /boot/vmlinuz-2.6.26-1-686 root=/dev/hda6 ro single
> initrd        /boot/initrd.img-2.6.26-1-686


On observe donc bien qu'en fait le changement apporté par startupmanager c'est la valeur de l'option default qui de ce que je croyais jusqu'alors ne pouvaient êtres seulement numérique. Ça donne une petite idée de la manière dont est gérée cette option au niveau du code source. Genre je récup en tant que chaîne de caractères, on compare avec une des chaînes prévues (en l'occurence saved ici) et sinon on regarde si c'est transtypable en entier, sinon probablement on lève une exception/erreur.
Comme je l'ai dis plus tôt j'en ai profité pour faire d'une pierre deux coups. Cette fois ça concerne l'option howmany qui me permet de limiter le nombre des entrées de noyaux qui sont affichés dans Grub.
Jusque là j'ai fais system-D en commentant les lignes (pas sur ce poste mais d'autres) que je ne voulais plus voir apparaître. On note donc que par la même occasion, startupmanager en a profité pour faire ce petit ménage de printemps (qui donc est de saison) d'où les lignes qui sont simplement supprimées et non pas seulement remplacées.
Autre chose. J'ai du ajouter l'option savedefault dans la section concernant Linux parce qu'il n'était pas présent. En fait là où on aura ajouté savedefault on gardera une trace de ce choix et sinon ben on reste sur le dernier. C'est pratique si vous avez par exemple d'autres entrées que vous utiliseriez ponctuellement comme memtest86+. Une fois utilisé et le PC rebooté on retombe sur le choix précédent l'utilisation de Memtest c'est-à-dire Linux ou Windows.

Bref pour faire court : si on veut que grub se souvienne du dernier OS choisi il faut affecter la valeur saved à l'option default, et si on veut limiter automatiquement le nombre de kernels qui vont êtres proposés au démarrage, il existe une option howmany qui appèpte pour valeurs soit "all" si on veut qu'il complète simplement le menu.lst à chaque installation d'un nouveau noyau, soit un nombre entier qui délimite le nombre de noyaux présents dans le menu de démarrage.
Voilà pour mon premier post sur Linux. D'autres suivront certainement.