sqdkjqlsjdklqsjdlqskjd azjdjksqhvdjqskhdkqhsj zkhjdhqksldjqlskdjlqskjd zjhdjqlskdhqsljkhdsqd PK<+]ò¯Fe- - methods/apt/installnuȯÝí#!/bin/bash # Set the textdomain for the translations using $"..." TEXTDOMAIN="apt" # Get the configuration from /etc/apt/apt.conf CLEAN="prompt" OPTS="" DSELECT_UPGRADE_OPTS="-f" APTGET="/usr/bin/apt-get" DPKG="/usr/bin/dpkg" DPKG_OPTS="--admindir=$1" APT_OPT0="-oDir::State::status=$1/status" APT_OPT1="-oDPkg::Options::=$DPKG_OPTS" set -e RES=$(apt-config shell CLEAN DSelect::Clean OPTS DSelect::Options \ DPKG Dir::Bin::dpkg/f APTGET Dir::Bin::apt-get/f \ ARCHIVES Dir::Cache::Archives/d \ WAIT DSelect::WaitAfterDownload/b \ CHECKDIR DSelect::CheckDir/b) eval $RES set +e # Yes/No Prompter yesno() { # $1 = prompt # $2 = default(y) local ans def defp if [ "$2" ];then case $2 in Y|y) defp="[Y/n]" def=y;; N|n) defp="[y/N]" def=n;; *) echo $"Bad default setting!" 1>&2; exit 1;; esac else defp="[y/N]" def=n fi while :;do echo -n "$1 $defp " 1>&3 read ans case $ans in Y|y|N|n) break;; "") ans=$def;break;; esac echo done echo $ans | tr YN yn } if [ "$WAIT" = "true" ]; then $APTGET $DSELECT_UPGRADE_OPTS $OPTS "$APT_OPT0" "$APT_OPT1" -d dselect-upgrade echo $"Press [Enter] to continue." && read RES $APTGET $DSELECT_UPGRADE_OPTS $OPTS "$APT_OPT0" "$APT_OPT1" dselect-upgrade RES=$? else $APTGET $DSELECT_UPGRADE_OPTS $OPTS "$APT_OPT0" "$APT_OPT1" dselect-upgrade RES=$? fi # 1 means the user choose no at the prompt if [ $RES -eq 1 ]; then exit 0 fi # Finished OK if [ $RES -eq 0 ]; then if [ $(ls $ARCHIVES $ARCHIVES/partial | grep -E -v "^lock$|^partial$" | wc -l) \ -eq 0 ]; then exit 0 fi NEWLS=$(ls -ld $ARCHIVES) if [ "$CHECKDIR" = "true" ]; then if [ "$OLDLS" = "$NEWLS" ]; then exit 0 fi fi # Check the cleaning mode case $(echo $CLEAN | tr '[:upper:]' '[:lower:]') in auto) $APTGET "$APT_OPT0" "$APT_OPT1" autoclean && echo $"Press [Enter] to continue." && read RES && exit 0; ;; always) $APTGET "$APT_OPT0" "$APT_OPT1" clean && echo $"Press [Enter] to continue." && read RES && exit 0; ;; prompt) exec 3>&1 echo -n $"Do you want to erase any previously downloaded .deb files?" if [ $(yesno "" y) = y ]; then $APTGET "$APT_OPT0" "$APT_OPT1" clean && echo $"Press [Enter] to continue." && read RES && exit 0; fi ;; *) ;; esac else echo $"Some errors occurred while unpacking. Packages that were installed" echo $"will be configured. This may result in duplicate errors" echo $"or errors caused by missing dependencies. This is OK, only the errors" echo $"above this message are important. Please fix them and run [I]nstall again" echo $"Press [Enter] to continue." read RES && $DPKG "$DPKG_OPTS" --configure -a exit 100 fi exit $? PK<+]A˜:£77methods/apt/desc.aptnu„[µü¤The APT installation method encompasses most other installation methods under the umbrella of the new Package Acquisition code. This method allows installation from locations in the filesystem, ftp and http URLs, supports full installation ordering and dependency checking as well as multiple sources. See the man pages apt-get(8) and sources.list(5) HTTP proxies can be used by setting http_proxy="http://proxy:port/" before running DSelect. FTP proxies require special configuration detailed in the apt.conf(5) man page (see /usr/share/doc/apt/examples/apt.conf) PK<+]©/ÆýIImethods/apt/setupnuȯÝí#!/usr/bin/perl -w # -*- Mode: Perl -*- # setup.pl --- # Author : Manoj Srivastava ( srivasta@tiamat.datasync.com ) # Created On : Wed Mar 4 15:11:47 1998 # Created On Node : tiamat.datasync.com # Last Modified By : Manoj Srivastava # Last Modified On : Tue May 19 11:25:32 1998 # Last Machine Used: tiamat.datasync.com # Update Count : 87 # Status : Unknown, Use with caution! # HISTORY : # Description : # This file is designed to go into /usr/lib/apt/methods/setup # #use strict; #use diagnostics; #printf STDERR "DEBUG: Arguments $ARGV[0];$ARGV[1];$ARGV[2];\n"; # Handle the arguments my $vardir=$ARGV[0]; my $method=$ARGV[1]; my $option=$ARGV[2]; my $config_file = '/etc/apt/sources.list'; my $boldon=`setterm -bold on`; my $boldoff=`setterm -bold off`; my @known_types = ('deb'); my @known_access = ('http', 'ftp', 'file'); my @typical_distributions = ('stable', 'unstable', 'testing'); my @typical_components = ('main', 'contrib', 'non-free', 'non-free-firmware'); my %known_access = map {($_,$_)} @known_access; my %typical_distributions = map {($_,$_)} @typical_distributions; # Read the config file, creating source records sub read_config { my %params = @_; my @Config = (); die "Required parameter Filename Missing" unless $params{'Filename'}; open (CONFIG, "$params{'Filename'}") || die "Could not open $params{'Filename'}: $!"; while () { chomp; my $rec = {}; my ($type, $urn, $distribution, $components) = m/^\s*(\S+)\s+(\S+)\s+(\S+)\s*(?:\s+(\S.*))?$/o; $rec->{'Type'} = $type; $rec->{'URN'} = $urn; $rec->{'Distribution'} = $distribution; $rec->{'Components'} = $components; push @Config, $rec; } close(CONFIG); return @Config; } # write the config file; writing out the current set of source records sub write_config { my %params = @_; my $rec; my %Seen = (); die "Required parameter Filename Missing" unless $params{'Filename'}; die "Required parameter Config Missing" unless $params{'Config'}; open (CONFIG, ">$params{'Filename'}") || die "Could not open $params{'Filename'} for writing: $!"; for $rec (@{$params{'Config'}}) { my $line = "$rec->{'Type'} $rec->{'URN'} $rec->{'Distribution'} "; $line .= "$rec->{'Components'}" if $rec->{'Components'}; $line .= "\n"; print CONFIG $line unless $Seen{$line}++; } close(CONFIG); } # write the config file; writing out the current set of source records sub print_config { my %params = @_; my $rec; my %Seen = (); die "Required parameter Config Missing" unless $params{'Config'}; for $rec (@{$params{'Config'}}) { next unless $rec; my $line = "$rec->{'Type'} " if $rec->{'Type'}; $line .= "$rec->{'URN'} " if $rec->{'URN'}; $line .= "$rec->{'Distribution'} " if $rec->{'Distribution'}; $line .= "$rec->{'Components'}" if $rec->{'Components'}; $line .= "\n"; print $line unless $Seen{$line}++; } } # Ask for and add a source record sub get_source { my %params = @_; my $rec = {}; my $answer; my ($type, $urn, $distribution, $components); if ($params{'Default'}) { ($type, $urn, $distribution, $components) = $params{'Default'} =~ m/^\s*(\S+)\s+(\S+)\s+(\S+)\s+(\S.*)$/o; } $type = 'deb'; $urn = "http://deb.debian.org/debian" unless $urn; $distribution = "stable" unless $distribution; $components = "main contrib non-free non-free-firmware" unless $components; $rec->{'Type'} = 'deb'; $| = 1; my $done = 0; while (!$done) { print "\n"; print "$boldon URL [$urn]: $boldoff"; $answer=; chomp ($answer); $answer =~ s/\s*//og; if ($answer =~ /^\s*$/o) { $rec->{'URN'} = $urn; last; } else { my ($scheme) = $answer =~ /^\s*([^:]+):/o; if (! defined $known_access{$scheme}) { print "Unknown access scheme $scheme in $answer\n"; print " The available access methods known to me are\n"; print join (' ', @known_access), "\n"; print "\n"; } else { $rec->{'URN'} = $answer; last; } } } print "\n"; print " Please give the distribution tag to get or a path to the\n"; print " package file ending in a /. The distribution\n"; print " tags are typically something like:$boldon "; print join(' ', @typical_distributions), "$boldoff\n"; print "\n"; print "$boldon Distribution [$distribution]:$boldoff "; $answer=; chomp ($answer); $answer =~ s/\s*//og; if ($answer =~ /^\s*$/o) { $rec->{'Distribution'} = $distribution; $rec->{'Components'} = &get_components($components); } elsif ($answer =~ m|/$|o) { $rec->{'Distribution'} = "$answer"; $rec->{'Components'} = ""; } else { # A distribution tag, eh? warn "$answer does not seem to be a typical distribution tag\n" unless defined $typical_distributions{$answer}; $rec->{'Distribution'} = "$answer"; $rec->{'Components'} = &get_components($components); } return $rec; } sub get_components { my $default = shift; my $answer; print "\n"; print " Please give the components to get\n"; print " The components are typically something like:$boldon "; print join(' ', @typical_components), "$boldoff\n"; print "\n"; print "$boldon Components [$default]:$boldoff "; $answer=; chomp ($answer); $answer =~ s/\s+/ /og; if ($answer =~ /^\s*$/o) { return $default; } else { return $answer; } } sub get_sources { my @Config = (); my $done = 0; my @Oldconfig = (); if (-e $config_file) { @Oldconfig = &read_config('Filename' => $config_file) } print "\t$boldon Set up a list of distribution source locations $boldoff \n"; print "\n"; print " Please give the base URL of the debian distribution.\n"; print " The access schemes I know about are:$boldon "; print join (' ', @known_access), "$boldoff\n"; # print " The mirror scheme is special that it does not specify the\n"; # print " location of a debian archive but specifies the location\n"; # print " of a list of mirrors to use to access the archive.\n"; print "\n"; print " For example:\n"; print " file:/mnt/debian,\n"; print " ftp://ftp.debian.org/debian,\n"; print " http://ftp.de.debian.org/debian,\n"; # print " and the special mirror scheme,\n"; # print " mirror:http://www.debian.org/archivemirrors \n"; print "\n"; my $index = 0; while (!$done) { if ($Oldconfig[$index]) { push (@Config, &get_source('Default' => $Oldconfig[$index++])); } else { push (@Config, &get_source()); } print "\n"; print "$boldon Would you like to add another source?[y/N]$boldoff "; my $answer = ; chomp ($answer); $answer =~ s/\s+/ /og; if ($answer =~ /^\s*$/o) { last; } elsif ($answer !~ m/\s*y/io) { last; } } return @Config; } sub main { if (-e $config_file) { my @Oldconfig = &read_config('Filename' => $config_file); print "$boldon I see you already have a source list.$boldoff\n"; print "-" x 72, "\n"; &print_config('Config' => \@Oldconfig); print "-" x 72, "\n"; print "$boldon Do you wish to overwrite it? [y/N]$boldoff "; my $answer = ; chomp ($answer); $answer =~ s/\s+/ /og; exit 0 unless $answer =~ m/\s*y/io; } # OK. They want to be here. my @Config = &get_sources(); #&print_config('Config' => \@Config); &write_config('Config' => \@Config, 'Filename' => $config_file); } &main(); PK<+]uš£ÚÚmethods/apt/updatenuȯÝí#!/bin/bash set -e # Set the textdomain for the translations using $"..." TEXTDOMAIN="apt" # Get the configuration from /etc/apt/apt.conf CLEAN="prompt" OPTS="" APTGET="/usr/bin/apt-get" APTCACHE="/usr/bin/apt-cache" DPKG="/usr/bin/dpkg" DPKG_OPTS="--admindir=$1" APT_OPT0="-oDir::State::status=$1/status" APT_OPT1="-oDPkg::Options::=$DPKG_OPTS" CACHEDIR="/var/cache/apt" PROMPT="false" RES=`apt-config shell CLEAN DSelect::Clean OPTS DSelect::UpdateOptions \ DPKG Dir::Bin::dpkg/f APTGET Dir::Bin::apt-get/f \ APTCACHE Dir::Bin::apt-cache/f CACHEDIR Dir::Cache/d \ PROMPT DSelect::PromptAfterUpdate/b` eval $RES # It looks slightly ugly to have a double / in the dpkg output CACHEDIR=`echo $CACHEDIR | sed -e "s|/$||"` STATUS=1 if $APTGET $OPTS "$APT_OPT0" "$APT_OPT1" update then echo $"Merging available information" rm -f $CACHEDIR/available $APTCACHE dumpavail > $CACHEDIR/available $DPKG "$DPKG_OPTS" --update-avail $CACHEDIR/available rm -f $CACHEDIR/available case "$CLEAN" in Pre-Auto|PreAuto|pre-auto) $APTGET "$APT_OPT0" "$APT_OPT1" autoclean;; esac STATUS=0 fi if [ x$PROMPT = "xtrue" ]; then echo $"Press [Enter] to continue." && read RES; fi exit $STATUS PK<+] L²¦''methods/apt/namesnu„[µü¤70 apt APT Acquisition [file,http,ftp] PK<+]ò¯Fe- - methods/apt/installnuȯÝíPK<+]A˜:£77p methods/apt/desc.aptnu„[µü¤PK<+]©/ÆýIIë methods/apt/setupnuȯÝíPK<+]uš£ÚÚu,methods/apt/updatenuȯÝíPK<+] L²¦''‘1methods/apt/namesnu„[µü¤PK›ù1