Changes/rpm

Материал из ALT Linux Wiki
50px-Gnome globe current event.png
Данная статья периодически обновляется.
Последнее обновление
13:06 25 сентября 2018

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, что поддерживает

rpm-4.0.4-alt93

и выше. Анонс/рецепт:

# 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 выполняет это автоматически.

Примечания