Antworten:
Je nachdem, was Sie erreichen möchten, gibt es möglicherweise verschiedene Möglichkeiten, um diese Funktion auszuführen (oder zumindest einen abgedrehten Eindruck von der gewünschten Funktionalität zu vermitteln).
Bei der Installation von Software kommt es in vielerlei Hinsicht darauf an, Ressourcen verfügbar zu machen oder Zugriff auf Dinge zu gewähren, die bereits auf dem System vorhanden sind.
Unabhängig davon, ob Sie den Zugriff auf Drucker gewähren oder einem Benutzer erlauben, Programme in einem bestimmten Verzeichnis auszuführen, gibt es Möglichkeiten, dies zu erreichen. Auch wenn diese Lösungen in Ubuntu integriert sind, werden sie (natürlich) in der Regel eingesetzt hinzugefügt werden, nachdem eine .deb-Installation durchgeführt wurde.
Im Folgenden werden zwei allgemeine Klassen für die Steuerung nach der Installation aufgeführt, die hinzugefügt werden können. Beachten Sie, dass dies unter Berücksichtigung der richtigen Umgebung, z. B. wenn eine streng kontrollierte Gruppenrichtlinie vorhanden ist, möglicherweise einfacher ist, wenn Sie das Basissystem eingerichtet haben. Diese Art von Berechtigung kann sogar an LDAP oder ein ähnliches System gebunden sein, das die Authentifizierung und Autorisierung pro Benutzer oder Gruppe ermöglicht.
Sichtbarkeitskontrolle
Ich hatte selbst eine vielleicht etwas ähnliche Situation, aber in meinem Fall waren die Benutzer (noch) nicht sehr anspruchsvoll (alle unter 7 Jahren). Für mich hat es funktioniert, Gnome-Menüs auszublenden oder Desktop-Starter zu entfernen.
Wenn Sie das ausführbare Bit aus Verzeichnissen entfernen, können Prozesse diese nicht mehr durchsuchen oder durchlaufen. Es kann sie effektiv unsichtbar machen und sie benutzerseitig nicht verfügbar machen. Wenn Sie beispielsweise über eine Standardsystemrichtlinie verfügen, die Menüs basierend auf dem Dateizugriff erstellt, können Sie eine solche kosmetische Lösung installieren und sie dann mit geringem zusätzlichen Aufwand für nachfolgende Installationen verwenden.
Ausführungskontrolle Die Kontrolle
der Ressource kann über Unix-Berechtigungen, Apparmor-Profile, SELinux-Berechtigungen usw. erfolgen. Abhängig von der Anwendung kann es auch andere Kontrollfilterebenen geben. In Ermangelung gezielterer Lösungen müssen Sie möglicherweise Wrapper für bestimmte Programme schreiben, um den Benutzer- oder Prozesszugriff zu steuern.
Naja dpkg
, hilft dir nicht weiter, da dies nicht das gestalterische Ziel ist. Es soll eine alleinige Erhebung von Paketen sein, die auf einem System installiert sind.
Das Einzige, woran ich mich erinnere, ist, das Paket zu extrahieren und zu versuchen, die Dateien manuell im Ausgangsverzeichnis abzulegen.
Dies funktioniert jedoch nur für einige Dinge. Viele Pakete sind in Chunks aufgeteilt (ausführbare Dateien oder Skripte /usr/bin
, Bibliotheken /lib
und andere Garb- Ins /usr/share
usw.), und diese Speicherorte werden von den Build-Skripten fest codiert. Wenn Sie also versuchen, so etwas hineinzuziehen ~
, wird es zerbrechen. Sie könnten Stunden damit verbringen, die Abhängigkeiten zu lösen, aber Sie könnten etwas Nützliches mit Ihrer Zeit anfangen, wie das Heilmittel für Krebs zu finden oder einige der Schönheiten der Welt in sich aufzunehmen.
Sie tun es viel besser, wenn Sie eine nicht gepackte Version von jemandem kaufen, der die Software schreibt. Fast alle freie Software ist in irgendeiner Form von komprimiertem Archiv als Quelle verfügbar, also schnappen Sie sich das und erstellen Sie es einfach. Du machst den make install
Schritt nicht. Ihre App wurde erstellt. Platzieren Sie sie einfach dort, wo Sie sie möchten.
/etc/init
, sucht nach Konfigurationsdateien in /etc
oder hat einige andere Pfade fest codiert.
./configure --prefix=$HOME/local
.
Ich weiß nicht zu viel über dieses Thema, aber es scheint, als ob Sie aufgrund der anderen Antworten in der Lage sein könnten, ein Paket in einem anderen Verzeichnis zu installieren, anstatt /
mit dpkg
dem --root
Parameter chroot
" installiert "in (das kann natürlich ein Verzeichnis im Home-Verzeichnis des Benutzers sein).
Um ein Paket für einen anderen Benutzer als zu installieren root
, ist es möglicherweise möglich, den obigen Prozess mit fakechroot
anstelle von zu verwenden chroot
.
Disclaimer : Ich habe das nicht versuchen, und haben nicht viel Erfahrung zu der Zeit mit zu schreiben dpkg
oder chroot
aber von dem, was ich tun zu diesen Tools kennen, ist dieser Prozess nur könnte funktionieren.
Links, die Informationen enthalten, die für Personen nützlich sein können, die die Wirkung von chroot
ohne root
Fähigkeiten erzielen möchten :
chroot
fakechroot
)Ich habe jetzt ein wenig mit Dingen zu tun, die dieses Thema berühren, und etwas mehr herausgefunden ...
Fragmente (lokale Umgebungsbausteine):
chroot(1)
Vollständig (vollständige lokale Umgebungsanbieter):
chroot(1)
, mount --bind
, binfmt_misc
, und Programme von anderen Architekturen ausgeführt qemu-user-Raum mitZusammenfassung : DEB-Pakete können für eine lokale Umgebung installiert werden, indem Root-Berechtigungen lokal emuliert werden oder tatsächlich vorhanden sind.
Sie können wahrscheinlich die --root
Option dpkg
zum Installieren in ein anderes Verzeichnis verwenden. Aber wird wahrscheinlich auf Probleme stoßen, wenn die Anwendung Sachen an festen Orten sucht wie /etc
.
Kurz gesagt, ich glaube nicht, dass es einen einfachen Weg gibt.
Sie können den Eigentümer der ausführbaren Datei so ändern, dass nur ein Benutzer sie ausführen kann. Anschließend können Sie die Anwendung bei Bedarf aus den Menüs anderer Benutzer entfernen.
~/bin
. In dieser Frage besteht Unklarheit darüber, ob Takkat den Zugriff / die Sichtbarkeit einer Mehrbenutzeranwendung einschränken oder eine Einzelbenutzeranwendung installieren möchte. Ihre und die Fragen von Arrangement verwenden die erstere Interpretation, und der Rest übernimmt die letztere.
Zweifelhaft.
Bei den Debs handelt es sich hauptsächlich um Archive , die bei der Installation in das Stammverzeichnis Ihres Dateisystems extrahiert werden (plus einige Konfigurationsdateien). Wenn Sie sie nur für einen Benutzer installieren möchten, müssen Sie sie irgendwie im Ordner / home / user installieren. Selbst wenn Sie dies tun, würden sie nicht funktionieren, da zB Anwendungs-Binärdateien nicht in / usr / bin (oder ähnlichem) landen und das System sie nicht findet, wenn Sie versuchen, sie zu starten. Ebenso wären Bibliotheken etc. nutzlos, da das System nicht wissen würde, dass sich irgendwo in der / home befinden. Sie könnten den Brute-Force-Ansatz ausprobieren und die PATH-Variable so anpassen, dass sie zeigt, wo Sie die Dateien aus dem deb-Archiv extrahiert haben, aber das wäre nicht nur SEHR unsicher, kann aber möglicherweise zu Kompatibilitätsproblemen führen (z. B. funktionieren Menüeinträge nicht, da GNOME die .desktop-Dateien in / usr / share / applications erweitert).
Wenn Sie ein Paket nur für einige Benutzer installiert haben, kann dies außerdem zu verrückten Abhängigkeitsproblemen führen, wenn ein anderes Benutzerpaket, das mit einem anderen, das Sie nur für sich selbst installiert haben, in Konflikt steht, und möglicherweise Tonnen anderer Probleme im Zusammenhang mit der Paketverwaltung auftreten.
All diese Probleme machen es extrem schwierig, Pakete für Benutzer separat zu verwalten. Es scheint daher nicht möglich zu sein, sie nur für einen Benutzer zu installieren, da die Idee hinter den .debs dies nicht zulässt.