Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: LinuxFanUNIX в May 12, 2009, 12:40



Титла: Изтегляне на deb пакет със всички негови зависимости
Публикувано от: LinuxFanUNIX в May 12, 2009, 12:40
Добър ден. Извинявам се за създаването на поредната тема от мен, но се нуждая от помощ.

Някой знае ли, дали има скрипт за изтегляне на .deb пакет и всички негови зависимости в определена папка.

Ето и пример:
Вместо да напиша
Код
GeSHi (Bash):
  1. apt-get install python
и да ми инсталира python и неговите зависимости:
python2.4 (>= 2.4.4), python-minimal (= 2.4.4-2)

да може да се изтегли всичко автоматично в директория:

Примерно <scriptForDownload> python
и да ми изтегли всички зависимости в текущата директория.

Има ли такъв скрипт или програма. Става въпрос за Debian 5.0.

Благодаря предварително!


Титла: Re: Изтегляне на deb пакет със всички негови зависимости
Публикувано от: neter в May 12, 2009, 14:22
Код
GeSHi (Bash):
  1. apt-get install python -d
Защо не четеш помощната информация за инструментите?

По подразбиране, пакетите се изтеглят във /var/cache/apt/archives


Титла: Re: Изтегляне на deb пакет със всички негови зависимости
Публикувано от: LinuxFanUNIX в May 12, 2009, 15:23
Код
GeSHi (Bash):
  1. apt-get install python -d
Защо не четеш помощната информация за инструментите?

По подразбиране, пакетите се изтеглят във /var/cache/apt/archives
Да, обаче това не изтегля всички зависимости, а само тези които не са инсталирани в системата, и така ако вече имам инсталиран python в случая и се опитам с -d няма да изтегли нищо друго освен python-2.5.deb.


Титла: Re: Изтегляне на deb пакет със всички негови зависимости
Публикувано от: zeridon в May 12, 2009, 15:32
Знаеш ли че нещо почвам да се дразня след като прочетох три теми от тебе ... ама нейсе от мен да мине.

Пробвай с
Код
GeSHi (Bash):
  1. debootstrap --include=package

Сега предполагам че си чувал какво реално представлява един deb пакет ... ми вземи му извади control файла и си виж зависимостите от тях ...
Или пък си направи един базов chroot и си сваляй там със апт-гет ...


Титла: Re: Изтегляне на deb пакет със всички негови зависимости
Публикувано от: neter в May 12, 2009, 15:44
Добре :) Ето ти и скриптче
Код
GeSHi (Bash):
  1. #!/bin/bash
  2.  
  3. depends=( `apt-cache depends $1 | grep 'Зависи' | cut -d' ' -f5` )
  4.  
  5. apt-get install $1 -d -y
  6. for i in "${depends[@]}"; do
  7.    apt-get install $i -d -y
  8. done
Само замени думичката "Зависи", ако при теб не е на български, и си преброй дали има пак 5 интервала преди името на пакета ;)
Слагаш това в един файл, правиш го изпълним и след това теглиш пакетите така
Код
GeSHi (Bash):
  1. /пълен/път/до/твоя/скрипт ПАКЕТ


Титла: Re: Изтегляне на deb пакет със всички негови зависимости
Публикувано от: LinuxFanUNIX в May 12, 2009, 16:50
Добре :) Ето ти и скриптче
Код
GeSHi (Bash):
  1. #!/bin/bash
  2.  
  3. depends=( `apt-cache depends $1 | grep 'Зависи' | cut -d' ' -f5` )
  4.  
  5. apt-get install $1 -d -y
  6. for i in "${depends[@]}"; do
  7.    apt-get install $i -d -y
  8. done
Само замени думичката "Зависи", ако при теб не е на български, и си преброй дали има пак 5 интервала преди името на пакета ;)
Слагаш това в един файл, правиш го изпълним и след това теглиш пакетите така
Код
GeSHi (Bash):
  1. /пълен/път/до/твоя/скрипт ПАКЕТ
Пак не става:
python is already newest version.


Титла: Re: Изтегляне на deb пакет със всички негови зависимости
Публикувано от: LinuxFanUNIX в May 12, 2009, 16:58
Объркал съм грешката. Исках да кажа че не се появява нито във /var/cache/apt/archives нито в настоящата директория. :(
Изходът е: python is already newest version.

Иначе благодаря за съвета. Изпълнява се, само дето не мога да изтегля файловете. :)


Титла: Re: Изтегляне на deb пакет със всички негови зависимости
Публикувано от: neter в May 12, 2009, 17:05
Тогава влизаш на адрес
Цитат
http://packages.debian.org/версия/пакет
Например
Цитат
http://packages.debian.org/lenny/python
и си теглиш зависимостите. А можеш и да си напишеш парсер, за да се теглят автоматично.

Я обясни по-подробно целта на занятието :)


Титла: Re: Изтегляне на deb пакет със всички негови зависимости
Публикувано от: task_struct в May 12, 2009, 17:21
Ако съдя по предни теми, който е пускал, предполага, че иска да види 1 програма, какво изисква, за да може да я компилира статично. :)

LinuxFanUNIX, мисля, че всеки пакет има лист със зависимостите, на лесно би било той да се парсне. Ако съм прав за статичното компилиране идва и друг проблем, ами ако някоя от зависимостите има зависимост, какво правим?


Титла: Re: Изтегляне на deb пакет със всички негови зависимости
Публикувано от: lunarvalleys в May 12, 2009, 18:47
Цитат
ами ако някоя от зависимостите има зависимост, какво правим?

те тогава почва истинското забавление  :D :D :D


Титла: Re: Изтегляне на deb пакет със всички негови зависимости
Публикувано от: LinuxFanUNIX в May 12, 2009, 21:58
Тогава влизаш на адрес
Цитат
http://packages.debian.org/версия/пакет
Например
Цитат
http://packages.debian.org/lenny/python
и си теглиш зависимостите. А можеш и да си напишеш парсер, за да се теглят автоматично.

Я обясни по-подробно целта на занятието :)
Целта е следната:

Използвам Slackware и единственото, подчертавам ЕДИНСТВЕНОТО ми оплакване от него е проблема със зависимостите. С debian-port си правя пакетите до tgz (т.е. този скрипт разархивира deb пакета и го архивира в tgz като естествено премахва файловете от control и debian-binnary (това е файл) и файловете от data.tar.gz ги архивира с помощта на makepkg до tgz). А аз искам да правя тези гимнастики за да мога, като ми потрябва някой пакет, със помощта на скрипт всичко автоматично да става, дори и да изисква наличие на дебиан, не е проблем, само да може да стане всичко автоматизирано.

Ще дам един пример:
Обичам си file-roller-а. Естествено няма пакет за Slackware и има два варианта - компилиране (обаче тука сигурно доста --disable трябва да след ./configure) и остава другия вариант - от Debian пакет. И стана така че повече от 12 часа осигуряване на зависимости и накрая пак не работи всичко като света.

Това е целта, а не става въпрос за статичните библиотеки - с тях ще се занимавам като си реша проблемите със зависимостите.

Благодаря предварително!


Титла: Re: Изтегляне на deb пакет със всички негови зависимости
Публикувано от: neter в May 12, 2009, 23:16
Парсер лесно ще драснем. Но замисли се над това, което каза task_struct, за зависимостите на зависимостите и техните зависимости. Драсваме един парсер, който да тегли от сайта на Debian желания пакет и неговите зависимости в списъка. Добавяме парсер и за списъците със зависимостите, които имат зависимостите на пакета. След това добавяме и парсер за списъците на зависимостите на зависимостите на зависимостите... докога така? Не можем да сложим проверка дали някоя зависимост не е вече инсталирана, защото нямаме база за сравнение. А без да знаем какво не ни трябва да се тегли, кога ще спре парсерът? Когато изтегли всичко, свързано пряко и косвено с този пакет? И това ще се случва с всеки пакет. А нищо няма да инсталираш, ако не удовлетвориш нужните зависимости и на зависимостите на зависимостите.
Мисля, че въобще не се замисляш колко безсмислено е всичко това. Ти защо използваш Slackware, след като не си доволен от готовите пакети за него? Каква толкова важна за теб разлика намери между Slackware и Debian, че държиш да използваш Slackware и да се мъчиш като грешен дявол? Харесва ти организацията на файловете в Slackware? По-малко труд ще хвърлиш да промениш организацията на файловете на Debian до каквато си пожелаеш, отколкото масово да инсталираш пакети за Debian под Slackware. И, ако това е причината, какво толкова голямо значение има организацията на файловете? Причината не е пакетната система, тъй като явно не си доволен от нея. Или ти харесва да казваш "Аз използвам Slackware"? Все едно да кажеш "Имам страхотна жена", а да не си я барнал от години. Да, четох какво си писал като причини да не използваш Debian в другата тема - смешни проблеми в сравнение с тези, които искаш да разрешиш сега. Особено това, което си писал като най-важен проблем в Debian - че си нямал свобода и че не можеш да използваш root акаунта като основен. Първо, Debian е инсталиран и на тостер, така че не пей за липсваща свобода! Второ, как ти се видя сложно да използваш root акаунта си като основен в Debian, а смяташ, че ще можеш да разрешиш настоящия проблем с пакетите под Slackware? Трето, що за велика недомисъл е използването на root акаунта като основен на десктоп система? След като си тръгнал да правиш велики врътки с пакети, защо направо не смениш пакетната система на Slackware с тази на Debian, след което да си инсталираш каквото си искаш от Debian в Slackware. Мда... това вече няма да е Slackware...
Тъй като по подразбиране приемам, че хората имат някакъв замисъл зад действията си, и се опитвам да разбера какъв е този замисъл, за да ги оправдая, ако замисълът си струва, то се налага да обясниш защо искаш всичко това ;)


Титла: Re: Изтегляне на deb пакет със всички негови зависимости
Публикувано от: LinuxFanUNIX в May 12, 2009, 23:41
Парсер лесно ще драснем. Но замисли се над това, което каза task_struct, за зависимостите на зависимостите и техните зависимости. Драсваме един парсер, който да тегли от сайта на Debian желания пакет и неговите зависимости в списъка. Добавяме парсер и за списъците със зависимостите, които имат зависимостите на пакета. След това добавяме и парсер за списъците на зависимостите на зависимостите на зависимостите... докога така? Не можем да сложим проверка дали някоя зависимост не е вече инсталирана, защото нямаме база за сравнение. А без да знаем какво не ни трябва да се тегли, кога ще спре парсерът? Когато изтегли всичко, свързано пряко и косвено с този пакет? И това ще се случва с всеки пакет. А нищо няма да инсталираш, ако не удовлетвориш нужните зависимости и на зависимостите на зависимостите.
Мисля, че въобще не се замисляш колко безсмислено е всичко това. Ти защо използваш Slackware, след като не си доволен от готовите пакети за него? Каква толкова важна за теб разлика намери между Slackware и Debian, че държиш да използваш Slackware и да се мъчиш като грешен дявол? Харесва ти организацията на файловете в Slackware? По-малко труд ще хвърлиш да промениш организацията на файловете на Debian до каквато си пожелаеш, отколкото масово да инсталираш пакети за Debian под Slackware. И, ако това е причината, какво толкова голямо значение има организацията на файловете? Причината не е пакетната система, тъй като явно не си доволен от нея. Или ти харесва да казваш "Аз използвам Slackware"? Все едно да кажеш "Имам страхотна жена", а да не си я барнал от години. Да, четох какво си писал като причини да не използваш Debian в другата тема - смешни проблеми в сравнение с тези, които искаш да разрешиш сега. Особено това, което си писал като най-важен проблем в Debian - че си нямал свобода и че не можеш да използваш root акаунта като основен. Първо, Debian е инсталиран и на тостер, така че не пей за липсваща свобода! Второ, как ти се видя сложно да използваш root акаунта си като основен в Debian, а смяташ, че ще можеш да разрешиш настоящия проблем с пакетите под Slackware? Трето, що за велика недомисъл е използването на root акаунта като основен на десктоп система? След като си тръгнал да правиш велики врътки с пакети, защо направо не смениш пакетната система на Slackware с тази на Debian, след което да си инсталираш каквото си искаш от Debian в Slackware. Мда... това вече няма да е Slackware...
Тъй като по подразбиране приемам, че хората имат някакъв замисъл зад действията си, и се опитвам да разбера какъв е този замисъл, за да ги оправдая, ако замисълът си струва, то се налага да обясниш защо искаш всичко това ;)
Ми аз вече казах защо ми е притрябвал точно Слак - стабилността в KDE, простотата на използваните инструменти (не да ти натикат някой GUI инструмент който има конфликт с друг конзолен такъв). А и има още нещо. Отделно е че с Qt4 се закача и някоя kde4 библиотека, която при използване само на определена функция в някоя програма, така грозно изчертава програмата че чак... Но интересното идва тук - опиташ ли се да деинсталираш дадената библиотека, замазва ти и останалите и тогава крещи на Segmentation fault. И общо взето неща които са дребни на пръв поглед, но наистина сериозни.

Причината по която не обичам да използвам root като отделен акаунт, а като подразбиращ се, е че искам пълен контрол над системата си. Тъй като както повечето потребителите и аз съм започнал с бозицата, съм си свикнал примерно да си влеза в /etc през Konqueror-а и с kate-то да си редактирам това което ми трябва без терминали, без конзоли, без команди, без пароли.

Така че на мен не ми трябва дистрибуция която има зависимости, а отделно приложение което да може да ми изтегли дадени зависимости за даден пакет - и така в случая в Слак ще мога да си инсталирам qt4 библиотеките без омазване на изчертаването на програмите, а и в същото време ще мога да използвам file-roller и avidemux и все приложения чийто зависимости ти отнемат повече от ден за удовлеторяването им.

А за парсера - всичко до 5 и обратно до 5. :)


Титла: Re: Изтегляне на deb пакет със всички негови зависимости
Публикувано от: neter в May 13, 2009, 00:20
Виждам желание в теб да удовлетворяваш закостенели навици... А, не, момент! Искаш някой друг да удовлетвори закостенелите ти навици. А крайният резултат ще бъде грозен, неудобен, непотребен и безсмислен. Съжалявам, но не съм съгласен с този замисъл, не мога да го оправдая и губя желание да помагам. Чакай някой друг да се навие или се научи сам как да го направиш. Щом имаш сили и желание да се занимаваш с това безсмислие, нищо не ти пречи да научиш как се пише парсер. Аз съм до тук. Успех ;)

P.S.: Не наричай Windows боза, след като си тръгнал да забъркваш по-голяма боза в твоята система!


Титла: Re: Изтегляне на deb пакет със всички негови зависимости
Публикувано от: phantomlord в May 13, 2009, 04:17
LinuxFanUNIX, и аз така като теб, като прохождах в Linux се логвах в графичната среда като root и си работих така... Докато един ден си бях отворил във файловия мениджър / бутнах неволно мишката и с това се премести някъде някаква папка и то толкова бързо, че не видях какво, къде и познай какво стана с линукса ми??? Като толкова искаш пълен контрол над системата си (който можеш да ползваш и като си обикновен потребител чрез sudo) късмет!!! Има начин чрез, който да изключиш ограничението за логването на root в графична среда, но е излишно и опасно и няма да ти го кажа :)


Титла: Re: Изтегляне на deb пакет със всички негови зависимости
Публикувано от: tonitochev в May 13, 2009, 07:13
LinuxFanUNIX, няма нищо по лесно да си настроиш KDM да те пуска като root. В etc в настройките на kde има папка kdm и файл kdmrc. Та от там се бара, останалото го оставям на тебе.
Но дори да не откриеш този начин, пак е просто. В кдм от дясното бутонче избираш конзолно включване, влизаш като администратор и startx.
Както казаха по-горе, обаче, това е напълно излишно и безмислено. Защото е много лесно да стартираш конкуерора с администраторски права:
Алт+F2 и в прозорчето:
kdesu konqueror
Освен това си има готов стартер на програмата в менюто, секция Система подсекция Други.
Сега, защо няма смисъл да ползваш мащабно дебиански пакети в Слакуер. Защото докато пакетите в Слака са уедрени, то в Дебиан са разбити на много повече парчета. Пример - OpenOffice за слака е един пакет, за дебиан имаш над 30. Python за слака е един, за дебиан имаш пак много и т.н.
Освен това, инсталирайки примерно КДЕ от дебиан, получаваш точно това, което ще го имаш в дебиан, а не в слакуер. Какъв е смисъла?
В слака просто чакаш някой да компилира това, което ти трябва или го компилираш сам, друго решение няма. Е, един два пакета можеш да ползваш от Дебиан, сусе или друго дистро, но винаги има риск нещата да не станат.


Титла: Re: Изтегляне на deb пакет със всички негови зависимости
Публикувано от: LinuxFanUNIX в May 13, 2009, 10:32
LinuxFanUNIX, няма нищо по лесно да си настроиш KDM да те пуска като root. В etc в настройките на kde има папка kdm и файл kdmrc. Та от там се бара, останалото го оставям на тебе.
Но дори да не откриеш този начин, пак е просто. В кдм от дясното бутонче избираш конзолно включване, влизаш като администратор и startx.
Както казаха по-горе, обаче, това е напълно излишно и безмислено. Защото е много лесно да стартираш конкуерора с администраторски права:
Алт+F2 и в прозорчето:
kdesu konqueror
Освен това си има готов стартер на програмата в менюто, секция Система подсекция Други.
Сега, защо няма смисъл да ползваш мащабно дебиански пакети в Слакуер. Защото докато пакетите в Слака са уедрени, то в Дебиан са разбити на много повече парчета. Пример - OpenOffice за слака е един пакет, за дебиан имаш над 30. Python за слака е един, за дебиан имаш пак много и т.н.
Освен това, инсталирайки примерно КДЕ от дебиан, получаваш точно това, което ще го имаш в дебиан, а не в слакуер. Какъв е смисъла?
В слака просто чакаш някой да компилира това, което ти трябва или го компилираш сам, друго решение няма. Е, един два пакета можеш да ползваш от Дебиан, сусе или друго дистро, но винаги има риск нещата да не станат.
С риск да се повторя, пак ще кажа, че не става въпрос за пре-инсталиране на всички пакети в системата, а за някои такива, като например file-roller, avidemux и т.н. които да могат за секунда да се изтеглят (със зависимостите си) и да си спестя главоболията. Не искам цялата система да преинсталирам с дебиански пакети, а да използвам този метод за някоя програма която нямам време да компилирам (едно е да си портнеш всичко за 5 мин и да напишеш едно installpkg *.tgz, а съвсем друго е - да компилираш и липсващата библиотека която ти даде да се ровиш в страниците на дебиан и да търсиш пакета. Ето за такива цели, иначе Debian пакети не бих и бутнал.
Иначе знам за файла в /etc/kde/ (нали него пак го барах за да не ми иска парола при зареждане на KDE), обаче пък в дебиан настъпват други проблеми, които не смятам да навлизам в подробности за да обяснявам.
А за човека който направил неволното кликване - Ctrl+Z оправя всичко. ;)