Downgrade to Gnome 2.22 (нужны некоторые советы)

Модератор: Модераторы разделов

Аватара пользователя
shevan
Сообщения: 992
ОС: Debian, Puppy

Downgrade to Gnome 2.22

Сообщение shevan »

Вот пакеты
http://www.schlunix.org/archlinux/extra/os/i686/

1. Можно ли скачать и установить вместе с зависимостями средствами pacman? (просто указав версию)
2. Или нужно писать самопальный скрипт на скачивание и дальнейшую установку с помощью опции pacman -U? Если да, то как можно рекурсивно узнать зависимости?

Т.е. ищу правильный и простой способ установки.
Буду рад совету.
Спасибо сказали:
Аватара пользователя
Alastis
Сообщения: 86
ОС: Arch

Re: Downgrade to Gnome 2.22

Сообщение Alastis »

shevan писал(а):
01.02.2010 13:53
1. Можно ли скачать и установить вместе с зависимостями средствами pacman? (просто указав версию)

Кстати, а как указать версию пакета?
Пробовал с префиксом =пакет-версия, и пакет:ветка (а-ля генту), не работает.
man pacman особо не просветил по этому поводу.
Спасибо сказали:
Аватара пользователя
Gloomy
Сообщения: 340
Статус: сочувствующий

Re: Downgrade to Gnome 2.22

Сообщение Gloomy »

Краеугольный камень веток репозитория в ArchLinux - это база пакетов. Она находится в файле *.db.tar.gz и представляет собой дерево каталогов. Их имена это "программа + версия", а содержимое - метаданные (описание, зависимости, контрольная сумма и т.д.). Ветка репозитория является целой (т.е. поддерживает автоматическое разрешение зависимостей и версий) только когда в ней есть все пакеты именно тех версий, которые перечислены в базе. Отсюда проистекает:

"+" [достоинство]: не нужно заботиться о контроле версий (именно версий, а не зависимостей, т.к. бывает что всего одна единственная слишком новая/старая библиотечка обрушивает половину системы);

"-" [недостаток]: если изменилась версия хотя бы одного пакета, базу пакетов нужно пересобрать заново;

Как следствие, при скачивании веток репозитория на винт получается довольно паршивая ситуация - даже на не самом хилом канале 100 Мбит за то время, пока качаются пакеты, успевает обновиться несколько программ и вместе с ними база. Целостность ветки нарушается и часть пакетов поставить с разрешением зависимостей уже не удастся - только врукопашную, что черевато проблемами. Поэтому совет №1 (первый и последний): никогда не устанавливайте большое количество пакетов командой "pacman -U *". Две-три штуки, вручную проверив зависимости - не вопрос, но не пару-тройку десятков! Вызвано это тем, что в некоторых пакетах есть пост-установочные скрипты. Ставим, к примеру, программу Х, запускающую скрипт, вносящий некоторые изменений в конфиг. После чего ставим программу Y, эти изменений читающую. pacman ситуацию разрулит корректно - сначала установит X, потом Y. Ну а рукопашная схватка a-la "pacman -U *" даст совершенно непредсказуемый результат: поставит сначала Y, а эта Y не найдет чего надо и скопытится. Особенно весело бывает когда отъезжает readline - и система не грузится, и переустановка пакетов (что ручная, что автоматическая) ничего не дает. Я так один раз уже прокололся, попытавшись накатить общесистемное обновление лихим "pacman -U *".

По причине описанной выше свистопляски с копированием ветки из Инета на винт рабочих вариантов остается три:

1) использовать rsync на поддерживающих этот протокол зеркалах - rsync достаточно красиво разруливает ситуации когда в процессе закачки на удаленном хосте обновилось несколько файлов;

2) написать скрипт - я лично именно так и сделал, накатав "на коленке" за 10 минут корявенький, но рабочий скриптик, работа которого сводится к следующему: скачать базу, распаковать ее и скачать все перечисленные в ней пакеты с попутной проверкой контрольных сумм (а ну как битый попадется?). Скриптик не без недостатков: приходится запускать несколько раз (см. выше про обновление базы во время закачки); не умеет он и подчищать устаревшие пакетики, более не входящие в базу. Впрочем, оба недостатка легко можно устранить.

3) скачать только пакеты, а потом сделать базу самому. Недостаток данного метода в том, что контроль версий ложится целиком и полностью на совесть и грамотность сборщика. Зависимости-то разрулятся, а вот будет ли это работать - вопрос неоднозначный... Поэтому лучше пользоваться той базой, которая идет в ветке репозитория, она хотя бы уже худо-бедно проверена. Но если есть желание поэкспериментировать, то вот что надо делать:

а) скидать пакеты подходящих (по мнению сборщика) версий в один каталог;

б) перейти в этот каталог и дать команду: "repo-add myrepo.db.tar.gz *". Утилита просмотрит все пакеты в текущем каталоге и состряпает из них файл базы myrepo.db.tar.gz;

в) добавить в /etc/pacman.conf новую ветку:

Код: Выделить всё

[myrepo]
Server = file:///путь-к-каталогу-с-веткой

г) выполнить "pacman -Sy" чтобы pacman подхватил новую ветку и сделал перечисленные в ней пакеты доступными к установке. Зависимости будут разрешаться автоматически, а вот контроль версий - это, напомню, на совести и грамотности сборщика.

P.S. И да, pacman в принципе не понимает пакетов с полностью одинаковыми именами, но разными версиями. Можно лишь создать огромное количество баз со всеми возможными сочетаниями всех пакетов между собой. Или всего одну базу, но перебрать каждый пакет, добавив к его имени номер версии и потом вручную поправив зависимости. Например присвоить пакетам новые имена: "qt43x" для Qt 4.3.x, "qt44x" для Qt 4.4.x, "qt45x" для Qt 4.5.x и т.д. по образу и подобию.

P.P.S. И опять таки да - все перечисленные выше проблемы и недостатки происходят из единого корня: идеологии ArchLinux поддерживать софт в репозитории всегда "на острие атаки", чуть ли не ежечасно обновляя в нем пакеты. Отсюда и невозможность создать локальную копию ветки без посторонних средств, отсюда и невозможность создать пакеты "qt" и "qt" с версиями 3.3 и 4.4 соответственно. Поэтому вариантов выбора небогато - или соглашаешься плыть по течению, оставаясь "на острие атаки", или бросаешь ArchLinux вообще, или начинаешь городить на его основе что-то свое где таких проблем не будет. Меня лично частые обновления устраивают - люблю юзать свежий софт и скромно помогать разработчикам дистра багрепортами :blush2:
Спасибо сказали:
Аватара пользователя
shevan
Сообщения: 992
ОС: Debian, Puppy

Re: Downgrade to Gnome 2.22

Сообщение shevan »

Gloomy, спасибо за содержательный пост. прочитал его вдумчиво.

Интересно, а почему сообщество не собирает их с такими именами (gnome220, gnome224 ну и соответствующие им пакеты). Действительно упростило бы. Наверное, мало кому нужно.
Еще мне нравится вариант распространения kdemod4 и kdemod3 проекта chakra - их просто тупо поделили на два репозитария. Подобное вы и сами предложили как способ решения.
Спасибо сказали:
Аватара пользователя
Gloomy
Сообщения: 340
Статус: сочувствующий

Re: Downgrade to Gnome 2.22

Сообщение Gloomy »

shevan писал(а):
05.02.2010 22:06
почему сообщество не собирает их с такими именами

Потому что "на острие атаки" - такова политика данного дистра :dntknw: Кому очень уж надо, тот собирает свою ветку с любыми версиями любого софта.

... вот чего мне очень не хватает в этом дистре, так это возможности сделать "make world", пересобрав все под конкретно свой комп с нужными оптимизациями :rolleyes:
Спасибо сказали: