**Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.**

# Howto Migration Lenny -> Squeeze

Release Notes i386 : <http://www.debian.org/releases/squeeze/i386/release-notes/>

Release Notes amd64 : <http://www.debian.org/releases/squeeze/amd64/release-notes/>

## VERSIONS

Passage de Lenny à Squeeze :

MySQL 5.0.51 -> 5.1.49

PHP 5.2.6 -> 5.3.3

Apache 2.2.9 -> 2.2.16

Tomcat 5.5.26->6.0.35


## APT

* Le dépôt volatile de lenny n'existe plus, il faut utiliser à la place :

~~~
deb <http://mirror.evolix.org/debian> squeeze-updates main
~~~

* Bien vérifier les paquets proposés à la suppression !
* Dans certains cas particuliers, on pourra utiliser apt-get à la place d'aptitude, qui peut avoir une gestion différente... mais attention,
   les opérations avec apt-get ne seront donc pas loguées dans /var/log/aptitude !

## Munin

* Commenter toutes les lignes de /etc/apache2/conf.d/munin
* Modifier l'URL de domaine/machine.html vers domaine/machine/index.html
* S'assurer que Munin soit toujours accessible

## Apache

* Pour mod_ssl, il est désormais nécessaire d'avoir des directives SSLxxx dans chaque VH *:443 => il faut donc dupliquer ces directives dans les autres VHs...
* Bien s'assurer de la présence de la variable APACHE_LOG_DIR dans le fichier */etc/apache2/envvars* sous peine d'avoir des erreurs du type :

~~~
Starting web server: apache2Action 'start' failed.
The Apache error log may have more information.
 failed!

[error] (2)No such file or directory: could not open transfer log file /etc/apache2/${APACHE_LOG_DIR}/other_vhosts_access.log.
Unable to open logs
~~~

## PHP

* Le module mhash n'existe plus (intégré dans PHP) : mhash.ini à supprimer donc
* methode goto apparait cf <http://infogerance-linux.net/2012/php-5-2-goto-php-5-3/> 
* Les directives register_long_arrays et magic_quotes_gpc sont désormais deprecated : à voir avec le client si elles peuvent être supprimées.
* Les directives session_is_registered et session_register le sont egalement, elles peuvent cependant être remplacée facilement :

~~~{.php}
// if (!session_is_registered ("variable"))
// est remplacée par 
if (!isset($_SESSION["variable"]))

// session_register("variable");
// est remplacée par
$_SESSION["variable"] == TRUE;
~~~

* possibilité de repasser à PHP5.2 sous Squeeze, cf <http://infogerance-linux.net/2012/downgrader-php53/>
* L'affichage des warnings _PHP Deprecated_ peut être désactivé au niveau du virtualhost :

~~~
# E_ALL & ~E_STRICT & ~E_DEPRECATED
php_admin_value error_reporting 22527 
~~~

## MySQL

* L'option _skip-bdb_ n'existe plus, il faut la retirer du fichier _my.cnf_
* S'assurer que _bind-address_ est bien resté le même (debconf peut reposer la question là-dessus)
* Erreur _ERROR 1577 (HY000) at line 1: Cannot proceed because system tables used by Event Scheduler were found damaged at server start_ : dans ce cas, on peut supprimer la table _event_ qui sera recréée : _drop table mysql.event_ puis _mysql_upgrade --force_. Au pire, voici la table sur une Squeeze :

~~~
CREATE TABLE `event` (
  `db` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
  `name` char(64) NOT NULL DEFAULT '',
  `body` longblob NOT NULL,
  `definer` char(77) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
  `execute_at` datetime DEFAULT NULL,
  `interval_value` int(11) DEFAULT NULL,
  `interval_field` enum('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND') DEFAULT NULL,
  `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `last_executed` datetime DEFAULT NULL,
  `starts` datetime DEFAULT NULL,
  `ends` datetime DEFAULT NULL,
  `status` enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL DEFAULT 'ENABLED',
  `on_completion` enum('DROP','PRESERVE') NOT NULL DEFAULT 'DROP',
  `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') NOT NULL DEFAULT '',
  `comment` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
  `originator` int(10) unsigned NOT NULL,
  `time_zone` char(64) CHARACTER SET latin1 NOT NULL DEFAULT 'SYSTEM',
  `character_set_client` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `collation_connection` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `db_collation` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `body_utf8` longblob,
  PRIMARY KEY (`db`,`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Events';
~~~

* Si il y a des instances MySQL, il faudra forcer le process d'upgrade de la base de données, par exemple : _mysql_upgrade --port=3307_
* ATTENTION, un bug affecte MySQL à partir de 5.1, les noms de bases avec un '-' doivent être évités... car le cache MySQL ne fonctionne pas !!! Voir <http://bugs.mysql.com/bug.php?id=64821> et <http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-9.html>

## SHELL

* Garder bash en shell sur /bin/sh ... sauf être vraimment sûr de soi ! (la question est posée par debconf)
* Attention /bin/false n'est plus listé dans /etc/shells (peut avoir des soucis pour PROFTPD)

## ProFTPD

* Le paquet peut être supprimé dans certains cas particulier

## /etc/fstab

* Upgrade du fstab en UUID : accepter a priori (pas de vrais problèmes rencontrés jusqu'ici...)

## GRUB-2 ou GRUB-PC

* Si celui-ci pose un soucis de type « out of partition »
* Ré-installer grub 1 avec le paquet grub-legacy
* Relancer l'installation à la main, taper grub puis
* root (hd0,0)
* setup (hd0)
* quitter et exécutez update-grub

Si le "demi-passage" à GRUB2 se passe bien, on peut ensuite exécuter (puis rebooter) :

~~~
# upgrade-from-grub-legacy
# rm -f /boot/grub/menu.lst*
~~~

Note : avec Xen, on inversera l'ordre de linux et linux_xen pour avoir :

~~~
# ls /etc/grub.d/
00_header  05_debian_theme  10_linux_xen  20_linux  30_os-prober  40_custom  41_custom  README
~~~

## KERNEL avec GRSEC et GRUB

Lors d'une mise-à-jour du noyau, vous rencontrez une erreur du type :

~~~
Searching for GRUB installation directory ... found: /boot/grub
User postinst hook script [update-grub] exited with value 137
dpkg: error processing linux-image-2.6.26-2-amd64 (--configure):
 subprocess post-installation script returned error exit status 137
Errors were encountered while processing:
 linux-image-2.6.26-2-amd64

# dmesg
PAX: From 192.0.43.10: execution attempt in: <anonymous mapping>, 7cec1c0bc000-7cec1c0d1000 7ffffffea000
PAX: terminating task: /usr/sbin/grub-probe(grub-probe):14743, uid/euid: 0/0, PC: 00007cec1c0cfe98, SP: 00007cec1c0cfe48
PAX: bytes at PC: 41 bb 70 40 40 00 49 ba 90 fe 0c 1c ec 7c 00 00 49 ff e3 00 
PAX: bytes at SP-8: 
grsec: From 192.0.43.10: denied resource overstep by requesting 4096 for RLIMIT_CORE against limit 0 for /usr/sbin/grub-probe[grub-probe:14743] uid/euid:0/0 gid/egid:0/0, parent /usr/sbin/update-grub[update-grub:14742] uid/euid:0/0 gid/egid:0/0
PAX: From 192.0.43.10: execution attempt in: <anonymous mapping>, 74d7be68f000-74d7be6a5000 7ffffffe9000
PAX: terminating task: /usr/sbin/grub-probe(grub-probe):17804, uid/euid: 0/0, PC: 000074d7be6a3ac8, SP: 000074d7be6a3a78
PAX: bytes at PC: 41 bb 70 40 40 00 49 ba c0 3a 6a be d7 74 00 00 49 ff e3 00 
PAX: bytes at SP-8: 
grsec: From 192.0.43.10: denied resource overstep by requesting 4096 for RLIMIT_CORE against limit 0 for /usr/sbin/grub-probe[grub-probe:17804] uid/euid:0/0 gid/egid:0/0, parent /usr/sbin/update-grub[update-grub:17803] uid/euid:0/0 gid/egid:0/0
~~~

Pour résoudre ce soucis :

~~~
# aptitude install paxctl
# paxctl -Cpermxs /usr/sbin/grub-probe
# aptitude upgrade
~~~

Lors d'une mise-à-jour du noyau, vous rencontrez une erreur du type :

~~~
update-initramfs: Generating /boot/initrd.img-2.6.32-5-amd64
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8105e-1.fw for module r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168e-2.fw for module r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168e-1.fw for module r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168d-2.fw for module r8169
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168d-1.fw for module r8169
~~~

Pour résoudre ce soucis ajouter les dépôts contrib et non-free dans le sources.list puis :

~~~
# aptitude install firmware-realtek
update-initramfs -u -k all
~~~

Pour mettre un noyau Linux 3.2 issu des backports, on ajoutera donc au sources.list :

~~~
deb <http://backports.debian.org/debian-backports> squeeze-backports main contrib non-free
~~~

Puis :

~~~
# aptitude install linux-image-3.2.0-0.bpo.1-amd64 linux-base=3.4~bpo60+1 initramfs-tools=0.99~bpo60+1 firmware-bnx2=0.35 firmware-bnx2x=0.35
~~~


## AWStats

* Le fichier _/etc/cron.d/awstats_ pourrait être écrasé sans confirmation : par sécurité, sauvegarder le avant la mise-à-jour si vous l'avez modifié

## Dovecot

Si ce message s'affiche après la mise-à-jour :

~~~
Error in configuration file /etc/dovecot/dovecot.conf line 680: Unknown setting: sieve Fatal: Invalid configuration
~~~

Il faut déplacer les options _sieve=_ et _sieve_storage=_ de la section _protocol managesieve_ vers la section _plugin_

Si c'est ce message :

~~~
Error in configuration file /etc/dovecot/dovecot.conf line 94: Unknown setting: ssl_disable
~~~

Il faut commenter l'option _ssl_disable = no_.


Si c'est ce message :

~~~
Error in configuration file /etc/dovecot/dovecot-ldap.conf line 120: Unknown setting: user_global_uid
~~~

Il faut s'assurer que tous les uids/gids des comptes virtuels soient à 5000/5000 dans ldap (ou en tout cas les même que le compte vmail) et commenter ces lignes.

Enfin, pour un message du type :

~~~
Warning: fd limit 1024 is lower than what Dovecot can use under full load (more than 5696). Either grow the limit or change login_max_processes_count and max_mail_processes settings
~~~

Il faut augmenter le _ulimit -n_ dans /etc/default/dovecot

On a également noté des soucis avec le paramètre _mail_plugins = quota imap_quota_

Si dans le mail.log vous avez pleins de warning sur des type de maildir non trouvé (dbox, cydir), il faut spécifier dans la conf que l'on utilise seulement une maildir : 

~~~
mail_location = maildir:~/Maildir
~~~

Autre contrainte, dans le _dovecot.conf_, changer :

~~~
mail_plugins = cmusieve
~~~

en :

~~~
mail_plugins = sieve
~~~


## Horde

~~~
Fatal error: Call to undefined method PEAR_Error::listFolder() in
~~~

Voir <http://bugs.horde.org/ticket/6359>

## Xen

En passant à un kernel 2.6.32 dans le domU il faut changer sda en xvda (dans le paramètre _root=_ de la config de la VM et dans le fstab du domU)
et dans /etc/inittab du domu, changer _1:2345:respawn:/sbin/getty 38400 tty1_ en _1:2345:respawn:/sbin/getty 38400 hvc0_

## Courier IMAP

Si vous avez une notification du type :

~~~
MAP server information: Filesystem notification initialization error -- contact your mail administrator (check for configuration errors with the FAM/Gamin library)
~~~

Installer le package fam :

~~~
# aptitude install fam
~~~

Attention, on peut théoriquement également installer aussi _gamin_ mais nous avons constaté des performances déplorables
(lenteurs avec des Maildir bien remplis, load élevé, etc.). Voir notamment <http://bugs.debian.org/578937>

Note : installer nscd ou nslcd peut également améliorer les performances, etc.

## Samba

Si LDAPS n'est pas utilisé, il est désormais obligatoire d'ajouter dans le smb.conf :

~~~
ldap ssl = off
~~~

Pour un fonctionnement avec FreeRadius + WINBIND, il faut désormais ajouter l'utilisateur _freerad_
dans le groupe _winbindd_priv_ :

~~~
# adduser freerad winbindd_priv
~~~

Enfin, pour l'authentification NTLM dans le cadre d'une authentification Freeradius+EAP/MSCHAPv2+ntlm_auth :

1. La version 3.5 de Samba ne gère plus l'authentification locale NTLM !!!

On obtient :

~~~
NT_STATUS_INVALID_HANDLE: Invalid handle (0xc0000008)
~~~

Voir <http://bugs.debian.org/612049> et <https://bugzilla.samba.org/show_bug.cgi?id=7481>

Le bug est corrigé dans version 3.6 !

Si besoin, il faut donc passé à la version présente dans wheezy/sid (3.6.3 à ce jour, et pas encore backportée mais cela fonctionne)

2. Mais même en 3.6, l'authentification machine ne fonctionne plus ! On obtient l'erreur :

~~~
NT_STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT (PAM: 9)
~~~

À la lecture du code source de Samba (!), on voit le code suivant :

~~~
        if (acct_ctrl & ACB_WSTRUST) {
                if (!(user_info->logon_parameters & MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT)) {
                        DEBUG(2,("sam_account_ok: Wksta trust account %s denied by server\n", pdb_get_username(sampass)));
                        return NT_STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT;
                }
        }
~~~

C'est apparemment une vérification d'envoi d'un flag lors de l'authentification machine.
En désactivant cette vérification (recompilation d'un paquet Samba sous Sid)... cela fonctionne.
Cela concerne précisément les paquets : samba samba-common samba-common-bin samba-tools winbind libwbclient0

Voir <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=658707> et <https://bugzilla.samba.org/show_bug.cgi?id=8744>

## LDAP

Un cas rencontré où _ldapsearch_ ne fait plus ses requêtes sur 127.0.0.1 par défaut : il a fallu rajouter explicitement _-h 127.0.0.1_

## Postgrey

* Son port d'écoute change du 60000 vers le 10023 ! Il faut donc adapter la configuration de Postfix en conséquence !
* Si Postgrey segfault, il faut supprimer ses données : rm /var/lib/postgrey/* cf <http://ubuntuforums.org/showthread.php?t=1789045>

## PAM_LDAP

Il est conseillé d'utiliser le paquet _libpam-ldapd_ au lieu de _libpam-ldap_... mais si l'on veut mettre à jour l'attribut _shadowLastChange_
via la commande *password*, il faut utiliser _libpam-ldap_ à cause du bug <http://bugs.debian.org/619881>

## Evomaintenance

* Supprimer metche
* cd /etc/ && git init
* Ajouter les directives Git à _evomaintenance.sh_
