С debian-based дистрибутивами дела серьёзного не имел, а освоиться хочется быстро и безболезненно, так что для начала хочется найти аналоги в системах управления пакетами...
в общем для начала, что бы не изобретать велосипед:
кто-нибудь видел статью по сравнению apt/dpkg с portage?
Вопросы гентушника
Fat-Zer, лучше конкретно что-нибудь спрашивай. wink
кто-нибудь видел статью по сравнению apt/dpkg с portage?
Это какой true-гентушник будет спрашивать про статьи?
man apt
А вообще, после генту, дебиан щёлкается как семечки.
Не знаю, дебиан-юзеры балуются сейчас apt-build'ом ?
а что там сравнивать?
просто аналогии...
Fat-Zer, лучше конкретно что-нибудь спрашивай.
ладно... начну с базовых вещей...
есть ли деление установленных пакетов на "избранные" и подтянутые по зависимостям? Если есть, то есть ли аналог world-файла (в котором хранится список избранных и который можно редактировать)? Как хранится список установленных пакетов? в какой-то базе данных?
как идёт управление репозитариями? через какой-то один файл? какой?
существует ли какая-то система автоматизированной сборки?(автоматически качается пакет с исходниками и автоматически собирается)
Поиск пакетов в репозитариях: с помощью чего (я знаю только как через меню aptitude)? нужен ли дополнительный интрумент для кеширования метаданных(типа eix)?
это ещё не всё... но на клавиатуре перестала работать кнопка "с".
ЗЫ: наверное многое можно нагуглить, но на толковый, всеобъемлющий ман не натыкался... да и ленюсь немного...
просто аналогии...
не apt-get он немного другой, аналогии тут имхо далёкие.
есть ли деление установленных пакетов на "избранные" и подтянутые по зависимостям?
apt-get всегда стремится удовлетворить зависимости, если нет то просто пакет не поставит, aptitude в этом плане более гибок, хотя aptitude просто больше информации даёт apt-get'у незаметно для пользователя.
Деление есть на пакеты установленные вручную и автоматически - те которые автоматом будут обновляться.
Если есть, то есть ли аналог world-файла (в котором хранится список избранных и который можно редактировать)? Как хранится список установленных пакетов? в какой-то базе данных? как идёт управление репозитариями? через какой-то один файл? какой?
При работе с пакетами вам нужны только конфигурационные файлы apt-get
Главный /etc/apt/sources.list, и каталоги для автодобавления /etc/apt/sources.list.d/
Ещё один важный файл - /etc/apt/preferences - задаёт приоритет для целой ветки (stable\testing\unstable .....) либо можно для отдельных пакетов, по умолчанию его нет или он пуст, вообще нужен если использовать допустим сразу и stable релиз и unstable.
существует ли какая-то система автоматизированной сборки?(автоматически качается пакет с исходниками и автоматически собирается)
apt-build же, но me не рекомендует сборкой заниматься, мало этого было в gentoo?
Один пакет deb можно собрать- ./configure && make && checkinstall
Поиск пакетов в репозитариях: с помощью чего (я знаю только как через меню aptitude)? нужен ли дополнительный интрумент для кеширования метаданных(типа eix)?
Обычно aptitude search _имя_пакета_
Кеш тусует тут - /var/cache/apt
Так я уже сам смысл вопроса теряю, давай более конкретно. :lol:
ы репы у меня смотри http://zenon.sytes.net/deb-repo/
Деление есть на пакеты установленные вручную и автоматически - те которые автоматом будут обновляться.
а те которые установлены вручную не будут автоматом обновляться? oO и не совсем поняли вопрос... могу рассказать "как у нас": есть "база данных", со списком установленных в системе пакетов, она не подлежит прямому редактированию. И есть список "избранных пакетов", он находится в двоичном файле и его можно редактировать напрямую. В нём содержатся пакеты, которые пользователь сам выбрал и знает, что они ему нужны. Так что они и их зависимости не будут удалятся при очистке системы. А как это у вас устроено?
Главный /etc/apt/sources.list, и каталоги для автодобавления /etc/apt/sources.list.d/
это, я так понял списки репозитариев...
сборкой заниматься, мало этого было в gentoo?
просто для общего развития...
ак я уже сам смысл вопроса теряю, давай более конкретно.
опять же "у нас-у вас":
у нас: для поиска есть утилита eix, что бы у неё были актуальные данные надо после обновления дерева портов запускать eix-update и eix-remote update. + у неё есть такая плюшка, что она ищет не только в подключённых репозитариях... но нужно поддерживать её в актуальном состоянии, надо ли для apt-search принимать подобные действия? а у вас как?
в догонку: как очищать систему от невостребованных зависимостей?
И скорее так: отдельного какого-то файла в котором "содержатся пакеты, которые пользователь сам выбрал и знает, что они ему нужны" - на самом деле нет, есть метапакеты (пакеты пустышки) которые просто подтягивают за собой кучу других, например xfce4-goodies - подтянет за собой всё возможное из крысы, gnome-core - установит минимальный gnome... и т д. Часто возникают (скорее от непонимания) проблемы - допустим мы хотим удалить какие-то пакеты которые входят в состав xfce4-goodies - при этой попытке будет предложено снести всю крысу smile , чтобы удалить надо сначала вот такой фент: aptitude unmarkauto xfce4-goodies
Немного не понял "в догонку: как очищать систему от невостребованных зависимостей?"
Вообще aptitude update - как отработает скажет что обновилось, что устарело и надо удалить, aptitude safe-upgrade \ full-upgrade всё сделает сам, кеш почистить aptitude clean \ autoclean
Вот ещё:
http://ru.wikipedia.org/wiki/Advanced_Packaging_Tool
Вообще aptitude update - как отработает скажет что обновилось, что устарело и надо удалить, aptitude safe-upgrade \ full-upgrade всё сделает сам, кеш почистить aptitude clean \ autoclean
apt-get autoremove
[quote=newzenon]Вообще aptitude update - как отработает скажет что обновилось, что устарело и надо удалить, aptitude safe-upgrade \ full-upgrade всё сделает сам, кеш почистить aptitude clean \ autoclean
apt-get autoremove[/quote]
Это удалит и те пакеты, которые могут быть нужны пользователю,
но от которых не зависят другие и поэтому они могут быть удалены
безопасно для системы в целом, поэтому и я этим не пользуюсь и
встречал рекомендации этого не делать.
Пётр.
Если я правильно понял, то есть "автоматически установленные" и "вручную установленные". Можно поменять флаг с помощью aptitude:[console]# aptitude markauto <package>есть ли деление установленных пакетов на "избранные" и подтянутые по зависимостям?
или
# aptitude unmarkauto <package>[/console]
Врядли пользователю понадобятся автоматически установленные пакеты. Впрочем, могут и быть, но им я бы посоветовал сменить флаг на "установленный вручную".Это удалит и те пакеты, которые могут быть нужны пользователю
aptitude
aptitude install: установка программного обеспечения, а также построение необходимых зависимостей.
aptitude remove: удаление пакетов, а также обособленных зависимостей.
aptitude purge: удаление пакетов и обособленных зависимостей, а также ненужных конфигурационных файлов.
aptitude search: поиск пакетов по локальному списку apt.
aptitude update: обновление локального списка пакетов.
aptitude upgrade: обновление уже установленных пакетов по обновленному списку пакетов.
aptitude clean: удаление установочных файлов.
aptitude dist-upgrade: обновление пакетов, даже если некоторые из них не будут использованы для установки.
aptitude show: подробная информация о пакете.
aptitude autoclean: удаление устаревших пакетов, но сохранение текущих.
aptitude hold: исправление ошибок в пакете текущей версии, но не его обновление. aptitude help
install - Установить/обновить пакеты
remove - Удалить пакеты
purge - Удалить пакеты и их файлы конфигурации
hold - Зафиксировать пакеты
unhold - Отменить команду hold для пакета
markauto - Пометить пакет, что он был установлен автоматически
unmarkauto - Пометить пакет, что он был установлен вручную
forbid-version - Запретить aptitude обновлять определённую версию пакета.
update - Загрузить список новых/обновлённых пакетов
safe-upgrade - Perform a safe upgrade
full-upgrade - Perform an upgrade, possibly installing and removing packages
forget-new - Забыть, какие пакеты "новые"
search - Поиск пакета по имени и/или выражению
show - Показать подробную информацию о пакете
clean - Удалить загруженные файлы пакетов
autoclean - Удалить старые загруженные файлы пакетов
changelog - Посмотреть changelog пакета
download - Загрузить файл .deb для пакета
reinstall - Загрузить и (возможно) переустановить уже установленный пакет
Параметры:
-h Этот текст помощи
-s Имитировать действия, но не выполнять их на самом деле.
-d Только загрузить пакеты, ничего не устанавливать и не удалять.
-P Всегда спрашивать подтверждение или действия
-y Предполагать ответ 'yes' на простой вопрос yes/no
-F format Задать формат отображения результатов поиска; смотрите руководство
-O order Задать формат сортировки результатов поиска; смотрите руководство
-w width Задать ширину вывода результатов поиска
-f Принудительно исправлять неработоспособные пакеты.
-V Показывать версию устанавливаемых пакетов.
-D Показывать зависимости автоматически изменяемых пакетов.
-Z Показывать изменение размера установки каждого пакета.
-v Отображать дополнительную информацию. (может быть введено несколько раз)
-t [release] Задать выпуск, из которого должны быть установлены пакеты
-q Не выводить индикатор прогресса в режиме командной строки.
-o key=val Вручную установить значение параметра настройки с именем 'key'
--with(out)-recommends Указать, будут ли рекомендуемые пакеты
трактоваться как строгие зависимости
-S fname Читать aptitude информацию о расширенном статусе из fname.
-u Загрузить список новых пакетов при запуске.
-i Запустить установку при запуске.
Есть ещё aptitude-gtk wink
всё немного не в том ключе... больше интересует не вопрос "как это сделать?", а "как оно работает?"...
как (примерно) работает portage:
при обновлении(emerge -NuD world):
1. /var/lib/portage/world и строится граф зависимостей на основе ебилдов и юс-флагов
2. Все пакеты, версии которых отличаются от уже установленных в системе, обновляются.
при очистке системы, удалении не нужных зависимостей(emerge --depclean):
1. --"--
2. Все пакеты, которых нет в графе удаляются
при установке пакета(emerge <package>):
1. строим граф для пакета.
2. устанавливаем/обновляем все пакеты, которые отличаются.
само собой это всё без учёта блокировок итп...
за счёт того, что всё до смешного просто, всё работает достаточно медленно.
Как эти действия выполняет apt/dpkg?
так... кое что проясняется...
вся информация(зависимости, блокировки, описание итп) содержится как минимум внутри самих deb пакетах. но всё это должно ещё где-то кешироваться, ибо напрямую это работало бы ещё медленее ебилдов.
[далее мои догадки]
Остальная часть вряд ли сильно отличается... строится такой же граф при открытии aptitude'а и в него добавляются/удаляются узлы с учётом зависимостей/блокировок. при нажатии на g находится разница и производятся действия, установка/удаление.
остаётся вопрос: какой механизм кеширования всего этого? и где оно хранится?
На буржуйских форумах с такими вопросами отсылают в debian-devel@lists.debian.org, но я туда не хочу. smile
какой механизм кеширования всего этого? и где оно хранится?
Я ж в самом начале сказал:
Кеш тусует тут - /var/cache/apt smile
на всякий случай пара вопросов о взаимоотношениях apt и dpkg: apt ведь запускает dpkg как бекэнд? и основная задача apt состоит именно в работе с репозитариями? на кого приходится разруливание зависимостей? dpkg?
Кеш тусует тут - /var/cache/apt
есть какой-то пруф, что там именно они? по информации из неавторитетных источников и по собственным домыслам там содержится: пакеты(каталог archive), список пакетов(pkgcache.bin) и список пакетов с исходниками(srcpkgcache.bin). Возможно там не только они... что вообще это за файл? что за формат? и что там хранится?
что я ещё обнаружил:
списки пакетов в репозитариях хранятся в /var/lib/apt. кто-то видел инфу по ним в годном виде?
пока не исследовал каталог /var/lib/dpkg, судя по всему там тоже много чего интересного... кто-то видел готовую инфу?
http://linuxforum.ru/help/%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D1%8B:debian:dev_deb
http://linuxforum.ru/help/%D0%B4%D0%B8%D1%81%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B8%D0%B2%D1%8B:debian:apt
Где-то читал по лучше статьи... Найду скажу, вот не помню в cookbook есть об этом или нет.
newzenon, уже говорил, интересует не "как с этим работать", а "как оно работает".
Fat-Zer, тогда лучше поищи что-нибудь про сборку пакетов, и автоматизацию сборки - там как раз вроде и видел.
ладно... пара вопросов по практике...
как управлять версиями пакетов? допустим хочу оставаться на стабильной ветке, но использовать некоторые свежие пакеты...
допустим есть пакет virtualbox-guest-additions. как сделать, чтобы система автоматом устанавливала известные ей свежие версии, скажем не выше 4.0.10 ?