04.01.2011 14:20
ladykosha — Как я ставила Scratch или Обмани dpkg
Прочитала я вилинуховый пост про Scratch, и подумала, почему бы не поставить своему дитяти этакую забавку. Нарыла на сайте deb-пакет, скачала, вознамерилась поставить. И споткнулась об зависимость. Scratch хочет pulseaudio >= 1.0.9, а у меня всего-то 0.9.21-3 (у меня debian squeeze).Тем не менее, работать недоустановленный Scratch вовсе не отказывался. И сын уже пришёл в восторг от такого способа обучения, временами приходится от компа оттаскивать. :)
Подумалось мне, что достаточно будет просто "обмануть" dpkg, чтобы всё стало совсем хорошо.
Способ "обмана" простой. Нужно исправить два файла: /var/lib/dpkg/available и /var/lib/dpkg/status. Разумеется, сначала сделать резервную копию этих файлов, скажем, в available~ и status~ в том же каталоге - на всякий случай. Если что-нибудь внезапно пойдёт не так, можно будет вернуться к исходному варианту.
Потом открыть "оригинальные" файлы и найти там строчку "Package: scratch". Немного ниже там же будет в начале строки "Depends:" и перечисление зависимостей, включая и "pulseaudio (>= 1.0.9)". Там-то я и заменила цифирки "1.0.9" на "0.9.21". В обоих файлах. Сохранила.
И велела dpkg таки наконец-то установить этот самый Scratch как следует. Проблем не наблюдаю. Правда, надо предупредить, что и звуком мы там не пользуемся за отсутствием колонок у этого компа. Но по слухам и звук работать должен. :)
Заметим, способ работает, но правильнее поступать иначе.
Поставить fakeroot, если его у вас ещё нет (у меня нет), и следовать инструкции из этого комментария.
Спасибо, в следующий раз попробую :)
Кстати, вопрос. При вашем варианте в дальнейшем как будет? Когда потом другие программы ставишь, аптитюд не будет требовать удалить скретч?
Я-то немного побилась с опциями командной строки (к сожалению, ещё не завела привычку записывать все действия, а то бы расспросила, что я делала не так, и как следовало их понимать правильно), а потом просто прибегнула к некогда хорошо сработавшему способу. :)
Кстати, вопрос. При вашем варианте в дальнейшем как будет? Когда потом другие программы ставишь, аптитюд не будет требовать удалить скретч?
Я-то немного побилась с опциями командной строки (к сожалению, ещё не завела привычку записывать все действия, а то бы расспросила, что я делала не так, и как следовало их понимать правильно), а потом просто прибегнула к некогда хорошо сработавшему способу. :)
Мне кажется, hold не имеет отношения к разрешению зависимостей. Только делает так, чтоб пакет игнорировался при safe-upgrade или full-upgrade. Если я ошибаюсь, буду благодарна за разъяснения :)
Ну да. Прямого отношения к зависимостям он не имеет, но по идее, при последующих update/upgrade должен предотвратить удаление оного пакета.
к сожалению, ещё не завела привычку записывать все действия, а то бы расспросила, что я делала не так
можно просто настроить историю команд, чтоб запоминало, например, 1000 последних команд, и потом смотреть последовательность в истории
Спасибо за совет. Она пишется, история, но я про неё как-то забыла. :)
А когда сейчас посмотрела и сравнила с тем, что у IMurzich, даже вопросы отпали :)))
А когда сейчас посмотрела и сравнила с тем, что у IMurzich, даже вопросы отпали :)))
А после этого пока пакет не будет удалён, ни synaptic, ни aptitude ничего делать не будут.
упс, к сожалению будет :(
итого мой способ даст поставить без бубна, а ваш позволит в этот бубун красиво постучать.
итого мой способ даст поставить без бубна, а ваш позволит в этот бубун красиво постучать.
незачто, тут как раз я прошу прощения за то, что пытался ввести в заблуждение.
Можно сделать не много под другому. Пересобрать бинарный пакет.
Распакуем содержимое пакета:
Распакуем содержимое пакета:
dpkg -x scratch_1.4.0.1-0ubuntu5_i386.deb scratch_1.4.0.1
dpkg -e scratch_1.4.0.1-0ubuntu5_i386.deb scratch_1.4.0.1/DEBIAN
Откроем файл control c помощью редактора.vim scratch_1.4.0.1/DEBIAN/control
или пройдемся sed.sed 's/ (>= 1.0.9)//g' -i scratch_1.4.0.1/DEBIAN/control
Соберем пакет обратно.fakeroot dpkg -b scratch_1.4.0.1 scratch_1.4.0.1-0ubuntu5_fix_i386.deb
Спасибо. Уверена, это самый идейно правильный способ. И Вы его хорошо рассказали :)
Вопрос к Вам, если позволите. Насколько важно наличие fakeroot?
Вопрос к Вам, если позволите. Насколько важно наличие fakeroot?
без fakeroot файлы и директории в пакете будут иметь вашу группу, а также владельца.
А если собирать от "настоящего" рута? Ожидать какие-то неприятных последствий?
Иначе говоря, в вашей инструкции обязательно писать "Установите fakeroot, если у вас его ещё нет"?
Иначе говоря, в вашей инструкции обязательно писать "Установите fakeroot, если у вас его ещё нет"?
Боюсь, что мне недостаёт понимания очевидных на Ваш взгляд вещей :(
В общем, ясно. Ставить fakeroot - надо, по крайней мере, пока не очень понимаешь, что делаешь при пересборке и каковы будут последствия :)
Спасибо :)
В общем, ясно. Ставить fakeroot - надо, по крайней мере, пока не очень понимаешь, что делаешь при пересборке и каковы будут последствия :)
Спасибо :)
Пакет будет иметь владельца и группу root. А так ни чего страшного.
Да-а, и только теперь я всё-таки поверила, что поняла. :) Спасибо :)
...
--ignore-depends=package,...
Ignore dependency-checking for specified packages (actually, checking is performed, but only warnings about conflicts are given, noth?
ing else).
...
dpkg --ignore-depends=pulseaudio -i scratch_1.4.0.1-0ubuntu5_i386.deb