Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Помогите со скриптом на bash  (Прочитано 575 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн RQWERQWER

  • Автор темы
  • Активист
  • *
  • Сообщений: 252
    • Просмотр профиля
Помогите со скриптом на bash
« : 19 Март 2011, 22:56:29 »
Нужен скрипт, который бы выводил список зависимостей определенного пакета, причем в виде

зависимость1
зависимость2
зависимость3
и.т.д.

Пока так -
dpkg -s program | grep Depends
- выводит, но не в виде списка, и с лишними знаками.

Оффлайн s_lim

  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Re: Помогите со скриптом на bash
« Ответ #1 : 20 Март 2011, 06:14:17 »
все то же самое только в получившейся строке запятую и пробел заменить на знак начала новой строки...
как это сделать думай сам
Ubuntu 10.04.3 LTS Lucid Lynx (amd64)
AMD Phenome II x6; AMD 890GX; ATI Radeon HD4290; GDDR3 1600

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: Помогите со скриптом на bash
« Ответ #2 : 20 Март 2011, 10:18:43 »
aliftin@r2d2:~$ dpkg -s opera | grep Depends | sed "/,/ s//\n/g" | sed "/:/ s//\n/g"
Depends
 libc6 (>= 2.1.3)
 xlib6g (>= 3.3.6) | xlibs | libxmu6
 debconf (>= 0.5) | debconf-2.0
 libqtgui4 | libqt4-gui
aliftin@r2d2:~$
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн RQWERQWER

  • Автор темы
  • Активист
  • *
  • Сообщений: 252
    • Просмотр профиля
Re: Помогите со скриптом на bash
« Ответ #3 : 20 Март 2011, 10:22:51 »
Сделал с помощью apt-cache depends
program=vlc
apt-cache depends $program | grep Зависит | sed 's/Зависит://g' | sed  's/|//g' | sed '/</d' | sed 's/^[ \t]*//' | tee list
Так-же сделал разделение полученного файла по одной строке
split -l 1 list

Теперь нужно чтобы текст из одного из полученных файлов брался, подставлялся в переменную $program, выполнялось это -
apt-cache depends $program | grep Зависит | sed 's/Зависит://g' | sed  's/|//g' | sed '/</d' | sed 's/^[ \t]*//' | tee list
затем из следующего файла.
« Последнее редактирование: 20 Март 2011, 10:26:31 от avQse »

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: Помогите со скриптом на bash
« Ответ #4 : 20 Март 2011, 10:32:15 »
Вы их там в файл записываете в конце? Тогда можно сделать это так:

IFS=$'\n'
for i in `cat ./list`
do
apt-cache depends $program | grep Зависит | sed 's/Зависит://g' | sed  's/|//g' | sed '/</d' | sed 's/^[ \t]*//' | tee list-"$i"
done
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн RQWERQWER

  • Автор темы
  • Активист
  • *
  • Сообщений: 252
    • Просмотр профиля
Re: Помогите со скриптом на bash
« Ответ #5 : 20 Март 2011, 10:50:45 »
У меня в коде
program=vlc
apt-cache depends $program | grep Зависит | sed 's/Зависит://g' | sed  's/|//g' | sed '/</d' | sed 's/^[ \t]*//' | tee list
создается файл list, в котором записаны все зависимости программы, в моём случае vlc
Дальше выполняется
split -l 1 list
с помощью которого создаются текстовые файлы, в которых по одной строке из list.
Нужно, чтобы из полученных файлов брался текст, сначала из одного, заносился в переменную $program, выполнялся
apt-cache depends $program | grep Зависит | sed 's/Зависит://g' | sed  's/|//g' | sed '/</d' | sed 's/^[ \t]*//' | tee listзатем брался текст из следующего файла, так-же заносился в переменную $program и опять выполнялся скрипт выше. И так, пока файлы не кончатся.
« Последнее редактирование: 20 Март 2011, 10:54:04 от avQse »

Оффлайн ArcFi

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15194
    • Просмотр профиля
    • aetera.net
Re: Помогите со скриптом на bash
« Ответ #6 : 20 Март 2011, 10:54:57 »
avQse, в конечном итоге что должно получиться и зачем это нужно?

Оффлайн RQWERQWER

  • Автор темы
  • Активист
  • *
  • Сообщений: 252
    • Просмотр профиля
Re: Помогите со скриптом на bash
« Ответ #7 : 20 Март 2011, 10:59:16 »
Хочу сделать скрипт, для переноса программ на другой компьютер со всеми зависимостями. Скриптом должны вытаскиваться зависимости определенной программы, а затем с помощью dpkg-repack создаваться deb зависимостей.

Оффлайн Иваныч

  • Новичок
  • *
  • Сообщений: 41
    • Просмотр профиля
    • Блог Семенова
Re: Помогите со скриптом на bash
« Ответ #8 : 20 Март 2011, 11:58:54 »
Хочу сделать скрипт, для переноса программ на другой компьютер со всеми зависимостями. Скриптом должны вытаскиваться зависимости определенной программы, а затем с помощью dpkg-repack создаваться deb зависимостей.

А почему бы список пакетов не получать c помощью dpkg --list А этот список суйте  в dpkg-repack. Нужные зависимости подтянутся наверное.  Точно не скажу. Никогда так не извращался :)

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: Помогите со скриптом на bash
« Ответ #9 : 20 Март 2011, 12:01:24 »
Кажется когда-то обсуждали такое. Скрипт, который вытягивает все пакеты, с установленными зависимостями, из интернета. Поищите, думаю ваша задача уже решена.

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

Оффлайн RQWERQWER

  • Автор темы
  • Активист
  • *
  • Сообщений: 252
    • Просмотр профиля
Re: Помогите со скриптом на bash
« Ответ #10 : 20 Март 2011, 12:05:21 »
Хочу сделать скрипт, для переноса программ на другой компьютер со всеми зависимостями. Скриптом должны вытаскиваться зависимости определенной программы, а затем с помощью dpkg-repack создаваться deb зависимостей.

А почему бы список пакетов не получать c помощью dpkg --list А этот список суйте  в dpkg-repack. Нужные зависимости подтянутся наверное.  Точно не скажу. Никогда так не извращался :)
Нет, мне просто нужны зависимости определенной программы, а не все пакеты, установленные в системе.

Кажется когда-то обсуждали такое. Скрипт, который вытягивает все пакеты, с установленными зависимостями, из интернета. Поищите, думаю ваша задача уже решена.

Да и вообще, какой толк так извращаться, если достаточно получить список всех установленных пакетов и просто скачать их?
Просто на компьютере, куда хочу устанавливать программы, очень медленный инет. А про скрипт, сейчас поищу.

Оффлайн Иваныч

  • Новичок
  • *
  • Сообщений: 41
    • Просмотр профиля
    • Блог Семенова
Re: Помогите со скриптом на bash
« Ответ #11 : 20 Март 2011, 12:19:08 »
Кажется когда-то обсуждали такое. Скрипт, который вытягивает все пакеты, с установленными зависимостями, из интернета. Поищите, думаю ваша задача уже решена.
Что то такое сделано в aptoncd. Но что то мне подсказывает что если просто взять список пакетов и собрать его на другом компе то получится не Ubuntu а Debian ;))))

Нет, мне просто нужны зависимости определенной программы, а не все пакеты, установленные в системе.
Ну тогда вам нужно не просто взять зависимости. А еще учесть какие пакеты и версии стоят на том компьютере куда вы будете все это ставить. 100% что начнутся конфликты зависимостей и прочие радости. Но можно попробовать  apt-rdepends например что бы вытащить нужный пакет из вашей системы. И потом взяв список пакетов второго компьютера, попробовать по нему решить зависимости. 

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: Помогите со скриптом на bash
« Ответ #12 : 20 Март 2011, 12:19:47 »
dpkg --get-selections | awk '{print $1}'>list
for i in `cat ./list`
do
     aptitude download "$i" ./package_folder/
done

Как-то так.
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн RQWERQWER

  • Автор темы
  • Активист
  • *
  • Сообщений: 252
    • Просмотр профиля
Re: Помогите со скриптом на bash
« Ответ #13 : 20 Март 2011, 12:30:30 »
Нашел тут на форуме про Keryx. Сейчас попробую, вроде то, что нужно.

Оффлайн Иваныч

  • Новичок
  • *
  • Сообщений: 41
    • Просмотр профиля
    • Блог Семенова
Re: Помогите со скриптом на bash
« Ответ #14 : 20 Март 2011, 12:53:23 »
У меня в коде
program=vlc
apt-cache depends $program | grep Зависит | sed 's/Зависит://g' | sed  's/|//g' | sed '/</d' | sed 's/^[ \t]*//' | tee list
создается файл list, в котором записаны все зависимости программы, в моём случае vlc
Дальше выполняется
split -l 1 list
с помощью которого создаются текстовые файлы, в которых по одной строке из list.
Нужно, чтобы из полученных файлов брался текст, сначала из одного, заносился в переменную $program, выполнялся
apt-cache depends $program | grep Зависит | sed 's/Зависит://g' | sed  's/|//g' | sed '/</d' | sed 's/^[ \t]*//' | tee listзатем брался текст из следующего файла, так-же заносился в переменную $program и опять выполнялся скрипт выше. И так, пока файлы не кончатся.

Вот доделал  ваш скрипт мало ли пригодится ;)
#!/bin/bash
program=$1
apt-cache depends $program| grep Зависит | sed 's/Зависит://g' | sed  's/|//g' | sed '/</d' | sed 's/^[ \t]*//' | tee list| \
xargs apt-cache depends -| grep Зависит | sed 's/Зависит://g' | sed  's/|//g' | sed '/</d' | sed 's/^[ \t]*//' | tee list

Запускаете с именем программы для которой хотите зависимости вытащить.  Можете замкнуть в цикле на такой же скрипт. Главное что бы кольцевать не начал :)



 

Страница сгенерирована за 0.064 секунд. Запросов: 24.