The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Раздел полезных советов: Скрипт деинсталляции пакетов во Fre..."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Разговоры, обсуждение новостей (Public)
Изначальное сообщение [Проследить за развитием треда]

"Раздел полезных советов: Скрипт деинсталляции пакетов во Fre..."  
Сообщение от auto_tips (??) on 06-Июл-07, 19:42 
#!/usr/bin/perl -w
#
# Script for deinstalling "leaf" packages.
#
# Copyright (c) 2007 Artem A. Kolpakov <artem.kolpakov@gmail.com>
#
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.

die "Usage: pkg_deinstall.pl package.\n" if(!defined($ARGV[0]));
$pkg=$ARGV[0];
$dbdir="/var/db/pkg";
die "$pkg is not installed!\n" if((!-e "$dbdir/$pkg")||(!grep /\S+\d/, $pkg));
if(-w $dbdir) { $rw=1; } else { $rw=0; }
$sum=0;
if(-s "$dbdir/$pkg/+REQUIRED_BY") {
    open(REQ, "$dbdir/$pkg/+REQUIRED_BY");
    while(<REQ>) { print "Required dependence: $_"; $sum++; }
    close(REQ);
}
die "Total required depending: $sum. Removing impossible.\n" if($sum);

open(DEP, "$dbdir/$pkg/+CONTENTS");
while(<DEP>) {
    if(/\@pkgdep\s(\S+\d)\n/) {
        $pkg_depends{$1}=1; print "There dependence: $1\n";
    }
}
close(DEP);

die "You not have permission to operation.\n" if(!$rw);

$sum=(keys %pkg_depends);
if($sum) {
    print "Result dependence: $sum. Removing package.\n";
}
else {
    system "pkg_delete $pkg";
    print "The package has been removed.\n"; exit;
}
system "pkg_delete $pkg";
print "Done, processing.\n";
$level=0; $sum=0;
while(scalar(keys %pkg_depends)) {
    $level++;
    if($level > 1) {
        for $pkg_depends (keys %pkg_depends) {
            if($pkg_depends{$pkg_depends} == $level-1) {
                if(-e "$dbdir/$pkg_depends/+CONTENTS") {
                    open(DEP, "$dbdir/$pkg_depends/+CONTENTS");
                    while(<DEP>) {
                        if(/\@pkgdep\s(\S+\d)\n/) {
                            $pkg_depends{$1}=$level;
                        }
                    }
                    close(DEP);
                    system "pkg_delete $pkg_depends";
                    delete $pkg_depends{$pkg_depends}; $sum++;
                    print "Removed dependence: $pkg_depends.\n";
                }
                else {
                    delete $pkg_depends{$pkg_depends};
                }
            }
        }
    }
    for $pkg_depends (keys %pkg_depends) {
        if($pkg_depends{$pkg_depends} == $level) {
            if(-s "$dbdir/$pkg_depends/+REQUIRED_BY") {
                delete $pkg_depends{$pkg_depends};
            }
        }
    }
}
print "Removed $sum dependencies.\n";

URL:
Обсуждается: http://www.opennet.dev/tips/info/1429.shtml

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Скрипт деинсталляции пакетов во FreeBSD вместе с зависимостя..."  
Сообщение от ws email(??) on 06-Июл-07, 19:42 
А что pkg_delete -r name уже не в моде?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Скрипт деинсталляции пакетов во FreeBSD вместе с зависимостя..."  
Сообщение от Artem A. Kolpakov email on 10-Июл-07, 16:52 
>А что pkg_delete -r name уже не в моде?

"pkg_delete -r" здесь непричем. Будте внимательны.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Скрипт деинсталляции пакетов во FreeBSD вместе с зависимостя..."  
Сообщение от ws email(ok) on 23-Июл-07, 14:26 
Прошу прощения. Не сразу понял - ваш скрипт делает обратное действие...
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Скрипт деинсталляции пакетов во FreeBSD вместе с зависимостя..."  
Сообщение от ws (??) on 06-Июл-07, 20:23 
а надо обязательно свой пятак сунуть? Не,не в моде.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Скрипт деинсталляции пакетов во FreeBSD вместе с зависимостя..."  
Сообщение от rootuas email on 06-Июл-07, 23:07 
Мда, и правда  - зачем тогда вообще пишут ports-mgmt ?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Скрипт деинсталляции пакетов во FreeBSD вместе с зависимостя..."  
Сообщение от luka on 11-Июл-07, 13:49 
Интересный скрипт, нужно будет опробовать.

2ws, вы уж меня простите, но не стоит комментировать то, в чем не сильно разбираетесь....

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Скрипт деинсталляции пакетов во FreeBSD вместе с зависимостя..."  
Сообщение от grayich email(??) on 14-Июл-07, 14:46 
/usr/ports/ports-mgmt/pkg_rmleaves/
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Скрипт деинсталляции пакетов во FreeBSD вместе с зависимостя..."  
Сообщение от grv email on 14-Июл-07, 20:12 
А руководство по использованию скрипта будет (или я совсем ничего не понял)?

--------------------------------------

# Copyright (c) 2007 Artem A. Kolpakov <artem.kolpakov@gmail.com>
#
# All rights reserved.

Это (выше) я прочитал...

# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.

Это тоже прочитал.

Не сочтите за глупые следующие вопросы:

1. Под какой лицензией Вы распространяете данный скрипт? Или это лишнее при упоминании копирайта?

2. Является ли скрипт SOFTWARE? Уместно ли это определение когда речь идёт о нескомпилированном наборе инструкций?

Буду рад дискуссии.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Скрипт деинсталляции пакетов во FreeBSD вместе с зависимостя..."  
Сообщение от savant on 15-Июл-07, 20:58 
AFAIK это BSD-like
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Скрипт деинсталляции пакетов во FreeBSD вместе с зависимостя..."  
Сообщение от vantoo on 15-Июл-07, 17:36 
Здесь люди не дискуссируют, а работают, все дискусси на ЛОР
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру