Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Программа для добычи и установки dpkg.


Автор: rkosteckiy 6.7.2015, 08:22
Всем привет!
Кто может помочь.
мне нужно используя исходные коды с dpkg, создать программу, который выполняет только добычу и установку пакета.
Кто чем-может помогите.

Автор: Romikgy 6.7.2015, 08:51
поясните , что означает
Цитата(rkosteckiy @  6.7.2015,  07:22 Найти цитируемый пост)
используя исходные коды с dpkg


Цитата(rkosteckiy @  6.7.2015,  07:22 Найти цитируемый пост)
выполняет только добычу и установку пакета


Автор: xvr 6.7.2015, 15:18
dpkg --install package_file не оно?

Автор: rkosteckiy 7.7.2015, 13:35
Цитата(Romikgy @ 6.7.2015,  08:51)
поясните , что означает
Цитата(rkosteckiy @  6.7.2015,  07:22 Найти цитируемый пост)
используя исходные коды с dpkg


Цитата(rkosteckiy @  6.7.2015,  07:22 Найти цитируемый пост)
выполняет только добычу и установку пакета




На сколько я понял, это:
"Используя исходные коды с dpkg" означает, что надо использовать исходные коды программы dpkg, которая уже выполняет поставленную задачу.

"выполняет только добычу и установку пакета" означает, что программа должна выполнять только одну функцию - добыча файлов из пакета и установки их на соответствующие места в файловой системе.
dpkg исполняет много функций.


Автор: _zorn_ 7.7.2015, 19:36
Резонный вопрос - зачем ?
Если надо что то побыстрому в свою поделку впоять - используйте скомпилированные бинарники и вызываейте их с соответствующими параметрами. И тащите за собой весь рантайм который нужен этому бинарнику.
Если нужно по грамотному - разбирайтесь в формате deb пакетов.
Какие то вещи можно дёрнуть из исходников того же dpkg

Или вас научить разбираться в чужих исходниках ?

Автор: rkosteckiy 8.7.2015, 13:23
Цитата(_zorn_ @ 7.7.2015,  19:36)
Резонный вопрос - зачем ?
Если надо что то побыстрому в свою поделку впоять - используйте скомпилированные бинарники и вызываейте их с соответствующими параметрами. И тащите за собой весь рантайм который нужен этому бинарнику.
Если нужно по грамотному - разбирайтесь в формате deb пакетов.
Какие то вещи можно дёрнуть из исходников того же dpkg

Или вас научить разбираться в чужих исходниках ?

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

Не могу понять самое моделирование программы, как она должна работать.


Автор: xvr 8.7.2015, 16:02
Цитата(rkosteckiy @  7.7.2015,  13:35 Найти цитируемый пост)
"выполняет только добычу и установку пакета" означает, что программа должна выполнять только одну функцию - добыча файлов из пакета и установки их на соответствующие места в файловой системе.

Плохая идей. dpkg работает с базой данных, в которой находится информация о всех установленных пакетах. Без обращения к этой базе нельзя правильно выполнить установку любого пакета. Если вы срежете какую то версию dpkg и сделаете из нее свою утилиту, то есть большая вероятность, что при обновлении в системе исходной dpkg может поменяться и формат этой самой базы данных. После этого в лучшем случае ваш установщик перестанет работать, а в худшем он порушит всю базу данных установленных пакетов, что может закончится переустановкой системы  smile 

Я уже не говорю о том, что запуск dpkg (и того, что можно из нее сделать) требует привелегий рута.

Автор: tzirechnoy 8.7.2015, 17:42
(пожав плечами) Файлы из .deb пакета достаются при помощи ar, tar и gzip.

Код

#!/bin/sh
ar p "$1" data.tar.gz|(cd / && tar xvzf -)


Предупреждаю -- запускать это от рута непонимая, что оно делает -- плохая идея.

PS Да и вообще. Кажэтся, Вы делаете что-то очень не то. Если Вы ставите пакет под другую систему -- то надо брать исходник и собирать его в формат, соответствующий той системе. Если dpkg ругается на зависимости -- то надо брать исходник, возможно, не только этого пакета, и править зависимости.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)