Skip navigation

Monthly Archives: July 2009

Lorsque l’on a un serveur, la mise à jour se passe en ligne de commande. En général cela se passe en modifiant le fichier de source pour APT. Il suffit de se tromper dans le fichier source.list pour avoir des problèmes.

ATTENTION ! Une mise à jour du système et surtout le changement de version reste une manipulation dangereuse sur un serveur de production! Faites des sauvegardes avant.

Sous Ubuntu il existe un outil en ligne de commande qui effectue les même vérification que l’utilitaire graphique update-manager.

Pour pouvoir utiliser la commande de mise à jour de version d’Ubuntu en ligne de commande il faut que le paquet update-manager-core

Mise à jour vers la version stable suivante encore supportée:

do-release-upgrade

Il est aussi possible de lui rajouter des paramètres:

  • -p: met à jour vers la dernière version stable disponible
  • -d: permet de mettre à jour vers la version de développement en cours
  • -c: met à jour vers la dernière version Release

Exemples:

22:33 motarion@[cyber-workstation]:~$ do-release-upgrade
Checking for a new ubuntu release
No new release found
23:07 motarion@[cyber-workstation]:~$ do-release-upgrade -p
Checking for a new ubuntu release
No new release found
23:08 motarion@[cyber-workstation]:~$ do-release-upgrade -d
 
Checking for a new ubuntu release
 
Done Upgrade tool signature
 
Done Upgrade tool
 
Done downloading
 
extracting 'karmic.tar.gz'
 
authenticate 'karmic.tar.gz' against 'karmic.tar.gz.gpg'
 
[sudo] password for motarion:
 
Lecture du cache
 
Vérification du gestionnaire de paquets
 
Reading package lists: Donejaunty-security/multiverse Packages: 95
 
Reading state information: Done
 
Reading state information: Done
 
Reading state information: Done
 
Done downloading
 
Vérification du gestionnaire de paquets
 
Reading package lists: Donekarmic-security/multiverse Packages: 95
 
Reading state information: Done
 
Reading state information: Done
 
Reading state information: Done
 
Calcul des modifications
 
Voulez-vous commencer la mise à niveau ?
 
18 paquets vont être supprimés. 161 nouveaux paquets vont être
 
installés. 1056 paquets vont être mis à jour.
 
Vous devez télécharger un total de 818M. Ce téléchargement
 
prendra environ 12 minutes avec votre connexion.
 
La récupération et l'installation de la mise à niveau peuvent
 
prendre plusieurs heures. Un fois le téléchargement terminé,
 
l'opération ne peut plus être annulée.
 
_Continuer [oN]  Détails [d]

Suite à un problème avec mon environnement Trac pour gérer mes sources, celui ci était envahi de ticket SPAM envoyé par des bots car j’avais mal configuré les permissions. Maintenant que les permissions sont bonnes, il ne reste plus qu’à supprimer les ticket SPAM.

Ma version de Trac est celle de la Dapper (6.06 LTS) d’Ubuntu Server, donc la version 9.3. Il n’existe pas de plugin pour cette version qui permette de supprimer des tickets en masse. J’avais 300 ticket à supprimer.

La base de donnée étant en SQLite, j’ai écrit un petit script qui permet de supprimer les tickets.

Ce script doit être lancé avec un utilisateur qui a les droits décriture sur la base de donnée de Trac.

Paramètres:

  1. Chemin de la base de donnée SQLite de trac
  2. Premier ticket à supprimer
  3. Dernier ticket à supprimer

Script trac_del_ticket.sh :

#
#    Mass removing tickets from Trac environnement
#
#    Motarion <motarion@gmail.com>
#    Creation date: 12/07/2009
#    Last modification: 12/07/2009
#
#    History:
#    v0.1: <12/07/2009> Initial release.
#
 
# Variables
NB_PARAM="$#"
DB_PATH="$1"
FIRST_TICKET="$2"
LAST_TICKET="$3"
 
# Programs
SQLITE_CLIENT=`which sqlite3`
 
# Tests
if [ $NB_PARAM -gt 3 ] || [ $NB_PARAM -lt 3 ];
then
echo "Error: Usage $0 PATH_TO_TRAC.DB FIRST_TICKET LAST_TICKET"
exit 1
fi
 
if [ $SQLITE_CLIENT == "" ]
then
echo "Error: This script require Sqlite3 client to work. Please install it."
exit 1
else
echo "Info: Sqlite client dependancy satisfied. ($SQLITE_CLIENT)"
fi
 
if [ ! -d $DB_PATH ]
then
echo "Error: The path to the trac.db file is not correct."
exit 1
else
echo "Info: Path to the trac.db is correct."
fi
 
# Main loop
for i in `seq $FIRST_TICKET $LAST_TICKET`
do
TICKET_ID=$i
$SQLITE_CLIENT $DB_PATH"trac.db" "DELETE FROM ticket WHERE id=$TICKET_ID"
$SQLITE_CLIENT $DB_PATH"trac.db" "DELETE FROM ticket_change WHERE ticket=$TICKET_ID"
$SQLITE_CLIENT $DB_PATH"trac.db" "DELETE FROM attachment WHERE type='ticket' and id=$TICKET_ID"
$SQLITE_CLIENT $DB_PATH"trac.db" "DELETE FROM ticket_custom WHERE ticket=$TICKET_ID"
done