Dansk Arch Linux forum

For det danske Arch Linux community

Du er ikke logget ind.


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/vzn258/domains/archlinux.dk/public_html/forum/include/parser.php on line 348

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/vzn258/domains/archlinux.dk/public_html/forum/include/parser.php on line 349

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/vzn258/domains/archlinux.dk/public_html/forum/include/parser.php on line 348

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/vzn258/domains/archlinux.dk/public_html/forum/include/parser.php on line 349

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/vzn258/domains/archlinux.dk/public_html/forum/include/parser.php on line 333

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/vzn258/domains/archlinux.dk/public_html/forum/include/parser.php on line 333

#1 13-08-2006 20:41:02

julemand101
Admin
Fra: Brabrand
Registreret: 18-04-2006
Indlæg: 779
Website

Brug af orphans

Mange af os kender det sikkert. Der er blevet installeret en masse pakker og mange er slettet igen. Men hvad med de pakker der blev installeret ved en installation af pakke? (såkaldt afhængigheder).

Lad os sige vi installere pakke1 og ved installation kræver den pakke2 og pakke3. De bliver så installeret på samme tid som pakke1. Nu viser det sig så at du gerne vil have pakke1 fjernet og skriver pacman -R pakke1. Dette fjerner også godt nok pakke1 men ikke pakke2 og pakke3.

Nå men her er der jo mange der råber "Brug pacman -Rs" og ja det er jo også en glimrende løsning da den skam vil fjerne pakke2 og pakke3.

Men hvad nu hvis vi installere pakke4 som også kræver pakke2 og pakke3. Så vil pacman -Rs pakke1 ikke fjerne pakke2 og pakke3 da de bruges af en anden pakke. Når du så fjerner pakke4 med pacman -Rs pakke4 vil den ikke fjerne pakke2 og pakke3 da de faktisk ikke blev installeret ved installation af pakke4 da de allerede var der. Nu sidder man i saksen da man næppe lige kan huske man har pakke2 og pakke3.

Nu tænker du sikkert det er ligemeget da du sikkert har masser af plads men sådan leger vi ikke. Pacman bliver langsommere jo flere pakker du har installeret (desværre en dum fejl som nok bliver rettet i pacman3).

Nå men løsningen er det lille program ved navn orphans. orphans tjekker alle filer efter om de er blevet installeret som en afhængighed og hvis den er den så tjekker den om den er afhængighed af et andet program. Hvis den ikke er det så bliver den udskrevet til terminal hvor brugeren så kan overveje om den skal slettes.

Nå men til sagen:

1. Gem dette som en fil ved navn orphans eller hvad der nu passer dig (jeg kalder den selv pacman-orphans):

Kode:

#!/usr/bin/perl -w
# Scriptname: orphans
# Author: Speek
use strict;

if (@ARGV) {
    my $pn = (split ///, $0)[-1];
    print "$pn checks for packages that were installed as a dependency forn";
    print "another package, but are not required by other packages anymore.n";
    print "Usage: $pn without argumentsn";
    exit;
}

my $requiredby;
my $notrequired;
my $reason;
my $pkg;

chdir "/var/lib/pacman/local" or die "Cannot chdir to /var/lib/pacman/local: $!";

foreach $pkg (<*>) {
    $requiredby = 0;
    $notrequired = 0;
    $reason = 0;
    open DEPENDS, "$pkg/depends" or die "Cannot open $pkg/depends: $!";
    while (<DEPENDS>) {
        chomp;
        if ($requiredby == 1) {
            $notrequired = 1 if /^$/;
            last;
        }
        if (/REQUIREDBY/) {
            $requiredby = 1;
        }
    }
    close DEPENDS;
    if ($notrequired) {
        open DESC, "$pkg/desc" or die "Cannot open $pkg/desc: $!";
        while (<DESC>) {
            chomp;
            if ($reason == 1 and /1/) {
                print "$pkgn";
                last;
            }
            $reason = 1 if /REASON/;
        }
        close DESC;
    }
} 

2. chmod filen så den kan køres (husk desuden der kræves perl):
chmod +x orphans

3. Kør filen med:
./orphans

4. Lig den evt. i /usr/bin så den kan køres direkte fra terminalen.

Når programmet køre så for man fx dette output:

Kode:

[julemand101@carbon:~]$ pacman-orphans
gecko-sharp-0.6-6
libvisual-0.2.0-3
xorg-apps-1.0.2-2
xorg-res-utils-1.0.0-1
xorg-twm-1.0.1-1
xorg-xdm-1.0.4-2
xorg-xfs-1.0.2-1
xorg-xfwp-1.0.1-2
xorg-xsm-1.0.1-2

Her kan jeg se en række programmer som ikke kræves af andre programmer. Men kik lige selv en gang inden du gør noget dumt. Ikke alle pakker ville være kloge at fjerne. Fx xorg-apps som indeholder en masser programmer til X11 og der er mange andre. Så husk at tjekke efter. wink


Administrator for Archlinux.dk

Offline

 

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/vzn258/domains/archlinux.dk/public_html/forum/include/parser.php on line 348

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/vzn258/domains/archlinux.dk/public_html/forum/include/parser.php on line 349

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/vzn258/domains/archlinux.dk/public_html/forum/include/parser.php on line 348

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/vzn258/domains/archlinux.dk/public_html/forum/include/parser.php on line 349

#2 13-01-2007 22:17:29

Borelia
Hyppig poster
Registreret: 01-01-2007
Indlæg: 274

Re: Brug af orphans

Det er et godt program.
En anden god ide til, når man har kørt programmet og fundet en pakke - så kan man eventuelt - det gør jeg - køre en pacman -Qi pakkenavn og måske pacman -Qo pakkenavn. Man kan så se tydeligt hvor pakken hører til og hvem som ejer den.


~..Many times I wished there was an "undo" in real life.~

Offline

 

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/vzn258/domains/archlinux.dk/public_html/forum/include/parser.php on line 348

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/vzn258/domains/archlinux.dk/public_html/forum/include/parser.php on line 349

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/vzn258/domains/archlinux.dk/public_html/forum/include/parser.php on line 310

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/vzn258/domains/archlinux.dk/public_html/forum/include/parser.php on line 333

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/vzn258/domains/archlinux.dk/public_html/forum/include/parser.php on line 333

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/vzn258/domains/archlinux.dk/public_html/forum/include/parser.php on line 406

#3 13-01-2007 23:08:12

julemand101
Admin
Fra: Brabrand
Registreret: 18-04-2006
Indlæg: 779
Website

Re: Brug af orphans

Det er et godt program.
En anden god ide til, når man har kørt programmet og fundet en pakke - så kan man eventuelt - det gør jeg - køre en pacman -Qi pakkenavn og måske pacman -Qo pakkenavn. Man kan så se tydeligt hvor pakken hører til og hvem som ejer den.

Yep, jeg plejer også at opdage nogle pakker når jeg opdatere. Fx er der mange programmer jeg kommer i tanke om jeg slet ikke har brugt i måneder og derfor godt kan fjernes. Derfor er jeg begyndt at tjekke alle libs osv. for at finde frem til ubrugelige pakker i systemet.


Administrator for Archlinux.dk

Offline

 

Board footer

Powered by FluxBB