Bug 18456 - Дикие зависимости
Summary: Дикие зависимости
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: freemind (show other bugs)
Version: unstable
Hardware: all Linux
: P2 major
Assignee: Vitaly Lipatov
QA Contact: qa-sisyphus
URL:
Keywords:
: 20184 (view as bug list)
Depends on:
Blocks:
 
Reported: 2009-01-08 14:18 MSK by Ivan Fedorov
Modified: 2011-03-27 19:30 MSK (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ivan Fedorov 2009-01-08 14:18:02 MSK
# apt-get dist-upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
Calculating Upgrade... Done
The following packages will be upgraded
  freemind
The following NEW packages will be installed:
  ant ant-antlr ant-bcel ant-bsf ant-commons-logging ant-commons-net ant-jai ant-jakarta-oro ant-jakarta-regexp ant-javamail ant-jdepend ant-jmf ant-jsch ant-junit
  ant-log4j ant-stylebook ant-swing ant-trax ant-xml-resolver asm bcel bea-stax bea-stax-api bsf cglib dom4j easymock2 eclipse-ecj eclipse-jdt eclipse-platform
  eclipse-rcp eclipse-swt excalibur excalibur-avalon-logkit geronimo-jms-1.1-api gnu-crypto-sasl-jdk1.4 hamcrest icu4j isorelax jai jakarta-commons-dbcp
  jakarta-commons-digester jakarta-commons-el jakarta-commons-fileupload jakarta-commons-lang jakarta-commons-launcher jakarta-commons-modeler jakarta-commons-net
  jakarta-commons-pool jakarta-oro java-1.6.0-sun-devel java-stub-javadoc jaxen jdepend jdom jmock jsch junit junit4 jzlib log4j msv msv-xsdlib mx4j qdox
  relaxngDatatype sat4j servletapi4 sun-jaf sun-mail tomcat5-jasper-eclipse tomcat5-jsp-2.0-api tomcat5-servlet-2.4-api velocity werken-xpath ws-jaxme xalan-j2
  xerces-j2 xml-commons xml-commons-jaxp-1.2-apis xml-commons-jaxp-1.3-apis xml-commons-resolver11 xml-commons-resolver12 xml-stylebook xmldb-api xmldb-api-sdk xom
  xpp2 xpp3
The following packages have been kept back
  bacula-bat bacula-client bacula-common bacula-director bacula-storage
1 upgraded, 89 newly installed, 0 removed and 5 not upgraded.
Need to get 0B/122MB of archives.
After unpacking 171MB of additional disk space will be used.
Do you want to continue? [Y/n] n
Abort.
Comment 1 Vitaly Lipatov 2009-01-09 02:35:50 MSK
Зависимости прописываются AutoReq. Какую из них ты считаешь дикой?
Comment 2 Mikhail Gusarov 2009-01-09 02:49:10 MSK
Например, ant или java-1.6.0-sun-devel, или eclipse-jdt.

AutoReq не безгрешен :)

Для интереса заглянул в Debian, там зависимости такие:

Depends: j2re1.4 | java2-runtime, j2re1.4 | java-virtual-machine
Recommends: mozilla-browser | www-browser
Comment 3 Sir Raorn 2009-01-09 03:16:37 MSK
osgi(org.apache.ant) -> eclipse-platform
osgi(org.junit) -> eclipse-jdt

Эти двое и вытягиивают весь этот bloat.  А eclipse сейчас официально сломан.
Comment 4 Vitaly Lipatov 2009-01-09 03:26:32 MSK
apt-cache show freemind
...
Depends: java (>= 1.5.0), /bin/sh, coreutils, grep, osgi(org.apache.ant), osgi(org.junit), rpm

Я не знаю откуда вытягивается org.apache.ant и не умею искать так, чтобы эот найти.
Comment 5 viy 2009-01-13 22:38:31 MSK
AutoReq: yes,noosgi поможет сдуть этот bloat.
В jar присутствует OSGi манифест,
но соответствующие provides есть только в рамках eclipse platform.
Comment 6 Vitaly Lipatov 2009-01-13 23:16:44 MSK
(In reply to comment #5)
> AutoReq: yes,noosgi поможет сдуть этот bloat.
> В jar присутствует OSGi манифест,
> но соответствующие provides есть только в рамках eclipse platform.
А проблема-то в чём? osgi manifest неверно заполнен?

Comment 7 viy 2009-01-13 23:59:42 MSK
> А проблема-то в чём? osgi manifest неверно заполнен?

Основная проблема - сторонний ./plugins/script/groovy-all-1.5.6.jar,
в котором эти зависимости прописанны.
Впрочем, там зависимости опциональные, 
Require-Bundle: org.apache.ant;resolution:=optional, org.junit;resolution:=optional
поэтому достаточно просто пересобрать пакет, новый osgi.req
пропускает опциональные Require-Bundle:.

Напомню, что согласно http://www.altlinux.org/JavaPolicy
Использование сторонних бинарных сборок крайне не рекомендуется.

Крайне не рекомендуется использование бинарных кодов, взятых откуда либо кроме Сизифа.

    * Пакеты должны собираться из исходных текстов, если это позволяет лицензия. 

Если пакет не собран из исходных текстов, а инсталлирует готовый jar, несмотря на присутствие исходных текстов, то лучше его в Сизиф не класть (но можно положить в Дедал в ожидании доработки).

    * Пакеты не должны использовать при сборке чужие библиотеки. 

Очень часто вместе с исходными текстами идут готовые собранные сторонние библиотеки. Пакеты не должны использовать при сборке эти готовые сторонние собранные библиотеки, а должны использовать вместо них библиотеки, собранные в Сизифе. Если какой-то готовой сторонней собранной библиотеки в Сизифе нет, ее необходимо сначала туда собрать. 

Можно для начала попробовать groovy11-all-1.1.jar из Сизифа.
И кроме groovy там еще куча сторонних библиотек запакована.
Comment 8 viy 2009-01-14 00:00:54 MSK
вдогонку: Там надо BuildArch: noarch.
 
Comment 9 Vitaly Lipatov 2009-01-14 00:22:02 MSK
(In reply to comment #7)
> > А проблема-то в чём? osgi manifest неверно заполнен?
> 
> Основная проблема - сторонний ./plugins/script/groovy-all-1.5.6.jar,
Да, действительно, там много идущих jar-файлов...

...
> поэтому достаточно просто пересобрать пакет, новый osgi.req
> пропускает опциональные Require-Bundle:.
Это уже радует.

> Напомню, что согласно http://www.altlinux.org/JavaPolicy
> Использование сторонних бинарных сборок крайне не рекомендуется.
Я думаю, что в этом полиси не хватает обоснования такой рекомендации.
 
>     * Пакеты должны собираться из исходных текстов, если это позволяет
> лицензия. 
Правильно ли я понимаю 
http://www.altlinux.org/Java/HOWTO
мне надо заместить jar-файлы из freemind поставляемыми в Сизифе с помощью ссылки на $(build-classpath)?

... 
> Можно для начала попробовать groovy11-all-1.1.jar из Сизифа.
> И кроме groovy там еще куча сторонних библиотек запакована.
Способ поиска jar-файлов предполагает указания полного пути к нему,
то есть просто удалить такие файлы нельзя, верно?

Comment 10 viy 2009-01-14 00:41:40 MSK
(In reply to comment #9)
> мне надо заместить jar-файлы из freemind поставляемыми в Сизифе с помощью ссылки
> на $(build-classpath)?

да.

> Способ поиска jar-файлов предполагает указания полного пути к нему,
> то есть просто удалить такие файлы нельзя, верно?
да. 
Более того, проще симлинки делать с в точности такими же именами,
чтобы не связываться  с редактированием.

можно, конечно, набросать симлинков в /usr/share/freemind/lib
и сказать -classpath '/usr/share/freemind/lib/*' 
"загрузить все jar из /usr/share/freemind/lib"
Но это если серьезно отредактировать /usr/bin/freemind.
там сейчас вручную набирается
CLASSPATH="${ADD_JARS}:${CLASSPATH}:${freedir}/lib/freemind.jar:\
${freedir}/lib/jibx/jibx-run.jar:\
${freedir}/lib/jibx/xpp3.jar:\
${freedir}/lib/bindings.jar:\
${freedir}/lib/commons-lang-2.0.jar:\
${freedir}/lib/forms-1.0.5.jar:\
${freedir}"
итд.
Comment 11 viy 2009-01-14 00:47:05 MSK
(In reply to comment #10)
> (In reply to comment #9)
> > мне надо заместить jar-файлы из freemind поставляемыми в Сизифе с помощью ссылки
> > на $(build-classpath)?
> 
> да.

Точнее, сначала хотя бы то, что пройдет.
сторонние jar в freemind - смесь от устаревших версий
(которых уже нет в Сизифе) до новейших (которых еще нет в Сизифе).
Могут проявиться проблемы совместимости.
А могут и не проявиться.
Comment 12 Vitaly Lipatov 2009-01-14 01:07:58 MSK
(In reply to comment #11)
...
> сторонние jar в freemind - смесь от устаревших версий
> (которых уже нет в Сизифе) до новейших (которых еще нет в Сизифе).
> Могут проявиться проблемы совместимости.
Что-то вот я не понимаю вашего совета. Вы предлагаете заменить те библиотеки, с которыми freemind гарантированно работает, на другие, версий то меньше, то больше, и расхлёбывать получившееся? А если он сломается?

Comment 13 viy 2009-01-14 01:30:05 MSK
> > сторонние jar в freemind - смесь от устаревших версий
> > (которых уже нет в Сизифе) до новейших (которых еще нет в Сизифе).
> > Могут проявиться проблемы совместимости.
> Что-то вот я не понимаю вашего совета. Вы предлагаете заменить те
> библиотеки, с которыми freemind гарантированно работает, на другие, версий то
> меньше, то больше, и расхлёбывать получившееся? 

Да.

Java - порождение корпоративного мира. 
Многие ее уродливые черты напоминают такие же в Windows.
И можно ее отрицать и ненавидеть в целом, а можно сквозь
уродство и безобразие дистиллировать ее капля за каплей
в нечто правильное. Как wine делает это с Windows :)


А если он сломается?
Как правило, вылезет API несовместимость, т. е.
скорее не соберется, чем сломается.
Если сломается, то можно откатить. 

Если не сломается, мир станет на каплю лучше :)

Пора покончить с этим уродливым явлением -
апстримом распространяется IM клиент на java: собственного кода 1M, 
дублей имеющихся библиотек на 50M
и еще для полноты счастья набор jre под все архитектуры
еще 70М.

1-2 java программы занимают места больше, чем Linux LiveCD с OpenOffice :(

Comment 14 viy 2009-01-14 01:37:19 MSK
(In reply to comment #13)
> > Вы предлагаете заменить те
> > библиотеки, с которыми freemind гарантированно работает, на другие, версий то
> > меньше, то больше, и расхлёбывать получившееся? 
> 
> Да.

Хотя бы часть библиотек.
Comment 15 Vitaly Lipatov 2009-01-19 03:02:07 MSK
Теперь лучше?
$ rpm --requires -qp freemind-0_9_0-alt3.rc1.noarch.rpm
java >= 1.5.0
coreutils
grep
groovy
jakarta-commons-lang
Comment 16 Ivan Fedorov 2009-01-19 09:32:24 MSK
Я бы не сказал, что особо лучше... но видимо это предел...
$ agi freemind
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
  adaptx ant ant-junit asm asm2 axion backport-util-concurrent bcel bea-stax bea-stax-api bsf castor0 cglib dom4j excalibur excalibur-avalon-logkit
  geronimo-ejb-2.1-api geronimo-j2ee-1.4-apis geronimo-j2ee-connector-1.5-api geronimo-jms-1.1-api geronimo-jta-1.0.1B-api geronimo-servlet-2.4-api
  gnu-crypto-sasl-jdk1.4 gnu-regexp groovy hsqldb icu4j isorelax jakarta-commons-codec jakarta-commons-el jakarta-commons-fileupload jakarta-commons-httpclient
  jakarta-commons-lang jakarta-commons-primitives jakarta-commons-transaction jakarta-oro jakarta-slide-webdavclient jarjar java-1.6.0-sun-devel jaxen jdom jettison
  jetty5 jetty5-javadoc jmock joda-time junit ldapsdk log4j mockobjects msv msv-xsdlib mx4j nekohtml openejb1 qdox radeox relaxngDatatype servletapi4 sun-jaf
  sun-mail tomcat5-jasper tomcat5-jsp-2.0-api tomcat5-servlet-2.4-api tomcat6-servlet-2.5-api velocity werken-xpath ws-jaxme wstx xalan-j2 xerces-j2 xml-commons
  xml-commons-jaxp-1.2-apis xml-commons-jaxp-1.3-apis xml-commons-resolver12 xml-im-exporter xmldb-api xmldb-api-sdk xom xpp2 xpp3 xstream
Comment 17 Vitaly Lipatov 2009-01-19 23:32:49 MSK
Думаю, дальше можно вешать багу на 
$ rpm --requires groovy
ant
ant-junit
antlr
asm2
axion
bsf
cglib
jakarta-commons-cli
jakarta-commons-codec
jakarta-commons-collections
jakarta-commons-httpclient
jakarta-commons-logging
jakarta-commons-primitives
jakarta-oro
jarjar
jmock
junit
mockobjects
mx4j
nekohtml
openejb1
qdox
radeox
regexp
tomcat5-jsp-2.0-api
tomcat5-servlet-2.4-api
xerces-j2
xml-commons-jaxp-1.3-apis
xpp3
xstream
jpackage-utils >= 0:1.7.4
jpackage-utils >= 0:1.7.4
Comment 18 viy 2009-01-20 01:01:40 MSK
(In reply to comment #17)
> Думаю, дальше можно вешать багу на 
> $ rpm --requires groovy
> ...

groovy -- это целый язык для java virtual machine,
все эти библиотеки, вообще говоря, используются.

Это то же самое, если gnomer/gtkшник поставил
себе какой-нибудь kfurfurrent, а тот ему пол kde в систему втянул.

Никто же по этому поводу не ругается и не предлагает
линковать kfurfurrent с qt4 и kde libs статически.

Се ля ви.
Comment 19 Vitaly Lipatov 2009-01-20 01:41:09 MSK
(In reply to comment #18)
> groovy -- это целый язык для java virtual machine,
> все эти библиотеки, вообще говоря, используются.
Вам виднее. Мне казалось, apt нужен только при сборке.
Comment 20 viy 2009-01-20 02:56:01 MSK
(In reply to comment #19)
> Вам виднее. Мне казалось, apt нужен только при сборке.

конечно, для работы freemind
этого добра не нужно.

Это похоже на то, когда программе нужно
пара вызовов из libqucktime.so
а пакет libqucktime тянет (и реально слинкован с)
ffmpeg, libjpeg, x264 и тд. 20 доп. библиотеками :(
Comment 21 Ivan Fedorov 2009-01-20 12:32:50 MSK
тогда мне наверное проще отказаться от freemind...
Comment 22 viy 2009-07-22 17:25:40 MSD
*** Bug 20184 has been marked as a duplicate of this bug. ***