Автор Тема: Изтегляне на deb пакет със всички негови зависимости  (Прочетена 2060 пъти)

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Добър ден. Извинявам се за създаването на поредната тема от мен, но се нуждая от помощ.

Някой знае ли, дали има скрипт за изтегляне на .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.

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

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Код
GeSHi (Bash):
  1. apt-get install python -d
Защо не четеш помощната информация за инструментите?

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

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Код
GeSHi (Bash):
  1. apt-get install python -d
Защо не четеш помощната информация за инструментите?

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

zeridon

  • Killmode enabled
  • Administrator
  • Напреднали
  • *****
  • Публикации: 1398
  • Distribution: Debian/Ubuntu
  • Window Manager: console/Gnome
  • BOfH
    • Профил
    • WWW
Знаеш ли че нещо почвам да се дразня след като прочетох три теми от тебе ... ама нейсе от мен да мине.

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

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

Внмимавай имам клещи за кабел
http://www.netsecad.com/
http://theregister.co.uk/odds/bofh/

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Добре :) Ето ти и скриптче
Код
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. /пълен/път/до/твоя/скрипт ПАКЕТ
« Последна редакция: May 12, 2009, 15:46 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Добре :) Ето ти и скриптче
Код
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.
Активен

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Объркал съм грешката. Исках да кажа че не се появява нито във /var/cache/apt/archives нито в настоящата директория. :(
Изходът е: python is already newest version.

Иначе благодаря за съвета. Изпълнява се, само дето не мога да изтегля файловете. :)
« Последна редакция: May 12, 2009, 17:01 от LinuxFanUNIX »
Активен

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Тогава влизаш на адрес
Цитат
http://packages.debian.org/версия/пакет
Например
Цитат
http://packages.debian.org/lenny/python
и си теглиш зависимостите. А можеш и да си напишеш парсер, за да се теглят автоматично.

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

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

task_struct

  • Напреднали
  • *****
  • Публикации: 576
  • Distribution: Kubuntu 14.04
  • Window Manager: KDE 4.13
    • Профил
Ако съдя по предни теми, който е пускал, предполага, че иска да види 1 програма, какво изисква, за да може да я компилира статично. :)

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

"Minds are like parachutes. They only function when they are open." - James Dewar

irc.freenode.net  / #linux-bg

lunarvalleys

  • Гост
Цитат
ами ако някоя от зависимостите има зависимост, какво правим?

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

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Тогава влизаш на адрес
Цитат
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 часа осигуряване на зависимости и накрая пак не работи всичко като света.

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

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

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Парсер лесно ще драснем. Но замисли се над това, което каза 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...
Тъй като по подразбиране приемам, че хората имат някакъв замисъл зад действията си, и се опитвам да разбера какъв е този замисъл, за да ги оправдая, ако замисълът си струва, то се налага да обясниш защо искаш всичко това ;)
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Парсер лесно ще драснем. Но замисли се над това, което каза 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. :)
Активен

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Виждам желание в теб да удовлетворяваш закостенели навици... А, не, момент! Искаш някой друг да удовлетвори закостенелите ти навици. А крайният резултат ще бъде грозен, неудобен, непотребен и безсмислен. Съжалявам, но не съм съгласен с този замисъл, не мога да го оправдая и губя желание да помагам. Чакай някой друг да се навие или се научи сам как да го направиш. Щом имаш сили и желание да се занимаваш с това безсмислие, нищо не ти пречи да научиш как се пише парсер. Аз съм до тук. Успех ;)

P.S.: Не наричай Windows боза, след като си тръгнал да забъркваш по-голяма боза в твоята система!
« Последна редакция: May 13, 2009, 00:27 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

phantomlord

  • Напреднали
  • *****
  • Публикации: 1832
  • Distribution: Debian Sid
  • Window Manager: KDE 4
  • Fall to your knees and bow to the Phantom Lord
    • Профил
    • WWW
LinuxFanUNIX, и аз така като теб, като прохождах в Linux се логвах в графичната среда като root и си работих така... Докато един ден си бях отворил във файловия мениджър / бутнах неволно мишката и с това се премести някъде някаква папка и то толкова бързо, че не видях какво, къде и познай какво стана с линукса ми??? Като толкова искаш пълен контрол над системата си (който можеш да ползваш и като си обикновен потребител чрез sudo) късмет!!! Има начин чрез, който да изключиш ограничението за логването на root в графична среда, но е излишно и опасно и няма да ти го кажа :)
Активен

http://myfreesoft.net/phpBB2/index.php?c=7
Помогни си сам, за да ти помогне и Господ
Linux - connecting people...