[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: interessante problemino



On Wed, Mar 24, 1999 at 02:00:37PM +0100, Guido Notari wrote:
> mi trovo un cdrom, masterizzato da un conoscente, che racchiude una
> distribuzione Debian.
> 
> Purtroppo l'autore, pur volenteroso, non era pratico, e il disco risulta
> masterizzato in un formato dove i nomi sono tutti maiuscoli e troncati,
> i permessi spariti e tutti i files risultano eseguibili -- a proposito,
> come mai sui formati M$ come il Joliet tutti i files risultano
> eseguibili anche quando il cd viene montato con noexec??

dpkg-name e' il programma che ti serve: rinomina il file .deb
e gli da' il giusto nome.
Il problema e' che la versione corrente copia il file e questo o
non e' possibile (il cd e' ro:-P) oppure scomodo (occupa troppo
spazio). La patch inclusa gli fa creare un symlink quando si usa
l'opzione -k: in questo modo ti puoi creare una symlink forest
che dovrebbe essere uguale piu' o meno al cd originale.

Qualcosa come questo dovrebbe funzionare (assumendo almeno l'estensione 
.deb sia rimasta):

cd /cdrombakato # in questa directory c'e' la dir dists.
mkdir /forest # dove verra' creata la foresta di symlink coi nomi giusti

# creiamo le directory
find ./dists -type d | while read dir; do mkdir -p /forest/$dir; done

# linkiamo i file
find ./ -name \*.deb | while read name; do
	dpkg-name -k -s /forest/`dirname $name` $name
done

I file Packages te li copi a mano:-)

lupus

-- 
-----------------------------------------------------------------
lupus@debian.org                                     debian/rules
--- dpkg-name.old	Thu Mar 25 11:18:54 1999
+++ dpkg-name	Thu Mar 25 11:32:27 1999
@@ -37,6 +37,7 @@
   according to the ``underscores convention''.
   -a|--no-architecture  No architecture part in filename
   -o|--overwrite        Overwrite if file exists
+  -k|--symlink          Don't create a new file, but a symlink
   -s|--subdir [dir]     Move file into subdir (Use with care)
   -c|--create-dir       Create target dir if not there (Use with care)
   -h|--help|-v|--version|-l|--license  Show help/version/license"
@@ -137,13 +138,19 @@
 			fi
 		fi
 		newname=`echo $dir/$name`;
+		if [ x$symlink = x1 ];
+		then
+			command="ln -s --"
+		else
+			command="mv --"
+		fi
 		if [ $newname -ef "$1" ]; # same device and inode numbers
 		then
 			stderr "skipping \`"$1"'";
 		elif [ -f $newname -a -z "$overwrite" ];
 		then
 			stderr "can't move \`"$1"' to existing file";
-		elif `mv -- "$1" $newname`;
+		elif `$command "$1" $newname`;
 		then
 			echo "moved \``basename "$1"`' to \`$newname'";
 		else
@@ -173,6 +180,7 @@
 		--create-dir|-c) createdir=1;;
 		--subdir|-s) subdirset=1;;
 		--overwrite|-o) overwrite=1 ;;
+		--symlink|-k) symlink=1 ;;
 		--no-architecture|-a) noarchitecture=1 ;;
 		--) shift; 
 			for arg 

Reply to: