📄 deb.in
字号:
#! @PERL@## Written by Fernando Alegre <alegre@debian.org> 1996## Applied patch by Dimitri Maziuk <emaziuk@curtin.edu.au> 1997# (to handle new tar format)## Modified by Fernando Alegre <alegre@debian.org> 1997# (to handle both new and old tar formats)## Modified by Patrik Rak <prak@post.cz> 1998# (add by Michael Bramer Debian-mc-maintainer <grisu@debian.org>)# (to allow access to package control files)## Modified by Martin Bialasinski <martinb@debian.org> 1999# (deal with change in tar format)### Copyright (C) 1997 Free Software Foundation#sub mcdebfs_list{## CAVEAT: Hard links are listed as if they were symlinks# Empty directories do not appear at all# local($archivename)=@_; chop($date=`LC_ALL=C date "+%b %d %Y %H:%M"`); chop($info_size=`dpkg -I $archivename | wc -c`); $install_size=length($pressinstall); print "dr-xr-xr-x 1 root root 0 $date CONTENTS\n"; # from Patrik Rak print "dr-xr-xr-x 1 root root 0 $date DEBIAN\n"; print "-r--r--r-- 1 root root $info_size $date INFO\n"; print "-r-xr--r-- 1 root root $install_size $date INSTALL\n"; if ( open(PIPEIN, "dpkg-deb -c $archivename |") ) { while(<PIPEIN>) { split; $perm=$_[0]; $owgr=$_[1]; $size=$_[2]; if($_[3] =~ /^\d\d\d\d\-/) { # New tar format ($year,$mon,$day) = split(/-/,$_[3]); $month = ("Gee","Jan","Feb","Mar","Apr","May","Jun", "Jul","Aug","Sep","Oct","Nov","Dec")[$mon] || "Gee"; $time=$_[4]; $pathindex=5; } else { $month=$_[3]; $day=$_[4]; $time=$_[5]; $year=$_[6]; $pathindex=7; } $path=$_[$pathindex++]; $arrow=$_[$pathindex++]; $link=$_[$pathindex++]; $link2=$_[$pathindex++]; $owgr=~s!/! !; next if $path=~m!/$!; if($arrow eq 'link') {# report hard links as soft links $arrow='->'; $link="/$link2"; substr($perm, 0, 1) = "l"; } if($arrow ne '') { $arrow=' ' . $arrow; $link= ' ' . $link; } print "$perm 1 $owgr $size $month $day $year $time CONTENTS/$path$arrow$link\n"; } } # begin from Patrik Rak if ( open(PIPEIN, "dpkg-deb -I $archivename |") ) { while(<PIPEIN>) { split; $size=$_[0]; last if $size =~ /:/; next if $size !~ /\d+/; if($_[4] eq '*') { $perm='-r-xr-xr-x'; $name=$_[5]; } else { $perm='-r--r--r--'; $name=$_[4]; } print "$perm 1 root root $size $date DEBIAN/$name\n"; } } # end from Patrik Rak}sub mcdebfs_copyout{ local($archive,$filename,$destfile)=@_; if($filename eq "INFO") { system("dpkg-deb -I $archive > $destfile"); # begin from Patrik Rak } elsif($filename =~ /^DEBIAN/) { $filename=~s!^DEBIAN/!!; system("dpkg-deb -I $archive $filename > $destfile"); # end from Patrik Rak } elsif($filename eq "INSTALL") { if ( open(FILEOUT,">$destfile") ) { print FILEOUT $pressinstall; close FILEOUT; system("chmod a+x $destfile"); } } else { # files can be prepended with ./ or not, depending on the version of tar $filename=~s!^CONTENTS/!!; system("dpkg-deb --fsys-tarfile $archive | tar xOf - $filename ./$filename > $destfile 2>/dev/null"); }}sub mcdebfs_run{ local($archive,$filename)=@_; if($filename eq "INSTALL") { print "Installing $archive\n"; system("dpkg -i $archive"); } else { $suffix = "aaa"; while (1) { $tmpdir = "/tmp/mcdebfs.run".$$.$suffix; last if mkdir $tmpdir, 0700; $suffix++; # Somebody is being really nasty, give up exit 1 if $suffix eq "zzz"; } $tmpcmd="$tmpdir/run"; &mcdebfs_copyout($archive, $filename, $tmpcmd); system("chmod u+x $tmpcmd"); system($tmpcmd); unlink($tmpcmd); rmdir($tmpdir); }}$pressinstall=<<EOInstall; WARNING Don\'t use this method if you are not willing to reinstall everything...This is not a real file. It is a way to install the package you are browsing.To install this package go back to the panel and press Enter on this file.In Debian systems, a package is automatically upgraded when you install a newversion of it. There is no special upgrade option. Install always works.EOInstallumask 077;if($ARGV[0] eq "list") { shift; &mcdebfs_list(@ARGV); exit 0; }elsif($ARGV[0] eq "copyout") { shift; &mcdebfs_copyout(@ARGV); exit 0; }elsif($ARGV[0] eq "run") { shift; &mcdebfs_run(@ARGV); exit 0; }exit 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -