Fetches .tar(.gz) archives defined in package.json and extracts them to a specific location.
tar-stream is a streaming tar parser and generator and nothing else. It operates purely using streams which means you can easily extract/parse tarballs without ever hitting the file system.
filesystem bindings for tar-stream
tar for node
Get a list of the files to add from a folder into an npm package
Zero dependency streaming tar parser and writer for JavaScript.
decompress tar plugin
Multipart and Tar utilities for the Web Streams API
TypeScript definitions for tar-stream
Package and un-package modules of some sort (in tar/gz bundles).
Node.js tar binding https://docs.rs/tar/latest/tar/
decompress tar plugin
Node.js tar binding https://docs.rs/tar/latest/tar/
Node.js tar binding https://docs.rs/tar/latest/tar/
Tiny and fast Tar utils for any JavaScript runtime!
TypeScript definitions for tar-fs
Compress a complete folder or a glob list into a zip/tgz/br/7z file
Check if a Buffer/Uint8Array is a TAR file
Node.js tar binding https://docs.rs/tar/latest/tar/
Node.js tar binding https://docs.rs/tar/latest/tar/
minimal implementation of a PassThrough stream
it-tar is a streaming tar parser (and maybe a generator in the future) and nothing else. It operates purely using async iterables which means you can easily extract/parse tarballs without ever hitting the file system.
Node.js tar binding https://docs.rs/tar/latest/tar/
A small fast zlib stream built on [minipass](http://npm.im/minipass) and Node.js's zlib binding.
Pure-Ruby implementation of tar archive creation and extraction using the standard 512-byte block format. Supports adding files from disk or strings, extracting archives, and listing archive contents without external dependencies.
Parcel is a simple library which allows normal ruby objects to maintain a series of files stored in one or more repositories which are accessible through normal ruby attributes. Possible repositories include Zip Files, Tar Files, Subversion Repos, Repos, GridFS Zips, etc. It also provides an common and easy to use interface to all these repositories (i.e. more ruby like than RubyZip), and works with ActiveRecord but doesn't depend on it.
zu == Unzipper (in the tradition of `uz`, but better). Works for .tgz, .xz, .zip, .deb, .rpm — you name it. (Literally. If you find an archive that it doesn't open, let me know about it and I'll add that.) If you have an archive sitting there of format `xyz`, then `zu foo.xyz` should take care of it. It will: - Know how to extract the archive (based on extension ┈ though a version that detects based on `file` is something we're considering) - Guard against impoliteness. That is, if the archive only has one file, it will be permitted to extract into the current directory, otherwise it will first `mkdir foo; cd foo` then extract there. (The directory name will be the archive file minus the extension.) - Download the file first, using `wget`, if the arg starts with `http:`, `https:`, or `ftp:` - Remove the archive file if you pass `-d` Dependencies ------------ `zu` doesn't strive to be dependency-free by any means. For starters, it expects Ruby. Then it simply delegates to `unzip`, `gunzip`, `tar`, etc. Not sure if I ever plan on changing this. The main purpose is to optimize the command-line extraction of archives on a configured box. Installation ------------ 1. Have Ruby 1.8 (with gems) or 1.9 2. `gem install zu` Feedback -------- Tell us. (exad-zu@sharpsaw.worg)[mailto:exad-zu@sharpsaw.org]
# ruby unshare (runshare) This tool allows to unshare Linux namespaces. The implementation is similar to the unshare(1) tool. ## Installation Add this line to your application's Gemfile: ```ruby gem 'runshare' ``` And then execute: $ bundle Or install it yourself as: $ gem install runshare ## Usage > require "runshare" > RUnshare::unshare For example: cat > test.rb require "runshare" pid = RUnshare::unshare( :clone_newpid => true, :clone_newns => true, :clone_newcgroup => true, :clone_newipc => true, :clone_newuts => true, :clone_newnet => true, :clone_newtime => true, :fork => true, :mount_proc => "/proc", # docker export $(docker create hello-world) | tar -xf - -C rootfs :root => "/tmp/rootfs" ) if pid == 0 # child puts "--- #{Process.pid}" if system("/hello") != true raise "bad" end puts "--- done" else # parent puts "-- unshare=#{pid}, pid=#{Process.pid}" puts "-- exit=#{Process.waitpid(pid)}" end ^D sudo ruby -I ./lib ./test.rb ## Quick start $ rake compile && echo 'require "runshare"; RUnshare::unshare(:clone_newuts => true)' | irb install -c tmp/x86_64-linux/runshare/2.4.10/runshare.so lib/runshare/runshare.so cp tmp/x86_64-linux/runshare/2.4.10/runshare.so tmp/x86_64-linux/stage/lib/runshare/runshare.so Switch to inspect mode. require "runshare"; RUnshare::unshare ## Ruby <2.5 If your app is single threaded and you are observing: eval:1: warning: pthread_create failed for timer: Invalid argument, scheduling broken Just ignore it with some degree of bravity. You also can silence it by setting: $VERBOSE = nil ## Development After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment. To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org). ## Contributing Bug reports and pull requests are welcome on GitHub at https://github.com/sitano/runshare. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. ## License The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).