LINUX.ORG.RU

Несколько вопросов по Aptitude.


0

1

Я пользуюсь Дебианом. Содержимое preferences настроено так, что testing считается основным, потом stable, потом unstable и sid. Есть вопросы по Aptitude:

1). Существует команда apt-show-versions, показывающая, какие версии пакетов доступны, и можно ли обновиться. Например:

apt-show-versions -a kdetoys
kdetoys 4:3.5.8-1 install ok installed
kdetoys 4:3.5.9-2 stable  mirror.yandex.ru
kdetoys 4:4.4.5-1 testing mirror.yandex.ru
kdetoys 4:4.4.5-1 sid     mirror.yandex.ru
kdetoys/testing upgradeable from 4:3.5.8-1 to 4:4.4.5-1
Всё замечательно и хорошо расписано. Но aptitude так красиво не рисует, он показывает только версии пакетов, но никак не источники. Также, о том, до какой версии пакет обновится при нажатии кнопки «+», можно только догадываться.

Так вот, есть ли примочка/настройка/плагин к aptitudу, чтобы вывод списка версий пакета был таким же замечательным, как и в apt-show-versions?

2). Как некоторые заметили, я не обновляю кеды, хотя они постоянно порываются это сделать (в Stable - 3.5.10, в testing - 4.4). Как максимально православно зафиксировать все сотни пакетов, относящиеся к kde, в состоянии stable? Когда я делаю hold пакета kde, который зависит от всех остальных, это не мешает всем остальным помечаться как обновляемые, и в этом проблема. То есть, как фиксировать пакеты так, чтобы следом фиксировались все, от которых они зависят?

3). И всё-таки, как намертво фиксировать пакет? Вот попадает фиксированный пакет в список обновляемых, я тыкаю «U» для обновления всего, ну или тыкаю «+» для обновления ветки, а фиксация берёт и слетает. В хелпе написано, что фиксация запрещает обновление, а у меня ничего не запрещается (хотя состояние меняется с «i» на «ih»). Что не так?


Слишком много вопросов. А были ли попытки читать документацию?

См. документацию aptitude по -F (format). Поля (по памяти): %v - текущая версия, %V - устанавливаемая версия, %p - название пакета(?) и всякие разные другие. Не хочу сейчас смотреть, но думаю, что и репозиторий там имеется. Это форматирование вывода.

Теперь насчет обновляемых пакетов. Делаешь aptitude update, а потом делаешь aptitude search ~U. Тебе выползет список обновляемых пакетов. Формат вывода можешь менять -F.

aptitude -F «%p is upgradable from %v to %V» search ~U

Конкретный репозиторий можешь выбрать при помощи -t

Zubok ★★★★★
()

Обновлять пакеты из testing в stable — это моветон. Это дурная практика. Но если ты хочешь что-то обновлять из testing, то пользуйся такой штукой, как apt pinning (man apt_preferences) и дай нужным пакетам нужные приоритеты.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

>А были ли попытки читать документацию?

Читал хелп и мануалы. Может быть, плохо читал, но то, что надо - не нашёл.

См. документацию aptitude по -F (format).

Посмотрел. Почти то, что надо. Оно будет в ncurses-режиме работать?

Обновлять пакеты из testing в stable — это моветон.

Не понял фразы. Я живу на тестинге, просто некоторые вещи хочется брать из стейбла.

то пользуйся такой штукой, как apt pinning (man apt_preferences) и дай нужным пакетам нужные приоритеты.

Про apt pinning я читал, но не врубился, как им пользоваться. Наверное, слишком глуп. Сможет ли pinning зафиксировать в одну строчку _все_ пакеты, например, из KDE?

Хорошо, если сможет. Но вопрос-то был, как это сделать в _aptitude_ не отходя от кассы, а не уровнем ниже! Да и зачем тогда хвалёные aptitudовские hold'ы?

Vshmuk
() автор топика
Ответ на: комментарий от Vshmuk

>Про apt pinning я читал, но не врубился, как им пользоваться. Наверное, слишком глуп. Сможет ли pinning зафиксировать в одну строчку _все_ пакеты, например, из KDE?

В том виде, в котором он есть в stable, не может. Надо вручную перечислить пакеты в поле Package (это будет адом для KDE, скорее всего). Попробуй придержать только kdelibs5, например. Тогда, может быть, придержится и KDE:

Это в /etc/apt/preferences, потом aptitude update:

Package: kdelibs5 Pin: release o=Debian Pin-Priority: -1

Не понял фразы. Я живу на тестинге, просто некоторые вещи хочется брать из стейбла.

Вообще, при твоем подходе тебе полсистемы придется заморозить. А как ты вообще ставил старый KDE на testing, расскажи? Это специальный форвардпорт для testing или ты из stable ставил? То, что ты задумал — это ад вообще. У тебя конфликт на конфликте будет, если ты заморозишь полсистемы. Прикинь, если старый KDE будет зависеть от системной библиотеки старой версии, а новый софт из testing уже этого не захочет?

Еще идейка (тоже ад). Ты можешь сделать hold для всех пакетов, от которых зависит kde (или какой-там пакет главный?) и только те, которые установлены. То есть что-то типа:

aptitude hold '?reverse-depends(kde)~i'

Лучше сначала погляди на адовый список aptitude search '?reverse-depends(kde)~i' и только потом уже думай и морозь. Обрати внимание на то, что туда куча системных библиотек попадает. Можно еще попробовать ограничить это все только библиотеками, которые только из stable потребовались. Наверное, нужно еще в строчку добавить ~Astable, т. е.

aptitude search '?reverse-depends(kde)~i~Astable'

Я не могу предугадать, чем это все закончится. Еще можно туда рекомендуемые присовокупить, если очень надо будет.

Правильное решение — самое сложное. Это форвардпортить старый KDE в testing. Вообще, сочувствую. :)

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Блин, форматирование.

Это в /etc/apt/preferences, потом aptitude update:

Package: kdelibs5
Pin: release o=Debian
Pin-Priority: -1

Zubok ★★★★★
()
Ответ на: комментарий от Vshmuk

Ну еще добавлю, что замораживание прямо всех пакетов (особенно системных библиотек), от которых зависит KDE3, может быть излишним, потому что зависимости могут быть мягкими, то есть в control прописано, что зависит от библиотеки с версией >=1.2, например. Этому условию может удовлетворять библиотека из testing, но работу никто не прогарантирует, если там изменился API. Сопровождающий в данном случае не ограничил сильно зависимость. Автоматически распознать такие случаи — это сложнее. Можно попробовать исключить из списка замораживаемых библиотек testing те, с которыми KDE3 уже уживается, то есть !~Atesting и попробовать составить условие:

~reverse-depends(kde)~i!~Atesting, то есть пакеты, от которых завист kde, которые установлены и которые *не* из testing. Если такх пакетов немного, то их можно не морозить, а просто занести в список в /etc/apt/preferences и поставить приоритет 1001, например. Или крайний случай -1.

Повторю, что я такие фокусы по забиванию квадратных осей в круглые отверстия не проводил. Поэтому за результат не отвечаю. :)

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

>А как ты вообще ставил старый KDE на testing, расскажи?

Я его ставил ещё тогда, когда никаких КДЕ4 ещё в проекте не было :).

По поводу того, что приходится замораживать полсистемы - ты прав. С каждым днём со старыми кедами жить всё сложнее. На днях выяснилось, что я не могу обновить apt, так как от него зависит старый konqueror :)

Спасибо за советы, всё попробую. Но кто-нибудь может мне рассказать про п.3? Зачем нужен hold, c чем его едят и как сделать так, чтобы hold не сбрасывался?

Vshmuk
() автор топика
Ответ на: комментарий от Vshmuk

если бы я ей пользовался, может и сказал бы.

maloi ★★★★★
()

> Содержимое preferences настроено так, что testing считается основным, потом stable, потом unstable и sid.

Отчаянный парень.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.