From: Sam Hartman Date: Thu, 16 Nov 2000 06:40:49 +0000 (+0000) Subject: * add afs-rootvol X-Git-Tag: debian/1.0.snap20001106-3 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=100d818f19994f33e8d929188f16ad8006c46495;p=packages%2Fo%2Fopenafs.git * add afs-rootvol * update changelog * update depends for control file --- diff --git a/debian/afs-rootvol b/debian/afs-rootvol new file mode 100644 index 000000000..1ba8e71f1 --- /dev/null +++ b/debian/afs-rootvol @@ -0,0 +1,186 @@ +#!/usr/bin/perl -w + +use strict; +use Term::ReadLine; +use Getopt::Long; + +=head1 NAME + + afs-rootvol - Generate and populate root volumes for new AFS cells. + +=head1 SYNOPSIS + +B [B<--requirements-met>] [B<--server> server-name] [B<--partition> partition-letter] + +=head1 DESCRIPTION + +This script sets up an AFS cell's root volumes. It assumes that you +already have a fileserver and database servers. The fileserver should +have an empty root.afs. + This script creates root.cell, user, service and populates root.afs. + +=head1 AUTHOR + +Sam Hartman + +=cut + +use vars qw($rl $server $part $requirements_met); +use vars qw( @unwinds); + +sub run ($) { + print join(' ', @_); + print "\n"; + system (@_) == 0 + or die "Filed: $?\n"; +} + +# This subroutine takes a command to run in case of failure. After +# each succesful step, this routine should be run with a command to +# undo the successful step. + + sub unwind($) { + push @unwinds, $_[0]; + } + + +# This subroutine creates a volume, mounts it and then sets the access +# to allow read by anyuser. The volume is scheduled for deletion in +# case of error. +# mkvol(volume, mount) + sub mkvol($$) { + my ($vol, $mnt) = @_; + run("vos create $server $part $vol -localauth"); + unwind("vos remove $server $part $vol -localauth"); + run("fs mkm $mnt $vol "); + run("fs sa $mnt system:anyuser rl"); + } + +# main script +$rl = new Term::ReadLine('AFS'); + + +GetOptions ( + "requirements-met" => \$requirements_met, + "server=s" => \$server, + "partition=s" => \$part + ); +unless ($requirements_met) { + print <readline("Do you meet these conditions? (Y/n) "); + unless (/^y/i ) { + print "Please restart the script when you meet these conditions.\n"; + exit(1); + } + +} + +open(MOUNT, "mount |") or die "Failed to run mount: $!\n"; +while() { +if(m:^AFS:) { +print "The AFS client is currently running on this workstation.\n"; +print "Please restart this script after running /etc/init.d/openafs-client stop\n"; +exit(1); +} +} +close MOUNT; + + +# Get configuration information we need + +open(CELL, "/etc/openafs/server/ThisCell") +or die "Unable to find out what cell this machine serves: $!\n"; +my $cell = ; +close CELL; +chomp $cell; + +unless ($server) { + print <readline("What AFS Server should volumes be placed on? "); + die "Please select a server.\n" unless $server; +} +unless ($part) { + $part = $rl ->readline("What partition? [a] "); +$part = "a" unless $part; +} + + + + +run("echo $cell >/etc/openafs/ThisCell"); + +run("vos create $server $part root.afs -localauth -cell $cell"); +unwind("vos remove $server $part root.afs -localauth"); + + +run("/etc/init.d/openafs-client start"); +unwind("/etc/init.d/openafs-client stop"); + +run("aklog snorklewacker.mit.edu -k ZONE.MIT.EDU"); + +run("fs sa /afs system:anyuser rl"); + +run("vos create $server $part root.cell -localauth"); +unwind("vos remove $server $part root.cell -localauth"); +# We make root.cell s:anyuser readable after we mount in the next +# loop. + + +open(CELLSERVDB, "/etc/openafs/CellServDB") + or die "Unable to open /etc/openafs/CellServDB: $!\n"; +while() { + chomp; + if (/^>\s*([a-z0-9_\-.]+)/ ) { + run("fs mkm /afs/$1 root.cell -cell $1 "); + } +} + +run("fs sa /afs/$cell system:anyuser rl"); +run ("fs mkm /afs/.$cell root.cell -cell $cell -rw"); +run("fs mkm /afs/.root.afs root.afs -rw"); + +mkvol( "user", "/afs/$cell/user" ); +mkvol( "service", "/afs/$cell/service" ); + +$cell =~ /^([^.]*)/; +my $cellpart = $1; +run("ln -s /afs/$cell /afs/$cellpart"); +run( "ln -s /afs/.$cell /afs/.$cellpart" ); + +run( "vos addsite $server $part root.afs -localauth" ); +run( "vos addsite $server $part root.cell -localauth" ); +run( "vos release root.afs -localauth" ); +run( "vos release root.cell -localauth" ); +unwind( "vos remove $server $part root.cell.readonly -localauth "); +unwind( "vos remove $server $part root.afs.readonly -localauth "); + +#@unwinds = (); + +END { + run(pop @unwinds) while @unwinds; + } + diff --git a/debian/changelog b/debian/changelog index e70cebbe2..ae7d643f0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,20 @@ +openafs (1.0.snap20001106-3) unstable; urgency=low + + * Increase stacksize for server processes so they don't dump core. + * New script: afs-rootvol--creates the root.afs and root.cell. Works + fairly well except that it is overly verbose and that it has my test + cell hardcoded. This script will evolve into part of a new cell + config tool. + + + -- + * Support removing module for smP + * Prune build directories out of modules sources--oops + * Fix bogus depends for module sources--note that it really does want + bison and flex at least for now. + + -- Sam Hartman Thu, 16 Nov 2000 01:39:48 -0500 + openafs (1.0.snap20001106-2) unstable; urgency=low * Fix directories for servers to be FHS-reasonable diff --git a/debian/control b/debian/control index 4bfa4733f..dfef03a71 100644 --- a/debian/control +++ b/debian/control @@ -30,7 +30,7 @@ Description: The AFS distributed filesystem- file server Package: openafs-dbserver Architecture: i386 -Depends: ${shlibs:Depends}, debconf, openafs-fileserver (= ${Source-Version}) +Depends: ${shlibs:Depends}, debconf, openafs-fileserver (= ${Source-Version}), perl5 Description: The AFS distributed filesystem- database server AFS is a distributed filesystem allowing cross-platform sharing of files among multiple computers. Facilities are provided for access @@ -52,7 +52,7 @@ Description: The AFS distributed filesystem- development libraries Package: openafs-modules-source Priority: extra -Depends: libncurses5-dev, libpam0g-dev +Depends: bison, flex Architecture: all Description: The AFS distributed filesystem- Module Sources AFS is a distributed filesystem allowing cross-platform sharing of diff --git a/debian/openafs-dbserver.dirs b/debian/openafs-dbserver.dirs index 2cbb14480..7906da13b 100644 --- a/debian/openafs-dbserver.dirs +++ b/debian/openafs-dbserver.dirs @@ -1 +1,3 @@ var/lib/openafs/db +usr/share/man/man8 +usr/sbin diff --git a/debian/openafs-fileserver.dirs b/debian/openafs-fileserver.dirs index ebf55bc2d..47613841b 100644 --- a/debian/openafs-fileserver.dirs +++ b/debian/openafs-fileserver.dirs @@ -2,3 +2,4 @@ var/log/openafs etc/openafs/server etc/openafs/server-local var/lib/openafs/cores + diff --git a/debian/rules b/debian/rules index e44e4068d..12d872500 100755 --- a/debian/rules +++ b/debian/rules @@ -77,6 +77,9 @@ install: build cp dest/root.client/usr/vice/etc/afs.rc debian/openafs-client/etc/init.d/openafs-client chmod 755 debian/openafs-client/etc/init.d/openafs-client cp dest/root.client/usr/vice/etc/afs.conf debian/openafs-client/etc/openafs/afs.conf + install -m 755 -o root -g root debian/afs-rootvol debian/openafs-dbserver/usr/sbin + (cd debian&&pod2man --section 8 --center "Debian GNU/Linux" \ + afs-rootvol ) >debian/openafs-dbserver/usr/share/man/man8/afs-rootvol.8 # Build architecture-independent files here. # Pass -i to all debhelper commands in this target to reduce clutter. @@ -180,7 +183,9 @@ binary-source: # Clean up the sources install -d debian/$(srcpkg)/usr/src/modules/$(package) find . \( -name \*.o -o -path ./debian/$(srcpkg) -o -path \*/CVS -o -path ./src/WINNT \ - -o -path ./obj -o -path ./$(SYS_NAME) \) -prune -o -print | \ + -o -path ./obj -o -path ./$(SYS_NAME) \ + -o \( -path ./debian/\* -type d \) \ + -o -path ./debian/\*debhelper \) -prune -o -print | \ cpio -admp debian/$(srcpkg)/usr/src/modules/$(package) ( cd debian/$(srcpkg)/usr/src/modules/$(package); \ $(MAKE) -f debian/rules clean)