Giter Site home page Giter Site logo

fakepkg's Introduction

NAME

fakepkg - reassemble Arch Linux packages

SYNOPSIS

Usage: fakepkg [ OPTIONS ] [ TARGETS ]

DESCRIPTION

Pacman usually stores all downloaded packages in its package cache to enable the user to downgrade each and every package. However if the package cache was removed either by accident or by purpose to e.g. save disk space, it may be useful to recreate the cache at a later point. The obvious choice would be to download all those packages again. However this is actually redundant since all files and folders from the packages should reside on your system. This is where fakepkg comes in handy. Its purpose is to recreate any given package as long as it is installed on your system. This probably saves you a lot of bandwith and time in comparison to building the package from source or downloading it from third parties.

Warning: The files from your system are taken as they are, hence any modifications done to them by you or any program will be present in the assembled package. This might be seen as either downside or benefit. However distributing the recreated package is therefore discouraged. See ABS and Arch Rollback Machine for alternatives.

Note: Certain files and folders may only be read by root. Though fakepkg will warn you in those cases, consider running it as root.

Note: Reassembling packages may take some time, so be patient. However you may speed things up a little by using -j or XZ_OPT / ZSTD_NBTHREADS.

OPTIONS

-h,--help

Display this help message and exit

-v,--verbose

Increase verbosity

-j,--jobs <jobs>

Build in parallel - you may want to set XZ_OPT / ZSTD_NBTHREADS

-o,--out <dir>

Write output to <dir>

-r,--root <dir>

Use <dir> as an alternate root directory containing pacman db

ENVIRONMENT VARIABLES

PKGEXT sets the file ending of the reassembled package and implicitly the compression format.

XZ_OPT, ZSTD_CLEVEL, ZSTD_NBTHREADS, ... are honored by tar. Common usage scenarios are to utilize multicore compression. Maximum performace was achieved when used in conjunction with two jobs of fakepkg. However more than two active jobs may even lead to performance loss.

EXAMPLES

To reassemble e.g. gzip and binutils, use the following command:

fakepkg gzip binutils

You may as well specify a destination folder:

fakepkg -o /var/cache/pacman/pkg tar xz

Recreating multiple packages at once with only one thread can take some time. This can be sped up by utilizing multiple jobs, in this case 4:

fakepkg -j 4 linux slurm-llnl virtualbox qemu

Alternatively it may also make sense to set the tar environment variable for multi core compression. Hereby tar uses all the CPU power hence starting multiple jobs brings no performance gain:

PKGEXT=".pkg.tar.xz" XZ_OPT="-T 0" fakepkg $(pacman -Qsq)

AUTHOR

Gordian Edenhofer <[email protected]>

LICENSE

Unless otherwise stated, the files in this project may be distributed under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or any later version. This work is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See [version 2] (https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) and [version 3] (https://www.gnu.org/copyleft/gpl-3.0.html) of the GNU General Public License for more details.

fakepkg's People

Contributors

edenhofer avatar jose1711 avatar tallero avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

fakepkg's Issues

Fakepkg couldn't find any package

Hi,
I suddendly discovered bacman was removed for a long time and fakepkg is encouraged as an alternative.
However, after installing the package from AUR, typing fakepkg WHATEVER-PACKAGE-NAME does not work: it always tells me

The following package(s) could not be found on your system: "WHATEVER-PACKAGE-NAME"
Keep in mind that the package(s) have to be installed!

Are there any hidden steps?

Syntax error with bash 5.1.16

$ ./fakepkg --help
./fakepkg: line 60: syntax error in conditional expression: unexpected token `;'

The fix is to add the missing space before ]]:

diff --git a/fakepkg b/fakepkg
index 347bb65..8fa55d0 100755
--- a/fakepkg
+++ b/fakepkg
@@ -57,7 +57,7 @@ function fakebuild() {
                _MIMETYPE=$(file --mime-type "${PKG_DB_ENTRY}/mtree")
                if [[ "${_MIMETYPE}" == *"application/gzip"* ]]; then
                        gzip -dc "${_MTREE}" > .MTREE
-               elif [[ "${_MIMETYPE}" == *"text/plain"*]]; then
+               elif [[ "${_MIMETYPE}" == *"text/plain"* ]]; then
                        cp "${_MTREE}" .MTREE
                fi
        fi

Tested with: GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.