LinuxForum.Fans
Тема

Вопросы гентушника

Автор: Fat-Zer 44 сообщений 8175 просмотров
#170855

С debian-based дистрибутивами дела серьёзного не имел, а освоиться хочется быстро и безболезненно, так что для начала хочется найти аналоги в системах управления пакетами...
в общем для начала, что бы не изобретать велосипед:
кто-нибудь видел статью по сравнению apt/dpkg с portage?

#170859
Fat-Zer написал:
кто-нибудь видел статью по сравнению apt/dpkg с portage?

а что там сравнивать?
Кстати, вот на ЛОРе есть что то

#170860

Fat-Zer, лучше конкретно что-нибудь спрашивай. wink

#170861

кто-нибудь видел статью по сравнению apt/dpkg с portage?

Это какой true-гентушник будет спрашивать про статьи?
man apt
А вообще, после генту, дебиан щёлкается как семечки.
Не знаю, дебиан-юзеры балуются сейчас apt-build'ом ?

#170864
iSun написал:
а что там сравнивать?

просто аналогии...

newzenon написал:
Fat-Zer, лучше конкретно что-нибудь спрашивай.

ладно... начну с базовых вещей...
есть ли деление установленных пакетов на "избранные" и подтянутые по зависимостям? Если есть, то есть ли аналог world-файла (в котором хранится список избранных и который можно редактировать)? Как хранится список установленных пакетов? в какой-то базе данных?
как идёт управление репозитариями? через какой-то один файл? какой?
существует ли какая-то система автоматизированной сборки?(автоматически качается пакет с исходниками и автоматически собирается)
Поиск пакетов в репозитариях: с помощью чего (я знаю только как через меню aptitude)? нужен ли дополнительный интрумент для кеширования метаданных(типа eix)?

это ещё не всё... но на клавиатуре перестала работать кнопка "с".

ЗЫ: наверное многое можно нагуглить, но на толковый, всеобъемлющий ман не натыкался... да и ленюсь немного...

#170870

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

Fat-Zer написал:

просто аналогии...

не apt-get он немного другой, аналогии тут имхо далёкие.

Fat-Zer написал:
есть ли деление установленных пакетов на "избранные" и подтянутые по зависимостям?

apt-get всегда стремится удовлетворить зависимости, если нет то просто пакет не поставит, aptitude в этом плане более гибок, хотя aptitude просто больше информации даёт apt-get'у незаметно для пользователя.
Деление есть на пакеты установленные вручную и автоматически - те которые автоматом будут обновляться.

Fat-Zer написал:
Если есть, то есть ли аналог world-файла (в котором хранится список избранных и который можно редактировать)? Как хранится список установленных пакетов? в какой-то базе данных? как идёт управление репозитариями? через какой-то один файл? какой?

При работе с пакетами вам нужны только конфигурационные файлы apt-get
Главный /etc/apt/sources.list, и каталоги для автодобавления /etc/apt/sources.list.d/
Ещё один важный файл - /etc/apt/preferences - задаёт приоритет для целой ветки (stable\testing\unstable .....) либо можно для отдельных пакетов, по умолчанию его нет или он пуст, вообще нужен если использовать допустим сразу и stable релиз и unstable.

Fat-Zer написал:
существует ли какая-то система автоматизированной сборки?(автоматически качается пакет с исходниками и автоматически собирается)

apt-build же, но me не рекомендует сборкой заниматься, мало этого было в gentoo?
Один пакет deb можно собрать- ./configure && make && checkinstall

Fat-Zer написал:
Поиск пакетов в репозитариях: с помощью чего (я знаю только как через меню aptitude)? нужен ли дополнительный интрумент для кеширования метаданных(типа eix)?

Обычно aptitude search _имя_пакета_
Кеш тусует тут - /var/cache/apt

Так я уже сам смысл вопроса теряю, давай более конкретно. :lol:

ы репы у меня смотри http://zenon.sytes.net/deb-repo/

#170886
newzenon написал:
Деление есть на пакеты установленные вручную и автоматически - те которые автоматом будут обновляться.

а те которые установлены вручную не будут автоматом обновляться? oO и не совсем поняли вопрос... могу рассказать "как у нас": есть "база данных", со списком установленных в системе пакетов, она не подлежит прямому редактированию. И есть список "избранных пакетов", он находится в двоичном файле и его можно редактировать напрямую. В нём содержатся пакеты, которые пользователь сам выбрал и знает, что они ему нужны. Так что они и их зависимости не будут удалятся при очистке системы. А как это у вас устроено?

newzenon написал:
Главный /etc/apt/sources.list, и каталоги для автодобавления /etc/apt/sources.list.d/

это, я так понял списки репозитариев...

newzenon написал:
сборкой заниматься, мало этого было в gentoo?

просто для общего развития...

newzenon написал:
ак я уже сам смысл вопроса теряю, давай более конкретно.

опять же "у нас-у вас":
у нас: для поиска есть утилита eix, что бы у неё были актуальные данные надо после обновления дерева портов запускать eix-update и eix-remote update. + у неё есть такая плюшка, что она ищет не только в подключённых репозитариях... но нужно поддерживать её в актуальном состоянии, надо ли для apt-search принимать подобные действия? а у вас как?

в догонку: как очищать систему от невостребованных зависимостей?

#170899

И скорее так: отдельного какого-то файла в котором "содержатся пакеты, которые пользователь сам выбрал и знает, что они ему нужны" - на самом деле нет, есть метапакеты (пакеты пустышки) которые просто подтягивают за собой кучу других, например 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

#170902
newzenon написал:
Вообще aptitude update - как отработает скажет что обновилось, что устарело и надо удалить, aptitude safe-upgrade \ full-upgrade всё сделает сам, кеш почистить aptitude clean \ autoclean

apt-get autoremove

#170903
iSun написал:
[quote=newzenon]Вообще aptitude update - как отработает скажет что обновилось, что устарело и надо удалить, aptitude safe-upgrade \ full-upgrade всё сделает сам, кеш почистить aptitude clean \ autoclean

apt-get autoremove[/quote]
Это удалит и те пакеты, которые могут быть нужны пользователю,
но от которых не зависят другие и поэтому они могут быть удалены
безопасно для системы в целом, поэтому и я этим не пользуюсь и
встречал рекомендации этого не делать.

Пётр.

#170926

Fat-Zer написал:
есть ли деление установленных пакетов на "избранные" и подтянутые по зависимостям?
Если я правильно понял, то есть "автоматически установленные" и "вручную установленные". Можно поменять флаг с помощью aptitude:[console]# aptitude markauto <package>
или
# aptitude unmarkauto <package>[/console]

Peter написал:
Это удалит и те пакеты, которые могут быть нужны пользователю
Врядли пользователю понадобятся автоматически установленные пакеты. Впрочем, могут и быть, но им я бы посоветовал сменить флаг на "установленный вручную".
#170999

aptitude

text
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

text

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

#171011

всё немного не в том ключе... больше интересует не вопрос "как это сделать?", а "как оно работает?"...
как (примерно) работает portage:
при обновлении(emerge -NuD world):
1. /var/lib/portage/world и строится граф зависимостей на основе ебилдов и юс-флагов
2. Все пакеты, версии которых отличаются от уже установленных в системе, обновляются.

при очистке системы, удалении не нужных зависимостей(emerge --depclean):
1. --"--
2. Все пакеты, которых нет в графе удаляются

при установке пакета(emerge <package>):
1. строим граф для пакета.
2. устанавливаем/обновляем все пакеты, которые отличаются.
само собой это всё без учёта блокировок итп...

за счёт того, что всё до смешного просто, всё работает достаточно медленно.

Как эти действия выполняет apt/dpkg?

#172351

так... кое что проясняется...
вся информация(зависимости, блокировки, описание итп) содержится как минимум внутри самих deb пакетах. но всё это должно ещё где-то кешироваться, ибо напрямую это работало бы ещё медленее ебилдов.
[далее мои догадки]
Остальная часть вряд ли сильно отличается... строится такой же граф при открытии aptitude'а и в него добавляются/удаляются узлы с учётом зависимостей/блокировок. при нажатии на g находится разница и производятся действия, установка/удаление.
остаётся вопрос: какой механизм кеширования всего этого? и где оно хранится?

На буржуйских форумах с такими вопросами отсылают в debian-devel@lists.debian.org, но я туда не хочу. smile

#173585
Fat-Zer написал:
какой механизм кеширования всего этого? и где оно хранится?

Я ж в самом начале сказал:
Кеш тусует тут - /var/cache/apt smile

#173597

на всякий случай пара вопросов о взаимоотношениях apt и dpkg: apt ведь запускает dpkg как бекэнд? и основная задача apt состоит именно в работе с репозитариями? на кого приходится разруливание зависимостей? dpkg?

newzenon написал:
Кеш тусует тут - /var/cache/apt

есть какой-то пруф, что там именно они? по информации из неавторитетных источников и по собственным домыслам там содержится: пакеты(каталог archive), список пакетов(pkgcache.bin) и список пакетов с исходниками(srcpkgcache.bin). Возможно там не только они... что вообще это за файл? что за формат? и что там хранится?

что я ещё обнаружил:
списки пакетов в репозитариях хранятся в /var/lib/apt. кто-то видел инфу по ним в годном виде?
пока не исследовал каталог /var/lib/dpkg, судя по всему там тоже много чего интересного... кто-то видел готовую инфу?

#173727

newzenon, уже говорил, интересует не "как с этим работать", а "как оно работает".

#173739

Fat-Zer, тогда лучше поищи что-нибудь про сборку пакетов, и автоматизацию сборки - там как раз вроде и видел.

#176644

ладно... пара вопросов по практике...
как управлять версиями пакетов? допустим хочу оставаться на стабильной ветке, но использовать некоторые свежие пакеты...
допустим есть пакет virtualbox-guest-additions. как сделать, чтобы система автоматом устанавливала известные ей свежие версии, скажем не выше 4.0.10 ?

Войдите или зарегистрируйтесь, чтобы ответить.