Korben nous a parlé récemment de Xplico Petit logiciel bien sympa qui évite le sacrifice de vos yeux sur Wireshark…
Donc je teste la première version, niveau soft y a quelques bugs mais pour la beta 1… Je me dis que je peux largement fermer les yeux ! Mais tout de même je décide de modifier les fichiers pour enlever les bugs les plus génants ou encore pour l’adapter à la config d’apache sur ma bécane. Quelques jours plus tard, ( semaines en réalité ) je décide de tester la dernière version à jour sur le site de Xplico: xplico_0.5.8_i386
Problème ! Ce connard de paquet ne veut pas s’installer puisqu’il a des fichiers manquants… Résultat ?: Impossible de mettre à jour, d’installer ou de désinstaller le moindre paquet sur le système !
Et oui, à chaque fois il retourne un :
<pre>Suppression de xplico ...
invoke-rc.d: unknown initscript, /etc/init.d/xplico not found.
dpkg : erreur de traitement de xplico (--remove) :
le sous-processus script post-removal installé a retourné une erreur de sortie d'état 100
Des erreurs ont été rencontrées pendant l'exécution :
xplico
E: Sub-process /usr/bin/dpkg returned an error code (1)
ou encore un joli:
<pre>Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
E: Le paquet xplico doit être réinstallé, mais il est impossible de trouver son archive.</pre>
voir avec synaptic:
E: Le paquet xplico doit être réinstallé, mais il est impossible de trouver son archive.
E: Erreur interne en recalculant le cache des dépendances (1). Veuillez envoyer un rapport d'anomalie.
Bref, gavant ! Donc je cherche une solution, mais pas grand chose…
En fait si on regarde bien le problème vient d’un script mal formé: le script qui permet de désinstaller l’ancienne version pour y mettre l’upgrade.
Donc la solution serait soit de corriger le script soit de le virer… J’ai choisi la solution de facilité
Bref on prend notre petit paquet: xplico_0.5.8_i386.deb ( en l’occurence pour moi ) on le décompresse, on le modifie puis ont le re packe
Étape 1: Création de l’environnement de travail puis dépaquetage:
!! Attention, je ne suis pas responsable des consequences des lignes suivantes sur votre ordi ! !!
( bon, ça c’est fait, on peu à présent bosser
)
avant tout, on part en root:
sur une debian faite un « su - » suffira et sur une ubuntu un « sudo -s » suffira aussi.
cd ~
mkdir DownXplico
cd DownXplico
mkdir antixplico
mkdir antixplico/DEBIAN
On place le paquet xplico_0.5.8_i386.deb dans le dossier DownXplico qui se trouve dans votre dossier personnel
dpkg-deb -x ./xplico* ./
dpkg-deb -e ./xplico* ./
On a donc décompresser les fichers de Xplico + les scripts d’installation et de désinstallation
ce qui donne:
root@debian-Portable:/home/tristan/Documents/DOWNXplico# dpkg-deb -x ./xplico.deb ./
root@debian-Portable:/home/tristan/Documents/DOWNXplico# ls
etc opt usr xplico.deb
root@debian-Portable:/home/tristan/Documents/DOWNXplico# dpkg-deb -e ./xplico.deb ./
root@debian-Portable:/home/tristan/Documents/DOWNXplico# ls
control etc md5sums opt postinst postrm usr xplico.deb
Étape 2:Modification des scripts de d’install et de désinstall
2 fichiers vont nous intéresser, postinst et postrm. postinst pour post installation postrm pour post remove
On ouvre donc ces deux fichiers avec son éditeur favori, pour moi c’est vim, mais vous pouvez très bien l’ouvrir avec gedit ou kate…
le fichier postinst donne ça:
#!/bin/sh
# postinst script for xplico
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postinst> `configure' <most-recently-configured-version>
# * <old-postinst> `abort-upgrade' <new version>
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
# <new-version>
# * <postinst> `abort-remove'
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
# <failed-install-package> <version> `removing'
# <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
configure)
chmod 777 /opt/xplico
chmod 777 /opt/xplico/xplico.db
chown -R www-data:www-data /opt/xplico/xi
ln -sf /opt/xplico/bin/xplico /sbin/xplico
cp /opt/xplico/script/xplico /etc/init.d/xplico
cp /opt/xplico/script/xplico.rltm.console /etc/init.d/xplico.rltm.console
cp /opt/xplico/cfg/apache_xi /etc/apache2/sites-available/xplico
ln -sf /etc/apache2/sites-available/xplico /etc/apache2/sites-enabled/000-xplico
sed -i '/Listen 9876/ d' /etc/apache2/ports.conf
echo "Listen 9876" >> /etc/apache2/ports.conf
a2enmod php5
a2enmod rewrite
apache2ctl restart
invoke-rc.d xplico start
;;
abort-upgrade|abort-remove|abort-deconfigure)
invoke-rc.d xplico stop
sed -i '/Listen 9876/ d' /etc/apache2/ports.conf
apache2ctl restart
rm -f /etc/apache2/sites-available/xplico /etc/apache2/sites-enabled/000-xplico
rm /etc/init.d/xplico
rm -Rf /opt/xplico
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
exit 0#!/bin/sh
# postinst script for xplico
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postinst> `configure' <most-recently-configured-version>
# * <old-postinst> `abort-upgrade' <new version>
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
# <new-version>
# * <postinst> `abort-remove'
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
# <failed-install-package> <version> `removing'
# <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
configure)
chmod 777 /opt/xplico
chmod 777 /opt/xplico/xplico.db
chown -R www-data:www-data /opt/xplico/xi
ln -sf /opt/xplico/bin/xplico /sbin/xplico
cp /opt/xplico/script/xplico /etc/init.d/xplico
cp /opt/xplico/script/xplico.rltm.console /etc/init.d/xplico.rltm.console
cp /opt/xplico/cfg/apache_xi /etc/apache2/sites-available/xplico
ln -sf /etc/apache2/sites-available/xplico /etc/apache2/sites-enabled/000-xplico
sed -i '/Listen 9876/ d' /etc/apache2/ports.conf
echo "Listen 9876" >> /etc/apache2/ports.conf
a2enmod php5
a2enmod rewrite
apache2ctl restart
invoke-rc.d xplico start
;;
abort-upgrade|abort-remove|abort-deconfigure)
invoke-rc.d xplico stop
sed -i '/Listen 9876/ d' /etc/apache2/ports.conf
apache2ctl restart
rm -f /etc/apache2/sites-available/xplico /etc/apache2/sites-enabled/000-xplico
rm /etc/init.d/xplico
rm -Rf /opt/xplico
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
exit 0
modifiez le en ça:
#!/bin/sh
# postinst script for xplico
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postinst> `configure' <most-recently-configured-version>
# * <old-postinst> `abort-upgrade' <new version>
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
# <new-version>
# * <postinst> `abort-remove'
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
# <failed-install-package> <version> `removing'
# <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
configure)
chmod 777 /opt/xplico
chmod 777 /opt/xplico/xplico.db
chown -R www-data:www-data /opt/xplico/xi
ln -sf /opt/xplico/bin/xplico /sbin/xplico
cp /opt/xplico/script/xplico /etc/init.d/xplico
cp /opt/xplico/script/xplico.rltm.console /etc/init.d/xplico.rltm.console
cp /opt/xplico/cfg/apache_xi /etc/apache2/sites-available/xplico
ln -sf /etc/apache2/sites-available/xplico /etc/apache2/sites-enabled/000-xplico
sed -i '/Listen 9876/ d' /etc/apache2/ports.conf
echo "Listen 9876" >> /etc/apache2/ports.conf
a2enmod php5
a2enmod rewrite
apache2ctl restart
invoke-rc.d xplico start
;;
abort-upgrade|abort-remove|abort-deconfigure)
echo "Fuck Xplico !"
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 0
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
exit 0
On a donc enlevé le code qui désinstalle puis même en cas de problème, le script renvoie un code d’erreur positif au system ( Ce qui signifie que tout c’est bien passé… )
puis on fait de même avec postrm, on remplace ça:
#!/bin/sh
# postrm script for xplico
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postrm> `remove'
# * <postrm> `purge'
# * <old-postrm> `upgrade' <new-version>
# * <new-postrm> `failed-upgrade' <old-version>
# * <new-postrm> `abort-install'
# * <new-postrm> `abort-install' <old-version>
# * <new-postrm> `abort-upgrade' <old-version>
# * <disappearer's-postrm> `disappear' <overwriter>
# <overwriter-version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
invoke-rc.d xplico stop
rm -f /etc/apache2/sites-available/xplico /etc/apache2/sites-enabled/000-xplico
sed -i '/Listen 9876/ d' /etc/apache2/ports.conf
apache2ctl restart
rm /sbin/xplico
rm /etc/init.d/xplico
rm /etc/init.d/xplico.rltm.console
rm -rf /opt/xplico
;;
*)
echo "postrm called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
exit 0
par cela:
#!/bin/sh
# postrm script for xplico
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postrm> `remove'
# * <postrm> `purge'
# * <old-postrm> `upgrade' <new-version>
# * <new-postrm> `failed-upgrade' <old-version>
# * <new-postrm> `abort-install'
# * <new-postrm> `abort-install' <old-version>
# * <new-postrm> `abort-upgrade' <old-version>
# * <disappearer's-postrm> `disappear' <overwriter>
# <overwriter-version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
echo "Fuck xPlico !"
;;
*)
echo "postrm called with unknown argument \`$1'" >&2
exit 0
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
exit 0
Là, on a fait exactement la même chose que pour postinst.
Étape 3:Recompilation du paquet !
Bien, a présent que tous les ingredients sont fin prêt, nous allons pouvoir les réunir dans la marmite !
cp postrm ./antixplico/DEBIAN
cp postinst ./antixplico/DEBIAN
cp control ./antixplico/DEBIAN
cp -rf usr/ etc/ opt/ ./antixplico/
dpkg-deb -b ./antixplico
Et nous voila avec un beau antixplico.deb !
Étape 4:Désinstallation de Xplico
Bien ! A présent, faisons déguster notre cadeau empoisonné a l’ordi:
apt-get clean
dpkg -i ./antixplico.deb
Là normalement tout va bien, il nous retourne juste une erreur avec un message subliminal …
puis la désinstallation :
apt-get remove xplico
Là aussi, tout se passe bien ( Enfin normalement
)
Problème ? Bah oui ! Tout les fichiers de Xplico sont toujours dans la bécane, donc on réinstalle xplico depuis son paquet original
Puis on le désinstalle avec un beau apt-get remove xplico !
Et voila ! Vous pouvez de nouveau avoir la joie, non que dis-je, la jouissance que d’utiliser un gestionnaire de paquets tel que apt-get vous qui depuis trois semaine se font chier à compiler CHAQUE librairie et dépendance de CHAQUE programme que vous installer UNE PAR UNE !
( Enfin, vous comprenez le pourquoi du comment ma rage envers ce programme
)
Commentaires récents