On Sun, May 08, 2005 at 05:10:19PM +0400, Dmitry V. Levin wrote: > > 1) Пакеты libpq и libecpg разных версий должны мирно сосуществовать; > > собственно, для этого в названия пакета и добавляют суффикс, > > соответствующий SONAME. Кстати, суффикс должен соответствовать именно > > SONAME, т.е. пакет должен называтья, например, libpq3, а не libpq3.2 > > (несмотря на то, что в пакете имеется файл libpq.so.3.2). > > Разные пакеты, предоставляющие одну и ту же библиотеку (один и тот же > soname), вообще не могут находиться в одном репозитории. Могут, если они явно конфликтуют между собой (в общем случае, два пакета ведь могут провайдить один и тот же виртуальный пакет, и при этом между собой конфликтовать). Но в этом мало смысла. Кроме того, возможны проблемы у apt'а, то есть в некоторых случаях apt не сможет решить, какой из этих пакетов поставить. > > 2) Пакеты lib*-devel и posgresql*-devel разных версий, наверное, должны > > конфликтовать. > > > > 3) Сервер должен обновляться независимо от клиентских библиотек > > и *-devel пакетов. То есть мне нужно собрать perl-DBD-Pg с новыми > > клиентскими библиотеками и протестировать (прямо во время сборки) со > > старым posgresql-server в пределах одной хост-системы. > > Всё верно, сборки postgresql должны это позволять, в противном случае их > должно быть не более одной. Сформулирую по-другому: гранулярность указания версии в названии пакетов с клиентскими библиотеками должна быть на уровне soname; гранулярность указания версии в пакете типа postgresql-server должна быть на уровне совместимости базы (т.е., например, postgresql8.0-server, если формат базы скорее всего не изменится для 8.0.x и возможно изменится для 8.1.x). По поводу гранулярности указания версии в *-devel пакетах (нужна ли там версия вообще) уверенности нет. Имеются некоторые вопросы по поводу распиловки postgresql: $ rpm -qlv libpq3-devel lrwxrwxrwx 1 root root 12 Aug 25 2004 /usr/lib/libpq.so -> libpq.so.3.1 $ Такой пакет, по-моему, подпадает под бритву Оккама. Нужно либо доложить в него хедеров и сделать этот пакет самодостаточным, либо перенести этот несчастный симлинк в postgresql-devel, в котором лежат все хедеры. В Debian распилено более грамотно (на первый взгляд, в подробности я не вникал): ftp://ftp.debian.org/debian/pool/main/p/postgresql-8.0/postgresql-8.0_8.0.2-1.diff.gz --- postgresql-8.0-8.0.2.orig/debian/libpq-dev.install +++ postgresql-8.0-8.0.2/debian/libpq-dev.install @@ -0,0 +1,11 @@ +usr/include/postgresql/internal/* +usr/include/postgresql/libpq-fe.h +usr/include/postgresql/libpq/libpq-fs.h +usr/include/postgresql/pg_config*.h +usr/include/postgresql/postgres_ext.h +usr/lib/postgresql/8.0/lib/libpgport.a /usr/lib/ +usr/lib/postgresql/8.0/lib/libpq.a /usr/lib +usr/lib/postgresql/8.0/lib/libpq.so /usr/lib/ +usr/lib/postgresql/8.0/bin/pg_config usr/bin +usr/share/postgresql/8.0/man/man1/pg_config.1 +usr/share/locale/*/LC_MESSAGES/pg_config-8.0.mo