EVERYTHING FROM THE OTHER REPO

This commit is contained in:
2026-07-29 03:36:26 +03:00
parent 6777ea96db
commit 92a6ae42f5
4426 changed files with 1696506 additions and 2 deletions
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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