EVERYTHING FROM THE OTHER REPO
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
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)
|
||||
+111
@@ -0,0 +1,111 @@
|
||||
#!/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 $?
|
||||
@@ -0,0 +1 @@
|
||||
70 apt APT Acquisition [file,http,ftp]
|
||||
+286
@@ -0,0 +1,286 @@
|
||||
#!/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 (<CONFIG>) {
|
||||
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=<STDIN>;
|
||||
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=<STDIN>;
|
||||
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=<STDIN>;
|
||||
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.example.org/debian,\n";
|
||||
print " http://deb.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 = <STDIN>;
|
||||
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 = <STDIN>;
|
||||
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();
|
||||
|
||||
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user