<div><div>Hi all,<br></div><div><br></div><div>I have tried to run the `.install-tl` script twice after extracting <a href="http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz">http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz</a> today. However, I get this error in the subject line:<br></div><div>```<br></div></div><div>Installing [2567/3746, time/total: 01:33:08/02:18:01]: pgfplots [15151k]<br></div><div><div>Can't write to '/tmp/MvcGi1mPGs/i97SMsuejQ/pgfplots.doc.tar.xz': No space left on device at /usr/share/perl5/vendor_perl/LWP/Protocol.pm line<br></div><div> [jray@jr-dl install-tl-20190215]$ <br></div><div>cat /usr/share/perl5/vendor_perl/LWP/Protocol.pm<br></div></div><div>package LWP::Protocol;<br></div><div><br></div><div>use base 'LWP::MemberMixin';<br></div><div><br></div><div>our $VERSION = '6.36';<br></div><div><br></div><div>use strict;<br></div><div>use Carp ();<br></div><div>use HTTP::Status ();<br></div><div>use HTTP::Response ();<br></div><div>use Try::Tiny qw(try catch);<br></div><div><br></div><div>my %ImplementedBy = (); # scheme => classname<br></div><div><br></div><div>sub new<br></div><div>{<br></div><div>    my($class, $scheme, $ua) = @_;<br></div><div><br></div><div>    my $self = bless {<br></div><div>scheme => $scheme,<br></div><div>ua => $ua,<br></div><div><br></div><div># historical/redundant<br></div><div>        max_size => $ua->{max_size},<br></div><div>    }, $class;<br></div><div><br></div><div>    $self;<br></div><div>}<br></div><div><br></div><div><br></div><div>sub create<br></div><div>{<br></div><div>    my($scheme, $ua) = @_;<br></div><div>    my $impclass = LWP::Protocol::implementor($scheme) or<br></div><div>Carp::croak("Protocol scheme '$scheme' is not supported");<br></div><div><br></div><div>    # hand-off to scheme specific implementation sub-class<br></div><div>    my $protocol = $impclass->new($scheme, $ua);<br></div><div><br></div><div>    return $protocol;<br></div><div>}<br></div><div><br></div><div><br></div><div>sub implementor<br></div><div>{<br></div><div>    my($scheme, $impclass) = @_;<br></div><div><br></div><div>    if ($impclass) {<br></div><div>$ImplementedBy{$scheme} = $impclass;<br></div><div>    }<br></div><div>    my $ic = $ImplementedBy{$scheme};<br></div><div>    return $ic if $ic;<br></div><div><br></div><div>    return '' unless $scheme =~ /^([.+\-\w]+)$/;  # check valid URL schemes<br></div><div>    $scheme = $1; # untaint<br></div><div>    $scheme =~ tr/.+-/_/;  # make it a legal module name<br></div><div><br></div><div>    # scheme not yet known, look for a 'use'd implementation<br></div><div>    $ic = "LWP::Protocol::$scheme";  # default location<br></div><div>    $ic = "LWP::Protocol::nntp" if $scheme eq 'news'; #XXX ugly hack<br></div><div>    no strict 'refs';<br></div><div>    # check we actually have one for the scheme:<br></div><div>    unless (@{"${ic}::ISA"}) {<br></div><div>        # try to autoload it<br></div><div>        try {<br></div><div>            (my $class = $ic) =~ s{::}{/}g;<br></div><div>            $class .= '.pm' unless $class =~ /\.pm$/;<br></div><div>            require $class;<br></div><div>        }<br></div><div>        catch {<br></div><div>            my $error = $_;<br></div><div>            if ($error =~ /Can't locate/) {<br></div><div>                $ic = '';<br></div><div>            }<br></div><div>            else {<br></div><div>                die "$error\n";<br></div><div>            }<br></div><div>        };<br></div><div>    }<br></div><div>    $ImplementedBy{$scheme} = $ic if $ic;<br></div><div>    $ic;<br></div><div>}<br></div><div><br></div><div><br></div><div>sub request<br></div><div>{<br></div><div>    my($self, $request, $proxy, $arg, $size, $timeout) = @_;<br></div><div>    Carp::croak('LWP::Protocol::request() needs to be overridden in subclasses');<br></div><div>}<br></div><div><br></div><div><br></div><div># legacy<br></div><div>sub timeout    { shift->_elem('timeout',    @_); }<br></div><div>sub max_size   { shift->_elem('max_size',   @_); }<br></div><div><br></div><div><br></div><div>sub collect<br></div><div>{<br></div><div>    my ($self, $arg, $response, $collector) = @_;<br></div><div>    my $content;<br></div><div>    my($ua, $max_size) = @{$self}{qw(ua max_size)};<br></div><div><br></div><div>    # This can't be moved to Try::Tiny due to the closures within causing<br></div><div>    # leaks on any version of Perl prior to 5.18.<br></div><div>    # <a href="https://perl5.git.perl.org/perl.git/commitdiff/a0d2bbd5c">https://perl5.git.perl.org/perl.git/commitdiff/a0d2bbd5c</a><br></div><div>    my $error = do { #catch<br></div><div>        local $@;<br></div><div>        local $\; # protect the print below from surprises<br></div><div>        eval { # try<br></div><div>            if (!defined($arg) || !$response->is_success) {<br></div><div>                $response->{default_add_content} = 1;<br></div><div>            }<br></div><div>            elsif (!ref($arg) && length($arg)) {<br></div><div>                open(my $fh, ">", $arg) or die "Can't write to '$arg': $!";<br></div><div>                binmode($fh);<br></div><div>                push(@{$response->{handlers}{response_data}}, {<br></div><div>                    callback => sub {<br></div><div>                        print $fh $_[3] or die "Can't write to '$arg': $!";<br></div><div>                        1;<br></div><div>                    },<br></div><div>                });<br></div><div>                push(@{$response->{handlers}{response_done}}, {<br></div><div>                    callback => sub {<br></div><div>                        close($fh) or die "Can't write to '$arg': $!";<br></div><div>                        undef($fh);<br></div><div>                    },<br></div><div>                });<br></div><div>            }<br></div><div>            elsif (ref($arg) eq 'CODE') {<br></div><div>                push(@{$response->{handlers}{response_data}}, {<br></div><div>                    callback => sub {<br></div><div>                        &$arg($_[3], $_[0], $self);<br></div><div>                        1;<br></div><div>                    },<br></div><div>                });<br></div><div>            }<br></div><div>            else {<br></div><div>                die "Unexpected collect argument '$arg'";<br></div><div>            }<br></div><div><br></div><div>            $ua->run_handlers("response_header", $response);<br></div><div><br></div><div>            if (delete $response->{default_add_content}) {<br></div><div>                push(@{$response->{handlers}{response_data}}, {<br></div><div>                    callback => sub {<br></div><div>                        $_[0]->add_content($_[3]);<br></div><div>                        1;<br></div><div>                    },<br></div><div>                });<br></div><div>            }<br></div><div><br></div><div><br></div><div>            my $content_size = 0;<br></div><div>            my $length = $response->content_length;<br></div><div>            my %skip_h;<br></div><div><br></div><div>            while ($content = &$collector, length $$content) {<br></div><div>                for my $h ($ua->handlers("response_data", $response)) {<br></div><div>                    next if $skip_h{$h};<br></div><div>                    unless ($h->{callback}->($response, $ua, $h, $$content)) {<br></div><div>                        # XXX remove from $response->{handlers}{response_data} if present<br></div><div>                        $skip_h{$h}++;<br></div><div>                    }<br></div><div>                }<br></div><div>                $content_size += length($$content);<br></div><div>                $ua->progress(($length ? ($content_size / $length) : "tick"), $response);<br></div><div>                if (defined($max_size) && $content_size > $max_size) {<br></div><div>                    $response->push_header("Client-Aborted", "max_size");<br></div><div>                    last;<br></div><div>                }<br></div><div>            }<br></div><div>            1;<br></div><div>        };<br></div><div>        $@;<br></div><div>    };<br></div><div><br></div><div>    if ($error) {<br></div><div>        chomp($error);<br></div><div>        $response->push_header('X-Died' => $error);<br></div><div>        $response->push_header("Client-Aborted", "die");<br></div><div>    };<br></div><div>    delete $response->{handlers}{response_data};<br></div><div>    delete $response->{handlers} unless %{$response->{handlers}};<br></div><div>    return $response;<br></div><div>}<br></div><div><br></div><div><br></div><div>sub collect_once<br></div><div>{<br></div><div>    my($self, $arg, $response) = @_;<br></div><div>    my $content = \ $_[3];<br></div><div>    my $first = 1;<br></div><div>    $self->collect($arg, $response, sub {<br></div><div>return $content if $first--;<br></div><div>return \ "";<br></div><div>    });<br></div><div>}<br></div><div><br></div><div>1;<br></div><div><br></div><div><br></div><div>__END__<br></div><div><br></div><div>=pod<br></div><div><br></div><div>=head1 NAME<br></div><div><br></div><div>LWP::Protocol - Base class for LWP protocols<br></div><div><br></div><div>=head1 SYNOPSIS<br></div><div><br></div><div>package LWP::Protocol::foo;<br></div><div>use base qw(LWP::Protocol);<br></div><div><br></div><div>=head1 DESCRIPTION<br></div><div><br></div><div>This class is used as the base class for all protocol implementations<br></div><div>supported by the LWP library.<br></div><div><br></div><div>When creating an instance of this class using<br></div><div>C<LWP::Protocol::create($url)>, and you get an initialized subclass<br></div><div>appropriate for that access method. In other words, the<br></div><div>L<LWP::Protocol/create> function calls the constructor for one of its<br></div><div>subclasses.<br></div><div><br></div><div>All derived C<LWP::Protocol> classes need to override the request()<br></div><div>method which is used to service a request. The overridden method can<br></div><div>make use of the collect() function to collect together chunks of data<br></div><div>as it is received.<br></div><div><br></div><div>=head1 METHODS<br></div><div><br></div><div>The following methods and functions are provided:<br></div><div><br></div><div>=head2 new<br></div><div><br></div><div>    my $prot = LWP::Protocol->new();<br></div><div><br></div><div>The LWP::Protocol constructor is inherited by subclasses. As this is a<br></div><div>virtual base class this method should B<not> be called directly.<br></div><div><br></div><div>=head2 create<br></div><div><br></div><div>    my $prot = LWP::Protocol::create($scheme)<br></div><div><br></div><div>Create an object of the class implementing the protocol to handle the<br></div><div>given scheme. This is a function, not a method. It is more an object<br></div><div>factory than a constructor. This is the function user agents should<br></div><div>use to access protocols.<br></div><div><br></div><div>=head2 implementor<br></div><div><br></div><div>    my $class = LWP::Protocol::implementor($scheme, [$class])<br></div><div><br></div><div>Get and/or set implementor class for a scheme.  Returns C<''> if the<br></div><div>specified scheme is not supported.<br></div><div><br></div><div>=head2 request<br></div><div><br></div><div>    $response = $protocol->request($request, $proxy, undef);<br></div><div>    $response = $protocol->request($request, $proxy, '/tmp/sss');<br></div><div>    $response = $protocol->request($request, $proxy, \&callback, 1024);<br></div><div><br></div><div>Dispatches a request over the protocol, and returns a response<br></div><div>object. This method needs to be overridden in subclasses.  Refer to<br></div><div>L<LWP::UserAgent> for description of the arguments.<br></div><div><br></div><div>=head2 collect<br></div><div><br></div><div>    my $res = $prot->collect(undef, $response, $collector); # stored in $response<br></div><div>    my $res = $prot->collect($filename, $response, $collector);<br></div><div>    my $res = $prot->collect(sub { ... }, $response, $collector);<br></div><div><br></div><div>Collect the content of a request, and process it appropriately into a scalar,<br></div><div>file, or by calling a callback. If the first parameter is undefined, then the<br></div><div>content is stored within the C<$response>. If it's a simple scalar, then it's<br></div><div>interpreted as a file name and the content is written to this file.  If it's a<br></div><div>code reference, then content is passed to this routine.<br></div><div><br></div><div>The collector is a routine that will be called and which is<br></div><div>responsible for returning pieces (as ref to scalar) of the content to<br></div><div>process.  The C<$collector> signals C<EOF> by returning a reference to an<br></div><div>empty string.<br></div><div><br></div><div>The return value is the L<HTTP::Response> object reference.<br></div><div><br></div><div>B<Note:> We will only use the callback or file argument if<br></div><div>C<< $response->is_success() >>.  This avoids sending content data for<br></div><div>redirects and authentication responses to the callback which would be<br></div><div>confusing.<br></div><div><br></div><div>=head2 collect_once<br></div><div><br></div><div>    $prot->collect_once($arg, $response, $content)<br></div><div><br></div><div>Can be called when the whole response content is available as content. This<br></div><div>will invoke L<LWP::Protocol/collect> with a collector callback that<br></div><div>returns a reference to C<$content> the first time and an empty string the<br></div><div>next.<br></div><div><br></div><div>=head1 SEE ALSO<br></div><div><br></div><div>Inspect the F<LWP/Protocol/file.pm> and F<LWP/Protocol/http.pm> files<br></div><div>for examples of usage.<br></div><div><br></div><div>=head1 COPYRIGHT<br></div><div><br></div><div>Copyright 1995-2001 Gisle Aas.<br></div><div><br></div><div>This library is free software; you can redistribute it and/or<br></div><div>modify it under the same terms as Perl itself.<br></div><div><br></div><div>=cut<br></div><div>[jray@jr-dl install-tl-20190215]$ lsblk -f<br></div><div>NAME   FSTYPE LABEL     UUID                                 FSAVAIL FSUSE% MOUNTPOINT<br></div><div>sda                                                                        <br></div><div>├─sda1 vfat             7D57-B7BC                             299.1M     0% /boot/efi<br></div><div>├─sda2 ext4             8ad88713-bc2e-4bfb-af80-c0f7e0f5e91c  250.8G     7% /<br></div><div>└─sda3 swap             86ea7831-1a63-4a74-9286-f8741ef4ce8c                [SWAP]<br></div><div>sdb                                                                        <br></div><div>├─sdb1 ext4   SG_data   52776559-1302-4aa3-92b8-987d2d3d9a9c  461.9G    21% /home<br></div><div>└─sdb2 ext4   SG_backup a9eb34d2-615f-4113-ab93-b60ac2192a8d  228.4G    17% /media/sg_backup<br></div><div>sr0                                                                        <br></div><div>[jray@jr-dl install-tl-20190215]$ inxi -Fxz<br></div><div>System:    Host: jr-dl Kernel: 4.20.7-1-MANJARO x86_64 bits: 64 compiler: gcc v: 8.2.1 Desktop: N/A Distro: Manjaro Linux<br></div><div>Machine:   Type: Laptop System: Dell product: Latitude E6410 v: 0001 serial: <filter><br></div><div>           Mobo: Dell model: 0HNGW4 serial: <filter> UEFI: Dell v: A16 date: 12/05/2013<br></div><div>Battery:   ID-1: BAT0 charge: 39.6 Wh condition: 39.6/48.8 Wh (81%) model: Samsung SDI DELL PT43699 status: Full<br></div><div>CPU:       Topology: Dual Core model: Intel Core i5 M 560 bits: 64 type: MT MCP arch: Nehalem rev: 5 L2 cache: 3072 KiB<br></div><div>           flags: lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx bogomips: 21290<br></div><div>           Speed: 1444 MHz min/max: 1199/2667 MHz Core speeds (MHz): 1: 1230 2: 1253 3: 1278 4: 1445<br></div><div>Graphics:  Device-1: Intel Core Processor Integrated Graphics vendor: Dell Latitude E6410 driver: i915 v: kernel<br></div><div>           bus ID: 00:02.0<br></div><div>           Display: x11 server: X.Org 1.20.3 driver: intel unloaded: modesetting resolution: 1440x900~60Hz, 1920x1080~60Hz<br></div><div>           OpenGL: renderer: Mesa DRI Intel Ironlake Mobile v: 2.1 Mesa 18.3.2 direct render: Yes<br></div><div>Audio:     Device-1: Intel 5 Series/3400 Series High Definition Audio vendor: Dell Latitude E6410 driver: snd_hda_intel<br></div><div>           v: kernel bus ID: 00:1b.0<br></div><div>           Sound Server: ALSA v: k4.20.7-1-MANJARO<br></div><div>Network:   Device-1: Intel 82577LM Gigabit Network vendor: Dell Latitude E6410 driver: e1000e v: 3.2.6-k port: 7040<br></div><div>           bus ID: 00:19.0<br></div><div>           IF: eno1 state: up speed: 1000 Mbps duplex: full mac: <filter><br></div><div>           Device-2: Broadcom and subsidiaries BCM43224 802.11a/b/g/n vendor: Dell Wireless 1520 Half-size Mini PCIe Card<br></div><div>           driver: wl v: kernel port: 7000 bus ID: 02:00.0<br></div><div>           IF: wlp2s0 state: down mac: <filter><br></div><div>Drives:    Local Storage: total: 1.20 TiB used: 197.53 GiB (16.1%)<br></div><div>           ID-1: /dev/sda vendor: Seagate model: ST9320423AS size: 298.09 GiB<br></div><div>           ID-2: /dev/sdb type: USB vendor: Seagate model: Expansion size: 931.51 GiB<br></div><div>Partition: ID-1: / size: 284.06 GiB used: 18.79 GiB (6.6%) fs: ext4 dev: /dev/sda2<br></div><div>           ID-2: /home size: 622.48 GiB used: 128.93 GiB (20.7%) fs: ext4 dev: /dev/sdb1<br></div><div>           ID-3: swap-1 size: 8.18 GiB used: 728.2 MiB (8.7%) fs: swap dev: /dev/sda3<br></div><div>Sensors:   System Temperatures: cpu: 48.0 C mobo: N/A sodimm: 45.0 C<br></div><div>           Fan Speeds (RPM): cpu: 3321<br></div><div>Info:      Processes: 208 Uptime: 5h 00m Memory: 3.72 GiB used: 2.10 GiB (56.5%) Init: systemd Compilers: gcc: 8.2.1<br></div><div>           clang: 7.0.1 Shell: bash v: 5.0.0 inxi: 3.0.30<br></div><div>[jray@jr-dl install-tl-20190215]$<br></div><div></div><div>```<br></div><div>I checked the known issues and bugs page but couldn't see anything relevant to this issue.<br></div><div><br></div><div class="protonmail_signature_block"><div class="protonmail_signature_block-user"><div>Kind regards,<br></div><div><div><br></div><div>James Ray<br></div></div><div><a href="https://about.me/james.ray">https://about.me/james.ray</a><br></div></div><div><br></div><div class="protonmail_signature_block-proton">Sent with <a target="_blank" href="https://protonmail.com">ProtonMail</a> Secure Email.<br></div></div><div><br></div>