FS#42891 - [pacman-git][pacman-db-upgrade] fails to upgrade database

Attached to Project: Pacman
Opened by wtf (oi_wtf) - Monday, 24 November 2014, 10:48 GMT
Last edited by Allan McRae (Allan) - Thursday, 27 November 2014, 01:13 GMT
Task Type Bug Report
Category Scripts & Tools
Status Closed
Assigned To Allan McRae (Allan)
Architecture All
Severity Critical
Priority Immediate
Reported Version git
Due in Version 4.2.0
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Summary and Info:
pacman-db-upgrade fails with the following error message:

root@bplap:~ # LC_ALL=C pacman-db-upgrade
/usr/sbin/pacman-db-upgrade: line 367: /usr/sbin/find: Argument list too long

the database was not upgraded successfully:
# LC_ALL=C pacman -Sy :(
error: no usable package repositories configured.


Steps to Reproduce:
- have pacman 4.1.2-7 installed
- install pacman-git 4.1.2.506.g41c8263-1

now you have to upgrade the pacman DB, so:
- run pacman-db-upgrade


Additional information:
I think it's got something to do with too many dirs or files in the db, so here's:
# pacman -Qq | wc -l
2241

I also checked if the argument length has an unreasonable short, but this seems ok:
# getconf ARG_MAX
2097152
This task depends upon

Closed by  Allan McRae (Allan)
Thursday, 27 November 2014, 01:13 GMT
Reason for closing:  Fixed
Additional comments about closing:  git commit ed4032a9
Comment by Allan McRae (Allan) - Monday, 24 November 2014, 10:59 GMT
# LC_ALL=C pacman -Sy
error: no usable package repositories configured.

That seems unrelated to your pacman-db-upgrade failing.

Edit: if you did not compile with "--sysconfdir=/etc", pacman will be looking elsewhere.
Comment by wtf (oi_wtf) - Monday, 24 November 2014, 11:44 GMT
I did compile with "--sysconfdir=/etc/", but you were right, it was unrelated.
I forgot to restore my original pacman.conf after upgrading to pacman-git,
so a simple 'mv /etc/pacman.conf{.pacsave,}' did the trick.

pacman-db-upgrade still fails, though.
Comment by Allan McRae (Allan) - Monday, 24 November 2014, 11:48 GMT
The find is taking all directories in your system (managed by pacman) and testing if they are symlinks. None of the developers systems found the bug... We are working on a fix.

Loading...