[freebsd] pkg (was: Ржавый)

Eugene Grosbein eugen at grosbein.net
Sat Jun 11 14:20:57 EEST 2022


11.06.2022 16:42, Taras Heichenko пишет:
> 
> 
>> On 10 Jun 2022, at 15:32, Anton Saietskii <vsasjason at gmail.com> wrote:
>>
>> Мда, "нетекущий" ржавый жрёт памяти на порядки больше, чем безб-жно текущий С...
> 
> Сорри, за дурацкий вопрос – давно не пользовался pkg для установки чего-либо. А может
> кто-то объяснить, а почему команда
> 
> pkg install rust
> предлагает удалить вот такой список пакетов (вопрос собственно не в том, почему список именно
> такой, а в том, зачем это все удалять, чтобы поставить rust из пекеджа)?
> 	avahi-app: 0.8
> 	cairo: 1.17.4,3
> 	cups: 2.3.3op2
> 	dbus-glib: 0.112
> 	ghostscript9-agpl-base: 9.55.0
> 	glib: 2.70.4_5,2
> 	gnupg: 2.3.3_3
> 	gnutls: 3.7.4
> 	gobject-introspection: 1.70.0,1
> 	gpgme: 1.17.1
> 	graphviz: 2.50.0
> 	harfbuzz: 4.0.0
> 	mutt: 2.2.3
> 	p11-kit: 0.24.1
> 	pango: 1.50.4
> 	portupgrade: 2.4.16,2
> 	py38-cffi: 1.15.0
> 	py38-cryptography: 3.3.2
> 	py38-openssl: 20.0.1
> 	py38-recommonmark: 0.5.0_2
> 	py38-requests: 2.25.1
> 	py38-sphinx: 4.3.1,1
> 	py38-urllib3: 1.26.8,1
> 	ruby: 2.7.6,1
> 	ruby27-bdb: 0.6.6_8
> 	ruby27-gems: 3.3.7_1
> 	rubygem-psych: 4.0.3
> 	rubygem-rdoc: 6.4.0
> 	rubygem-stringio: 3.0.1
> 	tex-basic-engines: 20210325
> 	tex-web2c: 20210325

Потому что pkg настаивает на том, чтобы зависимости устанавливаемого пакета
безусловно соблюдались с точностью. Никаких отклонений не допускается.

Например, в пакете rust прописана зависимость от *конкретной* версии пакета curl.
Если у вас curl установлен любой другой версии, pkg попытается удалить curl
и установить пакет curl именно той версии, которая прописана в зависимости
устанавливаемого пакета rust. А так как от curl нынче зависит много всего,
то pkg будет вынужден удалить и всё, что зависит от curl, а так же всё,
что зависит от тех пакетов и так далее, и заменить их на версии из того же репозитория,
откуда ставятся rust и curl.

Иногда поведение pkg можно слегка откорректировать предварительным запретом
удалять какой-нибудь установленный пакет, типа: pkg lock curl-7.73.0
Тогла pkg не будет пытаться снести curl и всё зависимое от него,
но это чревато тем, что целевой пакет хотя и установится, но работать не будет.

Например, установленный пакет даёт /usr/local/lib/libcurl.so.4
а в целевом пакете бинарники слинкованы с другой версией либы и просто не запустятся.
Опять же можно в крайнем случае использовать libmap.conf(5) и заставить их таки запуститься,
но это чревато разнообразными глюками и даже сегфолтами.







More information about the freebsd mailing list