FS#17006 - [Pacman] pacman -Up <archive> fails

Attached to Project: Pacman
Opened by Hugo (Citral) - Wednesday, 04 November 2009, 15:51 GMT
Last edited by Dan McGee (toofishes) - Sunday, 16 May 2010, 13:36 GMT
Task Type Bug Report
Category System
Status Closed
Assigned To No-one
Architecture All
Severity High
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 1
Private No

Details

Description:

Whenever I run pacman -Up on a proper archive, it fails with this error (example here is Eclim):

$ sudo pacman -Up eclim-1.5.2-1-i686.pkg.tar.gz
loading package data...
checking dependencies...
(1/1) checking for file conflicts [---------------------] 100%
error: failed to commit transaction (transaction commit attempt when database is not locked)

The archive is not relevant, it happens with all kinds of archives. What does work is placing my packages in /var/cache/pacman and editing the MD5sums in /var/lib/pacman and then installing with pacman -S.

Additional info:
$ /usr/bin/pacman --version
Pacman v3.3.2 - libalpm v4.0.2



Debug run:
$ sudo /usr/bin/pacman --debug --verbose -Up eclim-1.5.2-1-i686.pkg.tar.gz
debug: config: attempting to read file /etc/pacman.conf
debug: config: new section 'options'
debug: config: chomp
debug: config: HoldPkg: quodlibet-plugins
debug: config: SyncFirst: pacman
debug: config: new section 'core'
debug: setlibpaths() called
debug: option 'cachedir' = /var/cache/pacman/pkg/
debug: registering sync database 'core'
debug: adding new server URL to database 'core': ftp://ftp.surfnet.nl/pub/os/Linux/distr/archlinux/core/os/i686
debug: config: including /etc/pacman.d/mirrorlist
debug: config: attempting to read file /etc/pacman.d/mirrorlist
debug: adding new server URL to database 'core': ftp://mirror.leaseweb.com/archlinux/core/os/i686
debug: adding new server URL to database 'core': http://mirror.leaseweb.com/archlinux/core/os/i686
debug: adding new server URL to database 'core': ftp://ftp.nluug.nl/pub/metalab/distributions/archlinux/core/os/i686
debug: adding new server URL to database 'core': http://ftp.nluug.nl/pub/metalab/distributions/archlinux/core/os/i686
debug: adding new server URL to database 'core': ftp://ftp.surfnet.nl/pub/os/Linux/distr/archlinux/core/os/i686
debug: adding new server URL to database 'core': http://ftp.surfnet.nl/pub/os/Linux/distr/archlinux/core/os/i686
debug: config: finished parsing /etc/pacman.d/mirrorlist
debug: config: new section 'extra'
debug: registering sync database 'extra'
debug: adding new server URL to database 'extra': ftp://ftp.surfnet.nl/pub/os/Linux/distr/archlinux/extra/os/i686
debug: config: including /etc/pacman.d/mirrorlist
debug: config: attempting to read file /etc/pacman.d/mirrorlist
debug: adding new server URL to database 'extra': ftp://mirror.leaseweb.com/archlinux/extra/os/i686
debug: adding new server URL to database 'extra': http://mirror.leaseweb.com/archlinux/extra/os/i686
debug: adding new server URL to database 'extra': ftp://ftp.nluug.nl/pub/metalab/distributions/archlinux/extra/os/i686
debug: adding new server URL to database 'extra': http://ftp.nluug.nl/pub/metalab/distributions/archlinux/extra/os/i686
debug: adding new server URL to database 'extra': ftp://ftp.surfnet.nl/pub/os/Linux/distr/archlinux/extra/os/i686
debug: adding new server URL to database 'extra': http://ftp.surfnet.nl/pub/os/Linux/distr/archlinux/extra/os/i686
debug: config: finished parsing /etc/pacman.d/mirrorlist
debug: config: new section 'community'
debug: registering sync database 'community'
debug: adding new server URL to database 'community': ftp://ftp.surfnet.nl/pub/os/Linux/distr/archlinux/community/os/i686
debug: config: including /etc/pacman.d/mirrorlist
debug: config: attempting to read file /etc/pacman.d/mirrorlist
debug: adding new server URL to database 'community': ftp://mirror.leaseweb.com/archlinux/community/os/i686
debug: adding new server URL to database 'community': http://mirror.leaseweb.com/archlinux/community/os/i686
debug: adding new server URL to database 'community': ftp://ftp.nluug.nl/pub/metalab/distributions/archlinux/community/os/i686
debug: adding new server URL to database 'community': http://ftp.nluug.nl/pub/metalab/distributions/archlinux/community/os/i686
debug: adding new server URL to database 'community': ftp://ftp.surfnet.nl/pub/os/Linux/distr/archlinux/community/os/i686
debug: adding new server URL to database 'community': http://ftp.surfnet.nl/pub/os/Linux/distr/archlinux/community/os/i686
debug: config: finished parsing /etc/pacman.d/mirrorlist
debug: config: new section 'archlinuxfr'
debug: registering sync database 'archlinuxfr'
debug: adding new server URL to database 'archlinuxfr': http://repo.archlinux.fr/i686
debug: config: finished parsing /etc/pacman.conf
Root : /
Conf File : /etc/pacman.conf
DB Path : /var/lib/pacman/
Cache Dirs: /var/cache/pacman/pkg/
Lock File : /var/lib/pacman/db.lck
Log File : /var/log/pacman.log
Targets : eclim-1.5.2-1-i686.pkg.tar.gz
debug: registering local database
loading package data...
debug: loading target 'eclim-1.5.2-1-i686.pkg.tar.gz'
debug: sorting package filelist for eclim-1.5.2-1-i686.pkg.tar.gz
checking dependencies...
debug: looking for unsatisfied dependencies
debug: loading package cache for repository 'local'
debug: checkdeps: package eclim-1.5.2-1
debug: looking for conflicts
debug: check targets vs targets
debug: check targets vs db
debug: check db vs targets
debug: sorting by dependencies
debug: started sorting dependencies
debug: sorting dependencies finished
checking for file conflicts...
debug: looking for file conflicts
debug: searching for file conflicts: eclim
debug: searching for filesystem conflicts: eclim
debug: returning error 26 from alpm_trans_commit : transaction commit attempt when database is not locked
error: failed to commit transaction (transaction commit attempt when database is not locked)
debug: unregistering database 'local'
debug: freeing package cache for repository 'local'
debug: unregistering database 'core'
debug: unregistering database 'extra'
debug: unregistering database 'community'
debug: unregistering database 'archlinuxfr'

This task depends upon

Closed by  Dan McGee (toofishes)
Sunday, 16 May 2010, 13:36 GMT
Reason for closing:  Fixed
Additional comments about closing:  Working better now than it used to.
Comment by Jan de Groot (JGC) - Wednesday, 04 November 2009, 15:56 GMT
What's the purpose of pacman -Up btw? I can find two examples of -p usage in the pacman manpage, one to print URLs for pacman -S, and one to use pacman -Q operations on a package file. I think -Up is an unsupported codepath and pacman should error out in such a case.
Comment by Xavier (shining) - Wednesday, 04 November 2009, 20:54 GMT
Indeed -Up is an unsupported codepath.

I actually realized that when writing my long standing patch to rewrite the --print function and generalize it to all operations. But I think Dan never reviewed it.
Comment by Hugo (Citral) - Thursday, 05 November 2009, 19:04 GMT
Aha, I was used to using pacman -Up and didn't know it was changed to -U.

Erroring out is indeed the right solution I suppose.
Comment by Xavier (shining) - Thursday, 05 November 2009, 19:37 GMT
The amount of stupid / nonsensical option combination you can do is quite big.
I am not sure it is worth trying to capture them.

Anyway, as I already said, I have a patch that would make all this irrelevant. :)
Comment by Dan McGee (toofishes) - Sunday, 28 March 2010, 22:08 GMT
What is the status on this now?

$ ./src/pacman/pacman -Up /home/makepkg/packages/django-south-0.7-1-any.pkg.tar.xz
/home/makepkg/packages/django-south-0.7-1-any.pkg.tar.xz

That seems reasonable I guess, given our new description of the option, but it does look a bit odd.
Comment by Xavier (shining) - Sunday, 28 March 2010, 22:15 GMT
I am fine with removing -p for -U (and -R) if that's better.

Here is an extract from an old pacman-dev ML discussion between me and Xyne :
"""""""""""""""""
me:
> Does it make any sense to have this for -R and -U operations ? I
> implemented that but I don't really see any utility so I wanted to
> drop it.
xyne:
I think it makes sense for -R at the moment. It would also make sense
for -U if -U could handle dependency resolution. If you have working
code then I think you should just leave it in for now as it will be
good to have later.
"""""""""""""""""
Comment by Nagy Gabor (combo) - Saturday, 15 May 2010, 23:12 GMT
I am fine with the current behavior (I agree with Xyne here), so I think we can close this bug as fixed.

Loading...