1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
--- texlive-base-2025.20251127.orig/texmf-dist/scripts/texlive/tlmgr.pl
+++ texlive-base-2025.20251127/texmf-dist/scripts/texlive/tlmgr.pl
@@ -44,38 +44,38 @@
BEGIN {
$^W = 1;
- # make subprograms (including kpsewhich) have the right path:
- my $kpsewhichname;
- if ($^O =~ /^MSWin/i) {
- # on w32 $0 and __FILE__ point directly to tlmgr.pl; they can be relative
- $Master = __FILE__;
- $Master =~ s!\\!/!g;
- $Master =~ s![^/]*$!../../..!
- unless ($Master =~ s!/texmf-dist/scripts/texlive/tlmgr\.pl$!!i);
- $bindir = "$Master/bin/windows";
- $kpsewhichname = "kpsewhich.exe";
- # path already set by wrapper batchfile
- } else {
- $Master = __FILE__;
- $Master =~ s,/*[^/]*$,,;
- $bindir = $Master;
- $Master = "$Master/../..";
- # make subprograms (including kpsewhich) have the right path:
- $ENV{"PATH"} = "$bindir:$ENV{PATH}";
- $kpsewhichname = "kpsewhich";
- }
- if (-r "$bindir/$kpsewhichname") {
- # not in bootstrapping mode => kpsewhich exists, so use it to get $Master
- chomp($Master = `kpsewhich -var-value=TEXMFROOT`);
- }
-
- # if we have no directory in which to find our modules,
- # no point in going on.
- if (! $Master) {
- die ("Could not determine directory of tlmgr executable, "
- . "maybe shared library woes?\nCheck for error messages above");
- }
-
+# # make subprograms (including kpsewhich) have the right path:
+# my $kpsewhichname;
+# if ($^O =~ /^MSWin/i) {
+# # on w32 $0 and __FILE__ point directly to tlmgr.pl; they can be relative
+# $Master = __FILE__;
+# $Master =~ s!\\!/!g;
+# $Master =~ s![^/]*$!../../..!
+# unless ($Master =~ s!/texmf-dist/scripts/texlive/tlmgr\.pl$!!i);
+# $bindir = "$Master/bin/windows";
+# $kpsewhichname = "kpsewhich.exe";
+# # path already set by wrapper batchfile
+# } else {
+# $Master = __FILE__;
+# $Master =~ s,/*[^/]*$,,;
+# $bindir = $Master;
+# $Master = "$Master/../..";
+# # make subprograms (including kpsewhich) have the right path:
+# $ENV{"PATH"} = "$bindir:$ENV{PATH}";
+# $kpsewhichname = "kpsewhich";
+# }
+# if (-r "$bindir/$kpsewhichname") {
+# # not in bootstrapping mode => kpsewhich exists, so use it to get $Master
+# chomp($Master = `kpsewhich -var-value=TEXMFROOT`);
+# }
+
+# # if we have no directory in which to find our modules,
+# # no point in going on.
+# if (! $Master) {
+# die ("Could not determine directory of tlmgr executable, "
+# . "maybe shared library woes?\nCheck for error messages above");
+# }
+ $Master = "/usr/share/texlive";
$::installerdir = $Master; # for config.guess et al., see TLUtils.pm
# make Perl find our packages first:
@@ -629,6 +629,13 @@
tldie("$prg: Try --help if you need it.\n");
}
+ # automatically switch to user mode on Debian, and warn
+ if (!$opts{"usermode"} && $action ne "init-usertree") {
+ $opts{"usermode"} = 1;
+ print "(running on Debian, switching to user mode!)\n";
+ print "(see /usr/share/doc/texlive-base/README.tlmgr-on-Debian.md)\n";
+ }
+
# nice to have the version if debugging.
debug("tlmgr version $tlmgrversion\n");
@@ -6393,7 +6400,9 @@
# sets up the user tree for tlmgr in user mode
sub action_init_usertree {
# init_local_db but do not die if localtlpdb is not found!
- init_local_db(2);
+ # Debian: we don't ship tlpdb for system files, so don't even
+ # try to initialize it.
+ # init_local_db(2);
my $tlpdb = TeXLive::TLPDB->new;
my $usertree;
if ($opts{"usertree"}) {
@@ -7178,7 +7187,11 @@
if ($should_i_die == 2) {
return undef;
} else {
- die("cannot setup TLPDB in $::maintree");
+ if ($opts{'usermode'}) {
+ die("$prg: user mode not initialized, please read the documentation!\n");
+ } else {
+ die("cannot setup TLPDB in $::maintree");
+ }
}
}
# setup the programs, for w32 we need the shipped wget/xz etc, so we
--- texlive-base-2025.20251127.orig/texmf-dist/doc/man/man1/tlmgr.1
+++ texlive-base-2025.20251127/texmf-dist/doc/man/man1/tlmgr.1
@@ -79,6 +79,8 @@
<https://tug.org/texlive/tlmgr.html>, along with procedures for updating
\&\f(CW\*(C`tlmgr\*(C'\fR itself and information about test versions.
.PP
+WARNING: tlmgr in Debian runs always in user mode
+.PP
TeX Live is organized into a few top\-level \fIschemes\fR, each of which is
specified as a different set of \fIcollections\fR and \fIpackages\fR, where a
collection is a set of packages, and a package is what contains actual
|