Bug 245292

Summary: ports-mgmt/pkg-1.14.0 fails pkg install
Product: Ports & Packages Reporter: Simeon Simeonov <sgs>
Component: Individual Port(s)Assignee: freebsd-pkg (Nobody) <pkg>
Status: Closed FIXED    
Severity: Affects Some People CC: andrew.hotlab, lwhsu, marcarianalexandru, peter.larsen, pi
Priority: ---    
Version: Latest   
Hardware: amd64   
OS: Any   
Attachments:
Description Flags
pkg info -af > pkg_info.txt none

Description Simeon Simeonov 2020-04-02 19:08:42 UTC
Created attachment 212988 [details]
pkg info -af > pkg_info.txt

pkg-1.14.0 fails to install packages from a custom repo with:

root@HeepBOX:/var/db/pkg # pkg -d install -y duplicity
DBG(1)[1258]> pkg initialized
Updating pkg.pichove.org repository catalogue...
DBG(1)[1258]> PkgRepo: verifying update for pkg.pichove.org
DBG(1)[1258]> Pkgrepo, begin update of '/var/db/pkg/repo-pkg.pichove.org.sqlite'
DBG(1)[1258]> Fetch: fetching from: http://pkg.pichove.org/FreeBSD/FreeBSD:12:amd64/latest/meta.conf with opts "i"
DBG(1)[1258]> Fetch: fetching from: http://pkg.pichove.org/FreeBSD/FreeBSD:12:amd64/latest/meta.txz with opts "i"
DBG(1)[1258]> Fetch: fetching from: http://pkg.pichove.org/FreeBSD/FreeBSD:12:amd64/latest/packagesite.txz with opts "i"
pkg.pichove.org repository is up to date.
All repositories are up to date.
DBG(1)[1258]> want to get an advisory lock on a database
The following 2 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
	duplicity: 0.8.12_1
	librsync: 2.2.1

Number of packages to be installed: 2

The process will require 3 MiB more space.
581 KiB to be downloaded.
DBG(1)[1258]> Fetch: fetching from: http://pkg.pichove.org/FreeBSD/FreeBSD:12:amd64/latest/All/duplicity-0.8.12_1.txz with opts "i"
DBG(1)[1258]> release an advisory lock on a database


The same thing happens when trying to add other packages from the repo.

When simply copying the packages from the repo:
pkg install librsync-2.2.1.txz
and then
pkg install duplicity-0.8.12_1.txz
works.
Comment 1 Kurt Jaeger freebsd_committer freebsd_triage 2020-04-03 07:04:16 UTC
Should be fixed in 1.14.1, please check.
Comment 2 Simeon Simeonov 2020-04-03 09:37:52 UTC
Hi and thank you for responding.

I recreated the entire repo with 1.14.1: pkg create -a

then on the "client", I first installed 1.14.1 directly from the .txz package.

Unfortunately installing fails in a similar way:

root@HeepBOX:~ # pkg -d install -y curl
DBG(1)[2836]> pkg initialized
Updating pkg.pichove.org repository catalogue...
DBG(1)[2836]> PkgRepo: verifying update for pkg.pichove.org
DBG(1)[2836]> Pkgrepo, begin update of '/var/db/pkg/repo-pkg.pichove.org.sqlite'
DBG(1)[2836]> Fetch: fetching from: http://pkg.pichove.org/FreeBSD/FreeBSD:12:amd64/latest/meta.conf with opts "i"
DBG(1)[2836]> Fetch: fetching from: http://pkg.pichove.org/FreeBSD/FreeBSD:12:amd64/latest/meta.txz with opts "i"
DBG(1)[2836]> Fetch: fetching from: http://pkg.pichove.org/FreeBSD/FreeBSD:12:amd64/latest/packagesite.txz with opts "i"
pkg.pichove.org repository is up to date.
All repositories are up to date.
DBG(1)[2836]> want to get an advisory lock on a database
The following 1 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
	curl: 7.69.1_1

Number of packages to be installed: 1

The process will require 3 MiB more space.
1 MiB to be downloaded.
DBG(1)[2836]> Fetch: fetching from: http://pkg.pichove.org/FreeBSD/FreeBSD:12:amd64/latest/All/curl-7.69.1_1.txz with opts "i"
DBG(1)[2836]> release an advisory lock on a database
Comment 3 Alex 2020-04-03 09:51:14 UTC
time pkg -d update
DBG(1)[98798]> pkg initialized
Updating poudriere repository catalogue...
DBG(1)[98798]> PkgRepo: verifying update for poudriere
DBG(1)[98798]> Pkgrepo, begin update of '/var/db/pkg/repo-poudriere.sqlite'
DBG(1)[98798]> Fetch: fetching from: https://redacted.com/packages/freebsd_12-HEAD//meta.conf with opts "i"
DBG(1)[98798]> Fetch: fetching from: https://redacted.com/packages/freebsd_12-HEAD//meta.txz with opts "i"
DBG(1)[98798]> Fetch: fetching from: https://redacted.com/packages/freebsd_12-HEAD//packagesite.txz with opts "i"
poudriere repository is up to date.
All repositories are up to date.
0.033u 0.000s 3:15.32 0.0%      1964+172k 18+0io 0pf+0w

During this process SIGINFO shows this

load: 0.10  cmd: pkg 98798 [sbwait] 26.75r 0.01u 0.00s 0% 11044k
load: 0.09  cmd: pkg 98798 [sbwait] 29.10r 0.01u 0.00s 0% 11044k
Comment 4 Baptiste Daroussin freebsd_committer freebsd_triage 2020-04-03 10:20:10 UTC
(In reply to Kurt Jaeger from comment #1)
this has nothing to do what has been included in 1.14.1, this is new and I can't reproduce it so far
Comment 5 Baptiste Daroussin freebsd_committer freebsd_triage 2020-04-03 10:30:11 UTC
I can reproduce using your repository, I will dig into it.
Comment 6 Baptiste Daroussin freebsd_committer freebsd_triage 2020-04-03 10:54:17 UTC
should be "fixed"/workaround in pkg 1.14.2
Comment 7 Alex 2020-04-03 12:29:56 UTC
Working fine now. Thanks very much!
Comment 8 Simeon Simeonov 2020-04-03 14:06:57 UTC
Working for me as well.


One little thing:
When running: pkg create -a
I get the following warning:
...
Creating package for pkg-1.14.2
pkg: lstat(/usr/local/lib/compat/pkg): No such file or directory
...

then on the client side:
[1/1] Extracting pkg-1.14.2: 100%
You may need to manually remove /usr/local/etc/pkg.conf if it is no longer needed.
pkg-1.14.0: missing file /usr/local/share/licenses/pkg-1.14.0/BSD2CLAUSE
pkg-1.14.0: missing file /usr/local/share/licenses/pkg-1.14.0/LICENSE
pkg-1.14.0: missing file /usr/local/share/licenses/pkg-1.14.0/catalog.mk
pkg: Fail to set time on /usr/local/lib/compat/pkg:No such file or directory

I had to create /usr/local/lib/compat/pkg manually in order to continue.
Comment 9 peter.larsen 2020-04-03 14:16:52 UTC
*** Bug 245305 has been marked as a duplicate of this bug. ***
Comment 10 Andrew 2020-06-13 08:44:39 UTC
I just upgraded my custom repo, bumping pkg version from 1.13.2 to 1.14.4.

Now all my servers fails to upgrade pkg itself with the following error:

pkg: Fail to set time on /usr/local/lib/compat/pkg:No such file or directory

It looks like the new version tries to set the time on that folder without checking if it exists first.
Comment 11 Andrew 2020-06-13 10:55:52 UTC
I just made the problem disappear by applying this change:

--- Makefile.old        2020-06-13 12:54:29.391915000 +0200
+++ Makefile    2020-06-13 12:45:48.317072000 +0200
@@ -82,7 +82,7 @@
 .endif
 
 post-install:
-       @${MKDIR} ${STAGEDIR}${PREFIX}/lib/compat/pkg
+       ${MKDIR} ${STAGEDIR}${PREFIX}/lib/compat/pkg
 
 post-install-DOCS-on:
        @${MKDIR} ${STAGEDIR}${DOCSDIR}


I do not know the difference between calling a bin with the @ prefix but it looks like it's working as expected now.
Comment 12 Mark Linimon freebsd_committer freebsd_triage 2020-06-13 14:39:01 UTC
(In reply to Andrew from comment #11)

Per make(1), "A `@' causes the command not to be echoed before it is executed."

It is unlikely that removing the @ will affect behavior.
Comment 13 Andrew 2020-06-13 14:53:41 UTC
(In reply to Mark Linimon from comment #12)
You are right, in fact I just tried to rebuild the package without the previous change and it keeps working now... honestly I do not know what the cause would have been, and I'm unable to reproduce the error anymore (tried on different servers)... maybe it has been a glitch in my first port compilation. Thanks for the explanation.