Hi!
Ich habe hier ein spec-file das sich zu meiner großen verwunderung bei dem Befehl "update" anders verhält als bei dem Befehl "reinstalle".
Es gibt ein Verzeichnis /srv/www/magento/ in der PHP-Fils liegen. Nach dem Update solle ein weiteres Verzeichnis /srv/www/order_export/ hinzukommen.
Mache ich in "update" wird ein /srv/www/order_export/ angelegt aber das Verzeichnis /srv/www/magento/ komplett gelöscht. Mache ich ein "reinstall" sind beide Verzeichnisse korrekt da.
Ich kann mir das Verhalten überhaupt nicht erklären. Hier ein Auszug aus der spec:
%install mkdir -p $RPM_BUILD_ROOT/srv/www cd $RPM_BUILD_ROOT/srv/www wget -c http://www.magentocommerce.com/downloads/assets/1.7.0.2/magento-1.7.0.2.tar.... ls -lah ./ tar -xvzf ./magento-1.7.0.2.tar.gz mkdir -p $RPM_BUILD_ROOT/srv/www/order_export/ mkdir -p $RPM_BUILD_ROOT/srv/www/magento/media mkdir -p $RPM_BUILD_ROOT/srv/www/magento/var mkdir -p $RPM_BUILD_ROOT/srv/www/magento/app/etc mkdir -p $RPM_BUILD_ROOT/srv/www/magento/media/remote/cache/
#useradd magentoadmin #usermod -G apache magentoadmin rm ./magento-1.7.0.2.tar.gz
%files %dir %attr(770, apache, apache) /srv/www/order_export/ %dir %attr(770, apache, apache) /srv/www/magento/ %attr(770, apache, apache) /srv/www/magento/.htaccess %attr(770, apache, apache) /srv/www/magento/.htaccess.sample %attr(770, apache, apache) /srv/www/magento/LICENSE.html %attr(770, apache, apache) /srv/www/magento/LICENSE.txt %attr(770, apache, apache) /srv/www/magento/LICENSE_AFL.txt %attr(770, apache, apache) /srv/www/magento/api.php %dir %attr(770, apache, apache) /srv/www/magento/app/ %attr(770, apache, apache) /srv/www/magento/app/.htaccess %attr(770, apache, apache) /srv/www/magento/app/code/ %attr(770, apache, apache) /srv/www/magento/app/design/ %config %attr(770, apache, apache) /srv/www/magento/app/etc/ %attr(770, apache, apache) /srv/www/magento/app/locale/ %attr(770, apache, apache) /srv/www/magento/app/Mage.php %attr(770, apache, apache) /srv/www/magento/cron.php %attr(770, apache, apache) /srv/www/magento/cron.sh %attr(770, apache, apache) /srv/www/magento/downloader/ %attr(770, apache, apache) /srv/www/magento/errors/ %attr(770, apache, apache) /srv/www/magento/favicon.ico %attr(770, apache, apache) /srv/www/magento/get.php %attr(770, apache, apache) /srv/www/magento/includes/ %attr(770, apache, apache) /srv/www/magento/index.php %attr(770, apache, apache) /srv/www/magento/index.php.sample %attr(770, apache, apache) /srv/www/magento/install.php %attr(770, apache, apache) /srv/www/magento/js/ %attr(770, apache, apache) /srv/www/magento/lib/ %attr(770, apache, apache) /srv/www/magento/mage %dir %attr(770, apache, apache) /srv/www/magento/media/ %dir %attr(770, apache, apache) /srv/www/magento/media/remote/ %dir %attr(770, apache, apache) /srv/www/magento/media/remote/cache/ %attr(770, apache, apache) /srv/www/magento/media/.htaccess %attr(770, apache, apache) /srv/www/magento/media/customer/.htaccess %attr(770, apache, apache) /srv/www/magento/media/dhl/logo.jpg %attr(770, apache, apache) /srv/www/magento/media/downloadable/.htaccess %attr(770, apache, apache) /srv/www/magento/media/xmlconnect/custom/ok.gif %attr(770, apache, apache) /srv/www/magento/media/xmlconnect/original/ok.gif %attr(770, apache, apache) /srv/www/magento/media/xmlconnect/system/ok.gif %attr(770, apache, apache) /srv/www/magento/php.ini.sample %attr(770, apache, apache) /srv/www/magento/pkginfo/ %attr(770, apache, apache) /srv/www/magento/shell/ %attr(770, apache, apache) /srv/www/magento/skin/ %attr(770, apache, apache) /srv/www/magento/var/ %attr(770, apache, apache) /srv/www/magento/RELEASE_NOTES.txt
Irgend welche Ideen??
Gruß
Olaf
-------------------|-------------------|-------------------|-------------------|
Olaf Radicke wrote:
Hi!
Ich habe hier ein spec-file das sich zu meiner großen verwunderung bei dem Befehl "update" anders verhält als bei dem Befehl "reinstalle". Ich kann mir das Verhalten überhaupt nicht erklären. Hier ein Auszug aus der spec:
Die Skripte wären interessanter: "rpm -q --scripts magento" (oder wie auch immer das Paket heißt).
%preun und %postun sind die interessanten: Reinstall führt nur %post und %pre aus, ein update installiert zuerst das neue Paket und macht dann uninstall von der alten Version - inklusive Ausführung der Skripte.
Ralph
Hi!
Ralph Angenendt ralph+fedora@strg-alt-entf.org hat am 14. Januar 2014 um 17:11 geschrieben:
Olaf Radicke wrote:
Hi!
Ich habe hier ein spec-file das sich zu meiner großen verwunderung bei dem Befehl "update" anders verhält als bei dem Befehl "reinstalle". Ich kann mir das Verhalten überhaupt nicht erklären. Hier ein Auszug aus der spec:
Die Skripte wären interessanter: "rpm -q --scripts magento" (oder wie auch immer das Paket heißt).
%preun und %postun sind die interessanten: Reinstall führt nur %post und %pre aus, ein update installiert zuerst das neue Paket und macht dann uninstall von der alten Version - inklusive Ausführung der Skripte.
Ich habe noch ein mal in ruhe darüber nachgedacht und etwas herumprobiert. Ich glaube es ist ein Logischer Fehler. In der _noch_ installierten Version ist ein fehlerhaftes %postun-Script. Das Update mit der der Fehlerbereinigten Version verhindert aber - vermutlich - nicht, das das %postun-Script der deinstallierten Version noch ausgeführt wird. YUM hat kein Flag "--noscripts" das ist dass Dilemma dabei. Ich werde es am Donnerstag mal lowlevel mit "rpm -U --noscripts xxx-xxx-x.rpm" probieren die "Tretmiene" nicht hochgehen zu lassen.
Gruß
Olaf
Olaf Radicke briefkasten@olaf-radicke.de hat am 14. Januar 2014 um 17:03 geschrieben: Ich habe hier ein spec-file das sich zu meiner großen verwunderung bei dem Befehl "update" anders verhält als bei dem Befehl "reinstalle".
Es gibt ein Verzeichnis /srv/www/magento/ in der PHP-Fils liegen. Nach dem Update solle ein weiteres Verzeichnis /srv/www/order_export/ hinzukommen.
Mache ich in "update" wird ein /srv/www/order_export/ angelegt aber das Verzeichnis /srv/www/magento/ komplett gelöscht. Mache ich ein "reinstall" sind beide Verzeichnisse korrekt da.
Es ist so wir ich vermutet habe: Das fehlerhafte RPM hat ein %postun-Skript das bei der Deinstallation das Verzeichnis löscht. Die einzige Möglichkeit das Paketupdate einzuspielen ohne die "Sprengfalle" auszulösen, ist mit
rpm -U --noscripts xxx-xxx.noarch.rpm
Gruß
Olaf
-------------------|-------------------|-------------------|-------------------|
On Mon, 20 Jan 2014 00:06:28 +0100 (CET), Olaf Radicke wrote:
Es ist so wir ich vermutet habe: Das fehlerhafte RPM hat ein %postun-Skript das bei der Deinstallation das Verzeichnis löscht. Die einzige Möglichkeit das Paketupdate einzuspielen ohne die "Sprengfalle" auszulösen, ist mit
rpm -U --noscripts xxx-xxx.noarch.rpm
Ob es die "einzige Möglichkeit" ist, ist fraglich. Ggf. könntest Du das Verzeichnis im Update Paket über %triggerprein und %triggerpostun sichern und wiederherstellen. Siehe /usr/share/doc/rpm/triggers
de-users@lists.fedoraproject.org