Migration de vhffs 4.0pre1 (stable) vers vhffs 4.1-alpha

Note : cette migration s'effectue à vos risques et périls, la version 4.1 n'est pas encore stabilisée, que ce soit au niveau du modèle de données ou au niveau du code. Si vous décidez de migrer quand même, abonnez vous à vhffs-dev pour être informé des commits au fur et à mesure. Si vous migrez vers la 4.1 et que vous faites des mises à jour ultérieures vérifiez que des contraintes n'ont pas été ajoutées à la base. Si après avoir lu ça vous voulez tout de même continuer, je ne dirai qu'une chose “bonne chance ! et rendez-vous sur l'autre rive !”

Après avoir installé avec plus ou moins de succès vhffs 4.0pre1, et comme la version 4.1-alpha commençait à devenir intéressante, je me suis dis qu'avoir une version de vhffs 4.1-alpha en production permettrait certainement de faire progresser le code.

L'installation de la 4.0pre1 a déjà été expliqué, je vous laisse donc le soin de lire (et de mettre au propre) cette partie de l'installation.

Première étape : téléchargement de la 4.1-alpha :

svn co svn://svn.tuxfamily.org/svnroot/vhffs4/vhffs/branches/vhffs_4.1/ /usr/src/vhffs4.1/

tout va bien pour le moment. J'en profite, pendant qu'il est encore temps, pour faire une sauvegarde du fichier de configuration :

cp /etc/vhffs/vhffs.conf /etc/vhffs/vhffs-4.01.conf

Hop, on se place là où il faut bien

cd /usr/src/vhffs4.1/

Ensuite le traditionnel

# make install-debian

Il installe des packages qui manquaient visiblement…

Et tout se termine pour le mieux… Ouf !

Il existe des scripts de migration tout prêts dans le répertoire vhffs-backend/src/pgsql/ pour la migration de la base, on va lancer ça proprement !

# su postgres
# psql vhffs vhffs -f vhffs-backend/src/pgsql/alter_from4.0pre1_tocurrent.sql

Comme je viens de cette version, hop le bon patch !

Voici la sortie :

DROP SEQUENCE
DROP SEQUENCE
DROP SEQUENCE
DROP SEQUENCE
DROP SEQUENCE
DROP SEQUENCE
DROP SEQUENCE
DROP SEQUENCE
DROP SEQUENCE
psql:vhffs-backend/src/pgsql/alter_from4.0pre1_tocurrent.sql:46: ERREUR:  La séquence «seq_virtualuid» n'existe pas
psql:vhffs-backend/src/pgsql/alter_from4.0pre1_tocurrent.sql:47: ERREUR:  La séquence «seq_virtualgid» n'existe pas
DROP SEQUENCE
DROP SEQUENCE
DROP SEQUENCE
DROP SEQUENCE
DROP SEQUENCE
DROP SEQUENCE
DROP SEQUENCE
DROP SEQUENCE
CREATE SEQUENCE
ALTER TABLE
CREATE SEQUENCE
ALTER TABLE
CREATE SEQUENCE
ALTER TABLE
CREATE SEQUENCE
ALTER TABLE
CREATE SEQUENCE
ALTER TABLE
CREATE SEQUENCE
ALTER TABLE
CREATE SEQUENCE
ALTER TABLE
CREATE SEQUENCE
ALTER TABLE
CREATE SEQUENCE
ALTER TABLE
CREATE SEQUENCE
ALTER TABLE
CREATE SEQUENCE
ALTER TABLE
psql:vhffs-backend/src/pgsql/alter_from4.0pre1_tocurrent.sql:99: INFO:  CREATE TABLE créera des séquences implicites «vhffs_repository_repository_id_seq» pour la colonne «serial» «vhffs_repository.repository_id»
psql:vhffs-backend/src/pgsql/alter_from4.0pre1_tocurrent.sql:99: INFO:  CREATE TABLE / PRIMARY KEY créera un index implicite «vhffs_repository_pkey» pour la table «vhffs_repository»
CREATE TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
psql:vhffs-backend/src/pgsql/alter_from4.0pre1_tocurrent.sql:104: ERREUR:  erreur de syntaxe sur ou près de «$1» at character 43
psql:vhffs-backend/src/pgsql/alter_from4.0pre1_tocurrent.sql:104: LIGNE 1 : ALTER TABLE vhffs_history DROP CONSTRAINT $1;
psql:vhffs-backend/src/pgsql/alter_from4.0pre1_tocurrent.sql:104:                                                     ^
ALTER TABLE
CREATE VIEW
psql:vhffs-backend/src/pgsql/alter_from4.0pre1_tocurrent.sql:112: alter_from4.0_tocurrent.sql : Aucun fichier ou répertoire de ce type

et voilà !

Les deux premières erreurs ne sont pas méchantes (on essaie de droper des séquences inexistantes), la seconde était due à une erreur de syntaxe dans le script qui a été corrigée, toutefois PostgreSQL peut vous signaler que la contrainte $1 n'existe pas, il faut alors exécuter l'instruction ALTER TABLE vhffs_history DROP CONSTRAINT vhffs_history_object_id_fkey; Enfin la dernière dépend d'où vous lancez le script de migration. Si elle apparaît, lancez manuellement la commande psql vhffs vhffs -f vhffs-backend/src/pgsql/alter_from4.0_tocurrent.sql

On obtient en sortie :

setval
--------
   103
(1 ligne)

setval
--------
   134
(1 ligne)

setval
--------
 10031
(1 ligne)

setval
--------
 10013
(1 ligne)

setval
--------
    34
(1 ligne)

setval
--------
     1
(1 ligne)
 
setval
--------
     6
(1 ligne)

setval
--------
    70
(1 ligne)

setval
--------
     6
(1 ligne)

setval
--------
    26
(1 ligne)

psql:alter_from4.0_tocurrent.sql:17: ERREUR:  la relation «vhffs_largefile» n'existe pas
setval
--------
     1
(1 ligne)

setval
--------
     6
(1 ligne)
 
setval
--------
     1
(1 ligne)

setval
--------
    13
(1 ligne)

setval
 --------
  913
(1 ligne)

setval
--------
     1
(1 ligne)

setval
--------
     1
(1 ligne)

setval
--------
     1
(1 ligne)
psql:alter_from4.0_tocurrent.sql:28: INFO:  ALTER TABLE / ADD UNIQUE créera un index implicite «vhffs_users_unique_username» pour la table «vhffs_users»
ALTER TABLE
psql:alter_from4.0_tocurrent.sql:29: INFO:  ALTER TABLE / ADD UNIQUE créera un index implicite «vhffs_groups_unique_groupname» pour la table «vhffs_groups»
ALTER TABLE
ALTER TABLE
ALTER TABLE

Ensuite, modifier les quelques changements dans /etc/vhffs/vhffs.conf :

Remplacer <databases> par

<database>
              driver = pg
              #Database to use
              db_name=vhffs
              #Read Write User Name
              db_username=vhffs
              #Passwor
              db_password=vhffs
              #DataBase Server
              db_host=localhost
              #Database port
              db_port = 5432
</database>

Avec les valeurs qui vont bien, cela va sans dire…

Et maintenant, sur le panel, j'ai un beau :

Run VHFFS 4.1-alpha (hippocampus)

\o/

Temps passé : 20 minutes… avec la rédaction du wiki :-D


Utilisation du updatedb.pl après le refactoring sql :

Depuis le répertoire racine de l'installation (important) lancer :

perl vhffs-compat/updatedb.pl

Sortie d'écrans :

  • * VHFFS UPDATEDB **

This script will upgrade your database to the VHFFS 4.1's schema.

Ensure that VHFFS is *stopped* !
Use this script to your own risks!!!
Do you still want to continue (Y/n) ? y
Enter VHFFS DB hostname [localhost] : 
Enter VHFFS DB name [vhffs] : 
Enter VHFFS DB username [vhffs] : 
Enter VHFFS DB password : 
Do you want to perform a backup right now (Y/n) ? y
Enter a filename for the backup file [/tmp/vhffs-backup.sql] : 
It seems that you are not running vhffs 4.0, do you still want to upgrade (Y/n) ? 
 setval 
--------
    155
(1 ligne)

 setval 
--------
    191
(1 ligne)

 setval 
--------
  10049
(1 ligne)

 setval 
--------
  10017
(1 ligne)

   setval 
--------
     56
(1 ligne)

 setval 
--------
      1
(1 ligne)

 setval 
--------
      9
(1 ligne)

 setval 
--------
    101

 setval 
--------
      9
(1 ligne)

 setval 
--------
     40
(1 ligne)

 setval 
--------
      2
(1 ligne)

 setval 
--------
      8
(1 ligne)

 setval 
--------
      1
(1 ligne)

 setval 
--------
     20
(1 ligne)

 setval 
--------
   1211
(1 ligne)

 setval 
--------
      1
(1 ligne)
 setval 
--------
      1
(1 ligne)

 setval 
--------
      1
(1 ligne)

ALTER TABLE
ALTER TABLE
psql:/usr/src/vhffs4.1/./vhffs-compat/4.0.sql:29: ERREUR:  La table «vhffs_largefile» n'existe pas
ALTER TABLE
ALTER TABLE
UPDATE 131
UPDATE 16
UPDATE 34
UPDATE 27
UPDATE 0
UPDATE 16
UPDATE 0
UPDATE 0
UPDATE 0
UPDATE 7
UPDATE 7
UPDATE 0
psql:/usr/src/vhffs4.1/./vhffs-compat/4.0.sql:53: ERREUR:  Les instructions update ou delete sur «vhffs_object» viole la   contrainte de clé étrangère «vhffs_history_object_id_fkey» sur «vhffs_history»
DETAIL:  La clé (object_id)=(75) est toujours référencée à partir de la table «vhffs_history».
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
UPDATE 16
ALTER TABLE
UPDATE 8
UPDATE 8
ALTER TABLE
ALTER TABLE
UPDATE 16
UPDATE 11
ALTER TABLE
ALTER TABLE
UPDATE 34
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
UPDATE 0
ALTER TABLE
UPDATE 0
DROP VIEW
CREATE VIEW
Let's drop foreign keys...
      Dropping vhffs_history(vhffs_history_object_id_fkey)
      Dropping vhffs_acl(vhffs_acl_oid_src_fkey)
      Dropping vhffs_acl(vhffs_acl_oid_dst_fkey)
      Dropping vhffs_users(vhffs_users_pkey2)
      Dropping vhffs_groups(vhffs_groups_pkey2)
      Dropping vhffs_groups_info(vhffs_groups_info_fkey1)
      Dropping vhffs_groups_info(vhffs_groups_info_pkey2)
      Dropping vhffs_user_info(vhffs_user_info_fkey)
      Dropping vhffs_user_group(vhffs_user_group_fkey1)
      Dropping vhffs_user_group(vhffs_user_group_fkey2)
      Dropping vhffs_panel_user_prefs(vhffs_panel_user_prefs_uid_fkey)
      Dropping vhffs_notes(vhffs_notes_object_id_fkey)
      Dropping vhffs_dns_global(vhffs_dns_global_owner_gid_fkey)
      Dropping vhffs_dns_global(vhffs_dns_global_owner_uid_fkey)
      Dropping vhffs_dns_global(vhffs_dns_global_object_id_fkey)
      Dropping vhffs_dns_rr(vhffs_dns_rr_zone_fkey)
      Dropping vhffs_cvs(vhffs_cvs_owner_uid_fkey)
      Dropping vhffs_cvs(vhffs_cvs_owner_gid_fkey)
      Dropping vhffs_cvs(vhffs_cvs_object_id_fkey)
      Dropping vhffs_ml(vhffs_ml_domain_fkey)
      Dropping vhffs_ml(vhffs_ml_owner_uid_fkey)
      Dropping vhffs_ml(vhffs_ml_owner_gid_fkey)
      Dropping vhffs_ml(vhffs_ml_object_id_fkey)
      Dropping vhffs_ml_prefs(vhffs_ml_prefs_ml_id_fkey)
      Dropping vhffs_ml_subscribers(vhffs_ml_subscribers_ml_id_fkey)
      Dropping vhffs_mysql(vhffs_mysql_owner_uid_fkey)
      Dropping vhffs_mysql(vhffs_mysql_owner_gid_fkey)
      Dropping vhffs_mysql(vhffs_mysql_object_id_fkey)
      Dropping vhffs_svn(vhffs_svn_owner_uid_fkey)
      Dropping vhffs_svn(vhffs_svn_owner_gid_fkey)
      Dropping vhffs_svn(vhffs_svn_object_id_fkey)
      Dropping vhffs_pgsql(vhffs_pgsql_owner_uid_fkey)
      Dropping vhffs_pgsql(vhffs_pgsql_owner_gid_fkey)
      Dropping vhffs_pgsql(vhffs_pgsql_object_id_fkey)
      Dropping vhffs_httpd(vhffs_httpd_owner_uid_fkey)
      Dropping vhffs_httpd(vhffs_httpd_owner_gid_fkey)
      Dropping vhffs_repository(fk_vhffs_vhffs_repository_vhffs_users)
      Dropping vhffs_repository(fk_vhffs_vhffs_repository_vhffs_groups)
      Dropping vhffs_repository(fk_vhffs_vhffs_repository_vhffs_object)
      Dropping vhffs_history(fk_vhffs_history_vhffs_object)
 done.
Let's drop unique key constraints
      Dropping vhffs_mxdomain(vhffs_mxdomain_domain_key)
      Dropping vhffs_users(vhffs_users_unique_username)
      Dropping vhffs_groups(vhffs_groups_unique_groupname)
      Dropping vhffs_httpd(vhffs_httpd_unique_servername)
 done.
Let's drop indexes
      Dropping index idx_vhffs_httpd_servername_firstletter
      Dropping index idx_vhffs_object_state
 done.
Creating new foreign key, indexes and unique keys...
      Creating vhffs_users(vhffs_users_unique_username)
INFO:  ALTER TABLE / ADD UNIQUE créera un index implicite «vhffs_users_unique_username» pour la table «vhffs_users»
      Creating vhffs_groups(vhffs_groups_unique_groupname)
INFO:  ALTER TABLE / ADD UNIQUE créera un index implicite «vhffs_groups_unique_groupname» pour la table «vhffs_groups»
      Creating vhffs_cvs(vhffs_cvs_unique_cvsroot)
INFO:  ALTER TABLE / ADD UNIQUE créera un index implicite «vhffs_cvs_unique_cvsroot» pour la table «vhffs_cvs»
      Creating vhffs_httpd(vhffs_httpd_unique_servername)
INFO:  ALTER TABLE / ADD UNIQUE créera un index implicite «vhffs_httpd_unique_servername» pour la table «vhffs_httpd»
      Creating vhffs_mxdomain(vhffs_mxdomain_unique_domainname)
INFO:  ALTER TABLE / ADD UNIQUE créera un index implicite «vhffs_mxdomain_unique_domainname» pour la table «vhffs_mxdomain»
      Creating idx_vhffs_httpd_servername_firstletter ON vhffs_httpd(substr(servername, 1, 1))
      Creating idx_vhffs_object_state ON vhffs_object(state)
      Creating vhffs_acl(fk_vhffs_acl_vhffs_object_dst)
      Creating vhffs_acl(fk_vhffs_acl_vhffs_object_src)
      Creating vhffs_groups(fk_vhffs_group_vhffs_object)
      Creating vhffs_groups(fk_vhffs_group_vhffs_users)
      Creating vhffs_users(fk_vhffs_users_vhffs_object)
      Creating vhffs_cvs(fk_vhffs_cvs_vhffs_users)
      Creating vhffs_cvs(fk_vhffs_cvs_vhffs_groups)
      Creating vhffs_cvs(fk_vhffs_cvs_vhffs_object)
      Creating vhffs_dns_global(fk_vhffs_dns_vhffs_users)
      Creating vhffs_dns_global(fk_vhffs_dns_vhffs_groups)
      Creating vhffs_dns_global(fk_vhffs_dns_vhffs_object)
      Creating vhffs_dns_rr(fk_vhffs_dns_rr_vhffs_dns)
      Creating vhffs_httpd(fk_vhffs_httpd_vhffs_users)
      Creating vhffs_httpd(fk_vhffs_httpd_vhffs_groups)
      Creating vhffs_repository(fk_vhffs_vhffs_repository_vhffs_users)
      Creating vhffs_repository(fk_vhffs_vhffs_repository_vhffs_groups)
      Creating vhffs_repository(fk_vhffs_vhffs_repository_vhffs_object)
      Creating vhffs_mxdomain(fk_vhffs_mxdomain_vhffs_users)
      Creating vhffs_mxdomain(fk_vhffs_mxdomain_vhffs_groups)
      Creating vhffs_mxdomain(fk_vhffs_mxdomain_vhffs_object)
      Creating vhffs_ml(fk_vhffs_ml_vhffs_users)
      Creating vhffs_ml(fk_vhffs_ml_vhffs_groups)
      Creating vhffs_ml(fk_vhffs_ml_vhffs_object)
      Creating vhffs_ml(fk_vhffs_ml_vhffs_mxdomain)
      Creating vhffs_ml_subscribers(fk_vhffs_ml_subscribers_vhffs_ml)
      Creating vhffs_mysql(fk_vhffs_mysql_vhffs_users)
      Creating vhffs_mysql(fk_vhffs_mysql_vhffs_groups)
      Creating vhffs_mysql(fk_vhffs_mysql_vhffs_object)
      Creating vhffs_history(fk_vhffs_history_vhffs_object)
      Creating vhffs_pgsql(fk_vhffs_pgsql_vhffs_users)
      Creating vhffs_pgsql(fk_vhffs_pgsql_vhffs_groups)
      Creating vhffs_pgsql(fk_vhffs_pgsql_vhffs_object)
      Creating vhffs_svn(fk_vhffs_svn_vhffs_users)
      Creating vhffs_svn(fk_vhffs_svn_vhffs_groups)
      Creating vhffs_svn(fk_vhffs_svn_vhffs_object)
      Creating vhffs_user_group(fk_vhffs_user_group_vhffs_users)
      Creating vhffs_user_group(fk_vhffs_user_group_vhffs_groups)
Fixing \s in objects' description... done.
Fixing \s in objects' history... done.
Fixing \s in users' informations... done.
community/migration-4.0pre1.txt · Last modified: 2011/03/28 21:54 by gradator
Recent changes RSS feed Creative Commons License Donate Minima Template by Wikidesign Driven by DokuWiki