Bug 18456 - Дикие зависимости
: Дикие зависимости
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/freemind)
: unstable
: all Linux
: P2 major
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2009-01-08 14:18 by
Modified: 2011-03-27 19:30 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2009-01-08 14:18:02
# 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 From 2009-01-09 02:35:50 -------
Зависимости прописываются AutoReq. Какую из них ты считаешь дикой?
------- Comment #2 From 2009-01-09 02:49:10 -------
Например, 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 From 2009-01-09 03:16:37 -------
osgi(org.apache.ant) -> eclipse-platform
osgi(org.junit) -> eclipse-jdt

Эти двое и вытягиивают весь этот bloat.  А eclipse сейчас официально сломан.
------- Comment #4 From 2009-01-09 03:26:32 -------
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 From 2009-01-13 22:38:31 -------
AutoReq: yes,noosgi поможет сдуть этот bloat.
В jar присутствует OSGi манифест,
но соответствующие provides есть только в рамках eclipse platform.
------- Comment #6 From 2009-01-13 23:16:44 -------
(In reply to comment #5)
> AutoReq: yes,noosgi поможет сдуть этот bloat.
> В jar присутствует OSGi манифест,
> но соответствующие provides есть только в рамках eclipse platform.
А проблема-то в чём? osgi manifest неверно заполнен?
------- Comment #7 From 2009-01-13 23:59:42 -------
> А проблема-то в чём? 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 From 2009-01-14 00:00:54 -------
вдогонку: Там надо BuildArch: noarch.
------- Comment #9 From 2009-01-14 00:22:02 -------
(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 From 2009-01-14 00:41:40 -------
(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 From 2009-01-14 00:47:05 -------
(In reply to comment #10)
> (In reply to comment #9)
> > мне надо заместить jar-файлы из freemind поставляемыми в Сизифе с помощью ссылки
> > на $(build-classpath)?
> 
> да.

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

Да.

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


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

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

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

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

Хотя бы часть библиотек.
------- Comment #15 From 2009-01-19 03:02:07 -------
Теперь лучше?
$ rpm --requires -qp freemind-0_9_0-alt3.rc1.noarch.rpm
java >= 1.5.0
coreutils
grep
groovy
jakarta-commons-lang
------- Comment #16 From 2009-01-19 09:32:24 -------
Я бы не сказал, что особо лучше... но видимо это предел...
$ 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 From 2009-01-19 23:32:49 -------
Думаю, дальше можно вешать багу на 
$ 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 From 2009-01-20 01:01:40 -------
(In reply to comment #17)
> Думаю, дальше можно вешать багу на 
> $ rpm --requires groovy
> ...

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

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

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

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

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

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