Changes/rpm
RPM и systemd
При обновлении rpm следует учитывать написанное в altbug #35405#c10, то есть, обновление удалённой системы, включающее обновление rpm, следует производить в незакрывающейся автоматически сессии, если удалённая система использует systemd, либо использовать описанные в altbug #35405 варианты обхода проблемы. Это касается и обычного обновления rpm из-за отложенного перестроения базы, и, особенно, обновления c 4.0 до 4.13 (с p8 до Sisyphus, или до p9) из-за отложенного исполнения ещё и файлтриггеров.
RPM с поддержкой set provides
Если после заметного периода необновлений (начиная с октября 2010, точнее, rpm-4.0.4-alt98.49) вылезло подобное:
rpm: Для установки требует: librpm (= 4.0.4-alt100.1) Для установки требует: librpmbuild (= 4.0.4-alt100.1) Для установки требует: rpmlib(SetVersions) но пакет не может быть установлен Требует: librpm-4.0.4.so()(64bit) (>= set:lgVK9ZHkjUlX6dum9v5exN3mZAdiQaCZA9wPBB7UoChS9tyzKOW0DGL6VZzW5qnIQ1Xby3xZqihb0) Требует: librpmbuild-4.0.4.1.so()(64bit) (>= set:jh9GyZ5AUz1) Требует: librpmdb-4.0.4.so()(64bit) (>= set:kgkpLe8AEkFna4CeGtdDas0) Требует: librpmio-4.0.4.so()(64bit) (>= set:lgWkqo7uABu6qs1Vbdc6DTGrusCUXozblTZg23zE8r6f1ynxurJVIm50)
— то это rpm и librpm, которые уже поддерживают set provides, но ещё не содержат сами set requires.
Достаточно[1] подключить репозиторий 5.1 (или p5), и обновить rpm оттуда. В /etc/apt/sources.list понадобится прописать следующее вместо Sisyphus и выполнив apt-get update; apt-get install rpm:
x86_64:
rpm http://ftp.altlinux.org/pub/distributions/ALTLinux/p5/branch/ x86_64 classic rpm http://ftp.altlinux.org/pub/distributions/ALTLinux/p5/branch/ noarch classic
i586:
rpm http://ftp.altlinux.org/pub/distributions/ALTLinux/p5/branch/ i586 classic rpm http://ftp.altlinux.org/pub/distributions/ALTLinux/p5/branch/ noarch classic
Далее можно возвращаться на Сизиф (см. тж. apt).
RPM с поддержкой LZMA
Обновление
Если при очередном обновлении вы поймали непонятную ругань навроде следующей:
[root@localhost ~]# apt-get install openoffice.org-langpack-uk Reading Package Lists... Done Building Dependency Tree... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. Since you only requested a single operation it is extremely likely that the package is simply not installable and a bug report against that package should be filed.
The following information may help to resolve the situation: The following packages have unmet dependencies: openoffice.org-langpack-uk: Depends: openoffice.org-langpack-ru (= 2.4.1.5-alt2) Depends: /usr/lib64/openoffice.org/help/ru PreDepends: rpmlib(PayloadIsLzma) (<= 4.4.2-1) but it is not installable E: Broken packages
— это смена сжатия *.rpm на LZMA, что поддерживает
и выше. Анонс/рецепт:
# apt-get update # apt-get install 'rpm>=4.0.4-alt93' # apt-get --reinstall update
Анализ
Проверить способ сжатия наличного пакета можно таким образом (в том числе совсем старым rpm):
$ rpmquery --qf '%{PAYLOADCOMPRESSOR}\n' -p какой-нибудь.rpm
Сборка
Для сборки на текущем сизифе src.rpm, который сойдёт текущим rpm в более ранних бранчах, используйте команду
rpm -bs --nodeps --define='_source_payload w9.gzdio' нужный.spec
или укажите в спеке
%define _source_payload w9.gzdio
Команда rpmbph из etersoft-build-utils выполняет это автоматически.