[SOLVED] UD флаг при установке - не могу разрулить зависимости
kostik_g 6 сентября, 2013 - 17:33
Не могу поставить шеф, т.к. недавно обновился руби до 2 версии и потянул за собой json-1.8. Шеф же требует 1.7.7
emerge -av chef These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild N ~] dev-ruby/mixlib-log-1.4.1 USE="-doc {-test}" RUBY_TARGETS="ruby19 (-ree18) -ruby18" 0 kB [ebuild N ] dev-ruby/yajl-ruby-1.1.0 USE="{-test}" RUBY_TARGETS="ruby19 (-ree18) -ruby18" 0 kB [ebuild N ~] dev-ruby/mixlib-config-1.1.2 USE="{-test}" RUBY_TARGETS="ruby19 (-ree18) -ruby18" 0 kB [ebuild N ~] dev-ruby/mixlib-cli-1.3.0 USE="{-test}" RUBY_TARGETS="ruby19 -jruby -ruby18" 0 kB [ebuild N ~] dev-ruby/mixlib-shellout-1.1.0 USE="{-test}" RUBY_TARGETS="ruby19 (-ree18) -ruby18" 0 kB [ebuild N ] dev-ruby/ruby-shadow-2.1.4 USE="{-test}" RUBY_TARGETS="ruby19 (-ree18) -ruby18" 0 kB [ebuild N ~] dev-ruby/moneta-0.6.0-r1 USE="{-test}" RUBY_TARGETS="ruby19 (-ree18) -ruby18" 0 kB [ebuild N ] dev-ruby/uuidtools-2.1.3 USE="-doc {-test}" RUBY_TARGETS="ruby19 -jruby (-ree18) -ruby18" 0 kB [ebuild N ~] dev-ruby/bunny-0.8.0 USE="{-test}" RUBY_TARGETS="ruby19 -ruby18" 0 kB [ebuild N ] dev-ruby/highline-1.6.13 USE="-doc {-test}" RUBY_TARGETS="ruby19 -jruby (-ree18) -ruby18" 0 kB [ebuild N ~] dev-ruby/polyglot-0.3.3 USE="{-test}" RUBY_TARGETS="ruby19 -jruby -rbx (-ree18) -ruby18" 0 kB [ebuild N ] dev-ruby/mime-types-1.19 USE="-doc {-test}" RUBY_TARGETS="ruby19 -jruby (-ree18) -ruby18" 0 kB [ebuild N ~] dev-ruby/ipaddress-0.8.0 USE="-doc {-test}" RUBY_TARGETS="ruby19 -jruby (-ree18) -ruby18" 0 kB [ebuild N ] dev-ruby/systemu-2.5.2 USE="{-test}" RUBY_TARGETS="ruby19 (-ree18) -ruby18" 0 kB [ebuild N ] dev-ruby/test-unit-2.5.3:2 USE="-doc {-test}" RUBY_TARGETS="ruby19 -jruby (-ree18) -ruby18" 0 kB [ebuild N ~] dev-ruby/ohai-6.18.0 USE="{-test}" RUBY_TARGETS="ruby19 -ruby18" 0 kB [ebuild N ~] dev-ruby/mixlib-authentication-1.3.0 USE="{-test}" RUBY_TARGETS="ruby19 -ruby18" 0 kB [ebuild UD ] dev-ruby/json-1.7.7 [1.8.0] USE="-doc {-test}" RUBY_TARGETS="ruby19 -jruby (-ree18) -ruby18 (-ruby20%*)" 0 kB [ebuild N ] dev-ruby/rest-client-1.6.7-r1 USE="-doc {-test}" RUBY_TARGETS="ruby19 (-ree18) -ruby18" 0 kB [ebuild N ~] dev-ruby/treetop-1.4.15 USE="-doc {-test}" RUBY_TARGETS="ruby19 -ruby18" 0 kB [ebuild N ] dev-ruby/net-ssh-gateway-1.1.0-r1:2 USE="-doc {-test}" RUBY_TARGETS="ruby19 (-ree18) -ruby18" 0 kB [ebuild N ~] dev-ruby/net-ssh-multi-1.1:2 USE="-doc {-test}" RUBY_TARGETS="ruby19 (-ree18) -ruby18" 0 kB [ebuild N ~] app-admin/chef-10.24.0 USE="{-test}" RUBY_TARGETS="ruby19" 0 kB Total: 23 packages (1 downgrade, 22 new), Size of downloads: 0 kB !!! Multiple package instances within a single package slot have been pulled !!! into the dependency graph, resulting in a slot conflict: dev-ruby/json:0 (dev-ruby/json-1.7.7::gentoo, ebuild scheduled for merge) pulled in by <=dev-ruby/json-1.7.7[ruby_targets_ruby19] required by (app-admin/chef-10.24.0::gentoo, ebuild scheduled for merge) (dev-ruby/json-1.8.0::gentoo, installed) pulled in by >=dev-ruby/json-1.7.7[ruby_targets_ruby20] required by (dev-lang/ruby-2.0.0_p247-r1::gentoo, installed) It may be possible to solve this problem by using package.mask to prevent one of those packages from being selected. However, it is also possible that conflicting dependencies exist such that they are impossible to satisfy simultaneously. If such a conflict exists in the dependencies of two different packages, then those packages can not be installed simultaneously. You may want to try a larger value of the --backtrack option, such as --backtrack=30, in order to see if that will solve this conflict automatically. For more information, see MASKED PACKAGES section in the emerge man page or refer to the Gentoo Handbook.
Пытался удалить и замаскировать руби-2 - не получилось, т.к. пришлось маскировать много пакетов и то и дело вылезали "косяки"
В идеале, хотелось бы поставить оба json'a, или правильно замаскировать руби
»
- Для комментирования войдите или зарегистрируйтесь
Ну значит либо откатывайте
Ну значит либо откатывайте пакеты, которые тянут dev-lang/ruby-2.0.0_p247-r1, заодно и сам dev-lang/ruby-2.0.0_p247-r1, что бы вы могли установить dev-ruby/json-1.7.7, либо пишите ebuild для новой версии app-admin/chef, насколько я понимаю уже есть 11.
Не зря же вы сидите на тестовой ветке ?
хорошо, попробую еще раз
Однако, как-то я упустил из виду, что я на тестовой ветке, почему-то примелькалась маскировка ~amd64
Попробую еще раз удалить руби и почистить систему
стало еще хуже :(
package.mask
Теперь вообще не пойму что делать
Запустите с ключём '-t' и
Запустите с ключом '-t' и посмотрите какие пакеты "тянут" dev-lang/ruby-2.0.0_p247-r1, хотя тут и так видны часть пакетов.
вообще ужас
Что мне здесь ясно, так это то, что Шеф тянет json-1.7.7
Непонятного больше:
1. Почему дерево идет от vagrant и тянет за собой 2 версии json'a?
2. Что означает RUBY_TARGETS="ruby19 (ruby20)"?
3. Что же все-таки тянет руби-2? rubygems-6 или rake-0.9.6
4. Почему не срабатывает маскировка?
И уж совсем непонятно, что делать дальше :)
У вас rubygems и
У вас rubygems и dev-ruby/rake хотят dev-lang/ruby-2.0.0_p247-r1 .
как решить?
Спасибо за помощь, но все же не могу понять, как избавиться от RUBY_TARGETS="(ruby20)"
Уже близок к тому, чтобы забить на шефа и ставить его в виртуалке
Изучайте ebuild`ы пакетов, ну
Изучайте ebuild`ы пакетов, ну и обратите внимание на все эти пакеты:
много для пятницы
Похоже, что я сдаюсь - слишком много для пятницы
замаскировал:
>=dev-lang/ruby-2.0.0
>=virtual/rubygems-6
>=dev-ruby/json-1.8.0
>=dev-ruby/rake-0.9.6
И дальше, что бы я не пытался пересобрать, получаю: (без предупреждения о маскировках - их опускаю)
Есть идея, что нужно пересобрать dev-ruby/rubygems-2.0.3 без RUBY_TARGETS="(ruby20)" , но непонятно как это сделать
.
/etc/portage/make.conf :
bla-bla-bla
RUBY_TARGETS=ruby19
bla-bla-bla
Мы тоже не всего читали Шнитке!.. © В. Вишневский
Да нет же!
Естественно, что в make.conf стоит RUBY_TARGETS=ruby19
Проблема в том, что система не может (или не хочет) очистить установку руби-2 - проверено дома, где руби еще не обновлялся, шеф ставится без проблем (emerge -pv)
Почему-то не помогает и маскировка.
Попробую вот что: установить руби-2. потом полностью очистить от него систему, затем шефа, а потом уже буду накатывать руби.
Проблема обсуждается тут -
Проблема обсуждается тут - https://bugs.gentoo.org/show_bug.cgi?id=483254, начиная с Comment 3
Нейтральность - высшее достижение сознания!
спасибо
Уже лучше - chef поставился
1. убрал ruby20 из RUBY_TARGETS в make.conf
2. добавил в package.use.force
dev-ruby/json -ruby_targets_ruby20
dev-ruby/racc -ruby_targets_ruby20
dev-ruby/rake -ruby_targets_ruby20
dev-ruby/rdoc -ruby_targets_ruby20
dev-ruby/rubygems -ruby_targets_ruby20
3. ругалось на json-1.8 - временно добавил его в package.mask
4. установил шеф
но :)
emaint --check world
Emaint: check world 100% [============================================>]
echo "ruby_targets_ruby20" >>
Спасибо, помогло
на этот раз все получилось:
1. создал папку /etc/portage/profile
2. замаскировал ruby_targets_ruby20 флаг
3. удалил за ненадобностью package.use.force
система стала обновляться.
Спасибо за хороший совет: теперь при обновлении шефа на версию руби 2.0 можно будет просто удалить use.mask