[pacman-dev] Orphaning files in the filesystem after unsuccessful pacman -R
Allan McRae
allan at archlinux.org
Wed Jan 22 07:22:06 EST 2014
On 22/01/14 06:01, Nagy Gabor wrote:
>> Hello,
>>
>> It seems I found a bug in pacman. Some information first:
>> version: pacman 4.1.2-5 prebuilt from official repo
>> system: Linux 3.12.7-2-ARCH i686
>>
>> So it happened when I tried to remove alex package.
>>
>> $ sudo pacman -R alex
>> [sudo] password for michael:
>> checking dependencies...
>>
>> Packages (1): alex-3.1.3-1
>>
>> Total Removed Size: 1.18 MiB
>>
>> :: Do you want to remove these packages? [Y/n] y
>> error: cannot remove file '/usr/': Read-only file system
>> ldconfig: Can't create temporary cache file /etc/ld.so.cache~:
>> Read-only file system
>> error: command failed to execute correctly
>>
>> Uhm... I forgot I have root filesystem mounted read-only. No problem.
>>
>> $ sudo mount / -o remount,rw
>> $ sudo pacman -R alex
>> error: target not found: alex
>>
>> What? How could pacman remove the package from a read-only filesystem?
>
> Well, pacman just removed the database entry (from the
> writeable /var/lib/pacman/)...
> This behaviour is clearly odd here, but it is not easy to say what is
> the expected behaviour in general, for example, what should we do when
> only ONE file cannot be removed? AFAIK, pacman cannot "undo"
> transaction after it has been started atm (transaction rollback is not
> implemented), so the only options are "pre-remove check" or stop.
>
> Theoretically, pacman should collect "file foo has become untracked due
> to a removal error" somehow (for example, we could rename the package to
> alex-garbage in the database, keeping the non-removed files in its
> filelist), but that would definitely violate KISS and it would be not so
> easy to implement (directories are also listed in the filelist of a
> package, possible conflicts of garbage packages, etc.).
>
> I cannot see a clean "filesystem check" solution neither.
>
I can... we already check if a filesystem is read-only during an
install/upgrade (with the DiskSpace option).
I think it would be quite simple to add a check before any package
removal starts.
I have opened a bug to track this:
https://bugs.archlinux.org/task/38615
Allan
More information about the pacman-dev
mailing list