From nobody Sat Nov 13 13:56:54 2021 X-Original-To: freebsd-pkg@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 25C781858DB0 for ; Sat, 13 Nov 2021 13:56:59 +0000 (UTC) (envelope-from se@freebsd.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4HrxpM0GVJz3HTp; Sat, 13 Nov 2021 13:56:59 +0000 (UTC) (envelope-from se@freebsd.org) Received: from [IPV6:2003:cd:5f2e:2500:641c:9d5d:c1a5:e4b] (p200300cd5f2e2500641c9d5dc1a50e4b.dip0.t-ipconnect.de [IPv6:2003:cd:5f2e:2500:641c:9d5d:c1a5:e4b]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: se/mail) by smtp.freebsd.org (Postfix) with ESMTPSA id 762B62D4CE; Sat, 13 Nov 2021 13:56:58 +0000 (UTC) (envelope-from se@freebsd.org) Message-ID: <4119af9a-f330-ca89-dc61-c28b7abcc247@freebsd.org> Date: Sat, 13 Nov 2021 14:56:54 +0100 List-Id: Binary package management and package tools discussion List-Archive: https://lists.freebsd.org/archives/freebsd-pkg List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-pkg@freebsd.org MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.3.0 Subject: BACKUP_LIBRARIES issue Content-Language: de-DE From: Stefan Esser To: Baptiste Daroussin Cc: freebsd-pkg@FreeBSD.org References: <15967907-03dc-a2ab-df86-6097d8d808f6@ohreally.nl> <20211108075438.jtqkak6n22n5rlg7@aniel.nours.eu> <9df3553b-b2c3-6b35-f06c-f123b981a613@ohreally.nl> <20211108095919.wfqj3kr2m6du5xsr@aniel.nours.eu> <9ea022cc-0886-6bfe-4f5c-993b2a683e3e@ohreally.nl> <4d28dae0-043f-dffd-ce79-644ee6e226e0@freebsd.org> <668211f6-e7db-8875-1c1e-214ed2d4388c@ohreally.nl> <20211108150652.5ckawymyfxdls4ys@aniel.nours.eu> <624a7435-eaf3-03db-c47c-29783f45ede9@freebsd.org> In-Reply-To: <624a7435-eaf3-03db-c47c-29783f45ede9@freebsd.org> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------ysqe4KvPVnfevYalNO3020qG" X-ThisMailContainsUnwantedMimeParts: N This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------ysqe4KvPVnfevYalNO3020qG Content-Type: multipart/mixed; boundary="------------3cyLmxNXlPnnSfZEEbX9H2bH"; protected-headers="v1" From: Stefan Esser To: Baptiste Daroussin Cc: freebsd-pkg@FreeBSD.org Message-ID: <4119af9a-f330-ca89-dc61-c28b7abcc247@freebsd.org> Subject: BACKUP_LIBRARIES issue References: <15967907-03dc-a2ab-df86-6097d8d808f6@ohreally.nl> <20211108075438.jtqkak6n22n5rlg7@aniel.nours.eu> <9df3553b-b2c3-6b35-f06c-f123b981a613@ohreally.nl> <20211108095919.wfqj3kr2m6du5xsr@aniel.nours.eu> <9ea022cc-0886-6bfe-4f5c-993b2a683e3e@ohreally.nl> <4d28dae0-043f-dffd-ce79-644ee6e226e0@freebsd.org> <668211f6-e7db-8875-1c1e-214ed2d4388c@ohreally.nl> <20211108150652.5ckawymyfxdls4ys@aniel.nours.eu> <624a7435-eaf3-03db-c47c-29783f45ede9@freebsd.org> In-Reply-To: <624a7435-eaf3-03db-c47c-29783f45ede9@freebsd.org> --------------3cyLmxNXlPnnSfZEEbX9H2bH Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Following up on my previous mail, since libraries saved to compat/pkg jus= t broke Samba on my system after an upgrade: $ ldconfig -r search directories: /lib:/usr/lib:/usr/lib/compat:/usr/local/lib:/usr/local/lib/compat/pkg:/u= sr/local/lib/compat:/usr/local/lib/dovecot:/usr/local/lib/expect5.45.4:/u= sr/local/lib/gcc10:/usr/local/lib/gcc9:/usr/local/lib/graphviz:/usr/local= /lib/mysql:/usr/local/lib/mysql/plugin:/usr/local/lib/perl5/5.32/mach/COR= E:/usr/local/lib/pth:/usr/local/lib/qt5:/usr/local/lib/samba4:/usr/local/= lib/signon:/usr/local/lib/signon/extensions:/usr/local/lib/wine:/usr/loca= l/llvm10/lib:/usr/local/llvm11/lib:/usr/local/llvm12/lib:/usr/local/llvm1= 3/lib:/usr/local/llvm70/lib:/usr/local/llvm80/lib:/usr/local/llvm90/lib:/= usr/local/share/chromium:/usr/local/share/code-oss:/usr/local/share/elect= ron12 Since /usr/local/lib/compat/pkg is the 5th element in the search path, /usr/local/lib/samba4 the 17th, the same-name libraries in the compat/pkg= directory take precedence over the newly installed libraries in the samba4 directory. Since paths are added to the search list at the end, when new packages are installed, lib/compat/pkg may end up in the middle of the search path, even when it was at the end at boot time. I see 2 possible solutions: 1) Make sure that compat library paths come last (e.g. by adding a new option letter to specify compat library paths: ldconfig -b compat/pkg)= =2E Or special-case compat paths in ldconfig to implicitly add them only a= t the end of a search path (without requiring a new option letter). 2) Make the pkg command remove libraries from the compat/pkg directory if a same-name library is installed in some other system directory. Without such a safe-guard, software that installs libraries with internal= interface version numbers/checks under the same name as previous incompat= ible versions (e.g. samba, dovecot, ...) will fail to start. Am 08.11.21 um 17:28 schrieb Stefan Esser: > Am 08.11.21 um 16:06 schrieb Baptiste Daroussin: >> On Mon, Nov 08, 2021 at 04:03:56PM +0100, freebsd@ohreally.nl wrote: >>> Thank you, Stefan. >>> I am creating an issue at the portupgrade/pkgtools GitHub project as = we >>> speak. I will include all the information that Baptiste and you have = given >>> me. >>> >>> Best, >>> Rob >>> >> >> Just the "No such file or directory @ rb_check_realpath_internal" show= s it comes >> from portupgrade and not pkg itself, I missed it in my first review. >> >> Note that portmaster and portupgrade do not need to support that featu= re anymore >> as it is provided by pkg directly (they just need to activate it or no= t if they >> wants for backward compatibility). > Hi Baptiste, >=20 > thank you for the information, I did not know about BACKUP_LIBRARIES. >=20 > But I think that the functionality is somewhat different. Portmaster > creates a copy of a local library before invoking "pkg delete" to keep > it around for any ports that still depend on it. >=20 > If a port is being upgraded and a library with the same name is > installed to /usr/local/lib, the backup in compat/pkg will be deleted. >=20 > AFAIUI, the effect of BACKUP_LIBRARIES, it has no effect on any command= > besides "pkg add", and it specifically does not protect against the rem= oval > of a shared library that is still required by some installed package. > It does not appear to have any effect if "make install" is used to inst= all > a port (since that only uses "pkg register", not "pkg add".) >=20 > The pkg command could check whether any of the libraries to be deleted > by "pkg delete" is still depended on by any other package (i.e. in the > list generated by "pkg query %B") and then copy it to compat/pkg, if > still being depended on. >=20 > OTOH if a new package is installed, any library in compat/pkg that is > in the list of newly installed libraries can be removed from compat/pkg= =2E >=20 > This is important, since I found that "ldconfig -m" tends to add newly > created shared library locations to the end of the search path, and as > a result if a shared library has been saved to compat/pkg, it will take= > precedence over a newly installed one. Therefore, removal of libraries > from compat/pkg is required in that case, to make the newly installed > libraries accessible. >=20 > Regards, STefan >=20 > PS: The documentation of BACKUP_LIBRARIES in pkg.conf(5) is not > very precise. And this parameter could be added to the list of > environment variables checked by "pkg add" in pkg-add(8). >=20 --------------3cyLmxNXlPnnSfZEEbX9H2bH-- --------------ysqe4KvPVnfevYalNO3020qG Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wsB5BAABCAAjFiEEo3HqZZwL7MgrcVMTR+u171r99UQFAmGPxCYFAwAAAAAACgkQR+u171r99US6 kwgArLjJLJKCmCQzb+bPFkBurYUL1iFSLktPOMWREdcqDEg5OaDujDCWHrLiIFGTXo6ztBdYUOdg 5CPv5eVxRUz8od1wMMB/DVJjCbzYCdW0vAs3830fpZn4SZGjw5RT5bX9oMMQUVnvCBon1dnhLwv6 NvQe6zuUrezffyf2IbpwfTK+SvaSPTA0pMs5IFMrPSK/RQTvS/XZxkxEijbgPKzE/KCe/Rmwu1fX Y1PqftQ7oVlvNOMlnOsflqFX5WDdjOKRwho3R6FiqaxPR8sBEumiGlpV9MUDDw7AC7OA/B4vBfnt AKVWI53gVvrtbhvIDNGmR2lILRbKpC+j9Uaz4MjUyQ== =DDQJ -----END PGP SIGNATURE----- --------------ysqe4KvPVnfevYalNO3020qG--