[pacman-dev] Checking free space before transaction
Allan McRae
allan at archlinux.org
Wed Nov 10 04:47:52 CET 2010
Hi,
I have implemented some basic disk space checking in pacman. The code
is still a bit rough and there are some TODOs in there (especially
related to output). But the basics are all there, so it seems time to
get some comments.
See my diskspace branch:
http://projects.archlinux.org/users/allan/pacman.git/log/?h=diskspace
Obviously I need to do some rebasing there, so it is probably easiest to
look at the diff between that and my working branch:
http://projects.archlinux.org/users/allan/pacman.git/diff/?h=diskspace&id2=working
Here are some basic examples of what is implemented so far:
> sudo src/pacman/pacman -S grub --dbpath /home/allan/tmp/db/
...
(1/1) checking for file conflicts
[######################] 100%
Partition: /
- blocks needed: 112
- blocks free: 2635828
Partition: /boot
- blocks needed: 1
- blocks free: 109046
(1/1) installing grub
[######################] 100%
> sudo src/pacman/pacman -S grub --dbpath /home/allan/tmp/db/
...
(1/1) checking for file conflicts
[######################] 100%
Partition: /
- blocks needed: 0
- blocks free: 2635684
Partition: /boot
- blocks needed: 0
- blocks free: 109044
(1/1) upgrading grub
[######################] 100%
It also handles the space freed by removing conflicts etc.
Obviously the space calculations could be improved, e.g.
- for /boot on installing grub, the /boot/grub directory should
require a block in addition to the one used by the menu.lst file
- directories get counted for removal even when they are not being
removed... and that multiplies across packages
- .PKGINFO etc count towards / (rather than to dbpath ???)
- space for .pacnew/.pacsave files is ignored
But it is close enough... In its current form the calculations should
catch major stupidity.
Allan
More information about the pacman-dev
mailing list