29.05.2007, 01:06 | #1 |
Пользователь
|
Сила shell'ов
Вот написал скриптик:
Спойлер
#/bin/bash # Script for cleaning old Debian packaged # Author: Igor Pellinen (Russia) aka Igron aka tmp0000 # First, create file with Packages dpkg-scanpackages . /dev/null > Packages 2>/dev/null # Make temporary directory mkdir temp_dir_with_new_packages # Move actual files to temporary directory for i in `awk '/^Filename:/ {print $2}' Packages`; do test -f $i && mv $i ./temp_dir_with_new_packages/; done # Delete old Debian packages, they are in current directory rm -f ./*.deb # Now, after deleting old packages, we must back actual packages back to the current directory: cd ./temp_dir_with_new_packages/ for i in *.deb; do mv $i ../; done cd ../ # Remove temporary directory and packages files rmdir temp_dir_with_new_packages rm Packages Он занимается тем, что удаляет старые deb-пакеты, если существуют пакеты более новых версий. Сам знаю, что все довольно топорно и неэффективно в плане скорости (создается временная директория, туда перемещаются нужные (актуальные) пакеты, удаляются старые, затем все перемещается назад. Как можно улучшить скорость работы скрипта?
__________________
Думай головой, %username%. |
29.05.2007, 16:46 | #3 |
Местный
|
Код:
#!/bin/bash dpkg-scanpackages . /dev/null > Packages 2>/dev/null ls -1 ./*.deb | sort > old.list awk '/^Filename: / {print $2}' Packages | sort > new.list diff {old,new}.list | grep '^< ' | sed 's/^< //' | xargs rm -f rm -f {old,new}.list Последний раз редактировалось rmn; 30.05.2007 в 16:03. |
Благодарности: 2 |
29.05.2007, 17:36 | #4 | ||||||||||||
Новичок
|
|
||||||||||||
29.05.2007, 17:41 | #5 |
Местный
|
greiv, если бы он мог это сделать, то не заморачивался бы с написанием скриптов. Вообще, чтобы "вкурить" что он хочет автоматизировать, надо примерно знать как устроены и создаются репозитории debian/ubuntu и как там нумеруются версии пакетов.
Последний раз редактировалось rmn; 29.05.2007 в 17:43. |
29.05.2007, 18:44 | #7 |
Местный
|
greiv, я внимательно читал, более того - этой фигней занимался уже.
Есть каталог, в него навалена куча deb-пакетов различных версий, например, foo 0.40, foo 0.41, foo 0.41 backported. Пакетов для простоты - 1000 штук по 3-4 версии каждого. Из них в каталоге нужно оставить только "актуальные" пакеты (вроде foo 0.41). dpkg-scanpackages, грубо говоря, выдаёт список "актуальных" пакетов. Задача сводится к тому, чтобы из начального списка вычленить неактуальные, используя шелл. Последний раз редактировалось rmn; 29.05.2007 в 18:56. |
29.05.2007, 20:04 | #8 |
Новичок
|
rmn, ну цель-то понятна=), раз dpkg-scanpackages такой хороший, что выплевывает список "актуальных" пакетов, то зачем нужна свистопляска с отдельными директориями и перемещениями по тысячу раз... как будто неактуальные нельзя замочиь в том же каталоге
Последний раз редактировалось greiv; 29.05.2007 в 20:08. Причина: неграмотный |
29.05.2007, 21:59 | #14 |
Местный
|
Дануна, я закинул скриптв папку с архивами, запустил, он нахреначил мне новый Packages.gz, о чем и написал в консоли с подробным выводом списка пакетов, которые он включил, а файл gstreamer0.10-plugins-ugly_0.10.4-0ubuntu2_i386, лежащий рядом с gstreamer0.10-plugins-ugly_0.10.5-0ubuntu2_i386 не похерил...
|
30.05.2007, 13:04 | #15 |
Местный
|
Frosty, дык .gz надо развернуть предварительно. Либо прямо в скрипте изменить строку так:
Код:
zcat Packages.gz | awk '/^Filename: / {print $2}' | sort > new.list Добавлено через 14 часов 31 минуту Frosty, все-таки решил проверить на себе код чтобы 100% работало без собственноручных доводок, нужно подправить строку Код:
ls -1 ./*.deb | sort > old.list Последний раз редактировалось rmn; 30.05.2007 в 13:04. Причина: Добавлено сообщение |
30.05.2007, 21:12 | #19 | ||||||||||||||||||||||||||||||||||||
Местный
|
Код:
frosty@frosty-desktop:~/Desktop/неозаглавленная папка$ sudo sh "/home/frosty/Desktop/неозаглавленная папка/clean" diff: пропущен операнд после `{old,new}.list' diff: Попробуйте `diff --help' для получения более подробного описания.
|
||||||||||||||||||||||||||||||||||||
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ищу фильм | Vadim | Поиск | 2372 | 04.01.2018 17:08 |
Загадка | ZyDeHb | На завалинке | 1277 | 22.02.2013 17:37 |
Ударная сила | Exciter | Документальные | 5 | 06.05.2012 20:39 |
Star Wars: The Force Unleashed | Inki | Игровые приставки | 28 | 13.12.2008 13:47 |
Волшебная сила искусства (1970) | kellan | Хорошее, забытое, старое... | 0 | 06.03.2008 23:54 |