Coder Social home page Coder Social logo

user-install-deb's People

Contributors

jtsymon avatar nathanielw avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

alphapapa

user-install-deb's Issues

apt-get upgrade

Tries to upgrade all the dummy packages (if they're out of date).
Is it possible to mark packages as do-not-upgrade somehow?
Another option could be setting the version to something really high, but that would probably break dependency checks.

Updating placeholders

Currently placeholder packages are only generated on the initial bootstrap.
This probably isn't too bad on the systems I'm running on at uni where they get updated maybe once a year, but on a frequently updated system it could cause problems.
Should add an option to re-generate the placeholders and remove any uninstalled ones.

Fallback to real root

We use a fakechroot so we can write to /.
Files that we don't want to write to (such as apt-get library / config folders) can be linked in to the fakechroot.
However this requires manually doing so on a case-by-case basis whenever things break.
There are also problems with scripts which have hardcoded #!/usr/bin/interpreter, which does not exist in the fakechroot (but do exist at that location on the real root).

A possibly better solution would be as follows:

  • When reading a file, use the file from the fakechroot if it exists, else fallback to the real root.
  • When writing to a file, create the file on the fakechroot if it is not already on the fakechroot, then write to that file.

Problems:

  • fakechroot does not appear to support this functionality (would need to find/write a tool that supports this).
  • No way to "delete" a file that exists on the real root.

Status?

Hi, I just stumbled upon this because you starred one of my repos. This sounds amazing. Even though I personally don't need to install debs without root permissions, I guess this could be essentially used as a lightweight container for almost any deb package, right? And I guess it could even be used to contain changes to the user's homedir by not passing it through, right?

That could be very useful for testing new packages, or testing upgrades of existing ones. Am I right that this would, for example, allow you to install a package from another archive and upgrade its dependencies too? For example, you're on Jessie, want to install something from Testing, but it needs a bunch of dependencies from Testing, and you aren't sure how well that will go, so you use this to essentially dry-run the operation before running it for real.

It just sounds amazing, and it seems so simple too--well, other than the patching that you obviously spent many hours figuring out. :)

Fails to start scripts with hardcoded interpreters

Scripts with a hardcoded interpreter #!/usr/bin/interpreter instead of #!/usr/bin/env interpreter fail to start inside the fakechroot because the interpreter only exists on the real root.
This could be fixed by #5, or by overwriting execve to automatically fix the interpreter (presumably this is possible with LD_PRELOAD?)

apt-get update

Doesn't work because we're using the package lists from the main system which we don't have write access to.
Probably not a good idea to maintain a separate copy of the list, so I guess we're just stuck with waiting for the system to automatically update the lists (I think its on a schedule for Ubuntu by default?)

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.