Bugzilla will be upgraded to version 5.0 on a still to be determined date in the near future. The original upgrade date has been delayed.
Bug 79094 - rpm -e silently fails, yet still modifies the db
rpm -e silently fails, yet still modifies the db
Product: Red Hat Linux
Classification: Retired
Component: rpm (Show other bugs)
i386 Linux
medium Severity medium
: ---
: ---
Assigned To: Jeff Johnson
: FutureFeature
Depends On:
  Show dependency treegraph
Reported: 2002-12-05 11:50 EST by Chris Ricker
Modified: 2007-04-18 12:48 EDT (History)
1 user (show)

See Also:
Fixed In Version:
Doc Type: Enhancement
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2002-12-06 12:27:39 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Chris Ricker 2002-12-05 11:50:28 EST
On my servers, I typically have most partitions mounted read-only. On one server
here, I uninstalled a bunch of rpms w/o remembering to remount /usr and /boot r/w.

The rpm commands removed packages from the rpm db, yet left the files on the
system (since the filesystems were mounted read-only), but silently failed to
let me know that packages were failing to uninstall

[root@hanuman root]# rpm -e pine
[root@hanuman root]# rpm -e arpwatch ash
[root@hanuman root]# rpm -e hesiod lha
[root@hanuman root]# rpm -e nasm nss_ldap open pax pdksh postgresql
postgresql-libs postgresql-server                       
warning: /etc/ldap.conf saved as /etc/ldap.conf.rpmsave
/usr/share/info/dir: Read-only file system
error: %preun(nasm-0.98.34-1) scriptlet failed, exit status 1
[root@hanuman root]# mount
/dev/hda6 on / type ext3 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/hda1 on /boot type ext3 (ro)
none on /dev/pts type devpts (rw,gid=5,mode=620)
none on /dev/shm type tmpfs (rw)
/dev/hda5 on /tmp type ext3 (rw,noexec,nosuid,nodev)
/dev/hda3 on /usr type ext3 (ro)
[root@hanuman root]# rpm -q pine
package pine is not installed
[root@hanuman root]# /usr/bin/pin<tab>
pine                pinegpg-install     pinky
pine-spellcheck     pinepgpgpg-install  
pinegpg             pinfo               
[root@hanuman root]#             

At a minimum, I'd expect the rpm command to give me some sort of error when it
fails to remove the files....
Comment 1 Jeff Johnson 2002-12-06 12:04:31 EST
rpm does provide error messages, but only if -vv
is supplied. The rationale is that many packages
don't supply sufficient dependency information
to order sufficiently correctly that a directory
is removed iff empty.

Configure %_netsharedpath if you wannt to use
rpm with R/O mounts. It's not at all clear what
should be done in this case, the current behavior,
removing the package header w/o removing the file
is arguably as good as any other behavior.
Comment 2 Chris Ricker 2002-12-06 12:27:28 EST
Hmm, let me reword this. The bigger problem here is that the failed rpm -e
commands silently left the system in a completely inconsistent state. rpm -e

* removed the packages from the databases
* removed some of the files from the system for those packages, but not others

Shouldn't rpm be handling rpm -e as a transaction (ie, remove files and rpm
database entries iff both can be done successfully, and if both can't be done,
exit)? Now that rpm has rollback support, this should be possible to implement....

Re-opening as an RFE -- feel free to close if you don't think that makes sense....
Comment 3 Jeff Johnson 2002-12-06 12:30:07 EST
Sure this is needed, but packaging won't support yet,
hence not bothering the user needlessly with an error message.

Note You need to log in before you can comment on or make changes to this bug.