回答:
達成したい内容に応じて、この作業を行うためのさまざまな方法があります(または、少なくとも必要な機能をハックして見せる)。
多くの方法でのソフトウェアのインストールは、リソースを利用可能にするか、システムにすでに存在するものへのアクセスを許可することに帰着します。
プリンターへのアクセスを許可するか、ユーザーが特定のディレクトリでプログラムを実行できるようにするかどうかにかかわらず、これを実現する方法があります。Ubuntuにネイティブかもしれませんが、これらの種類のソリューションは一般的に(もちろん) .debインストールの後に追加されます。
追加できるインストール後制御の2つの一般的なクラスを次に示します。厳密に制御されたグループポリシーが適切に設定されている場合など、適切な環境が与えられている場合、基本システムを適切に設定すれば、これは簡単になる可能性があることに注意してください。これらの種類の許可は、LDAPまたはユーザーまたはグループごとに認証と承認を与えることができる同様のシステムに結び付けることさえできます。
可視性の制御
私は自分でおそらくある程度似たような状況を経験しましたが、私の場合、ユーザーは(まだ)あまり洗練されていません(全員が7歳未満)。私にとっては、Gnomeメニューを非表示にするか、デスクトップランチャーを削除するだけで機能しました。
ディレクトリから実行可能ビットを削除すると、プロセスがそれらを検索またはトラバースすることができなくなります。これらを効果的に非表示にし、ユーザーごとに使用不可にすることができます。たとえば、ファイルアクセスに基づいてメニューを作成するデフォルトのシステムポリシーがある場合、この種の化粧品のソリューションを取得し、追加の労力をほとんどかけずに後続のインストールで機能させることができます。
実行制御
リソースの制御は、Unix許可、apparmorプロファイル、SELinux許可などを介して実行できます。アプリケーションによっては、他のレベルの制御フィルタリングが作用する場合があります。よりターゲットを絞ったソリューションがない場合は、特定のプログラムの周りにラッパーを作成して、ユーザーまたはプロセスのアクセスを制御する必要があります。
まあdpkg
、これはその設計目的ではないとしてあなたを助けにはなりません。システムにインストールされたパッケージのルート所有者の国勢調査になりたい。
頭に浮かぶのは、パッケージを展開して、ホームディレクトリに手動でファイルを配置することだけです。
ただし、これはいくつかの場合にのみ機能します。多数のパッケージがチャンクに分割され(実行可能ファイルまたはスクリプト/usr/bin
、ライブラリ、/lib
その他のガーブ/usr/share
など)、これらの場所はビルドスクリプトによってハードコーディングされます。したがって、このようなものをに引き込もうとすると、~
壊れます。依存関係を解くのに何時間も費やすこともできますが、がんの治療法を見つけたり、世界の美しさを吸収するなど、あなたの時間に役立つ何かをすることができます。
ソフトウェアを書いた人からパッケージ化されていないバージョンを取得するだけで、はるかに良くなります。ほとんどすべてのフリーソフトウェアは、圧縮されたアーカイブの形式でソースとして入手できるため、それを入手してビルドするだけです。あなたはしませんmake install
ステップを。アプリが構築されました。好きな場所に置くだけです。
/etc/init
、で設定ファイルを探します/etc
、または他のパスがハードコードされています。
./configure --prefix=$HOME/local
ます。
私は、このテーマについてはあまり知りませんが、あなたが別のディレクトリに代わりのパッケージをインストールすることがあり得ることを他の回答からのようだ/
とdpkg
、使用して--root
たパラメータを、次にやるchroot
」パッケージがしたディレクトリに(もちろん、ユーザーのホームディレクトリ内のディレクトリになります)。
以外のユーザーにパッケージをインストールするroot
には、上記のプロセスを次のfakechroot
代わりに使用することもできます。chroot
ます。
免責事項:私はこれをしようとしなかった、として書いている時点で多くの経験を持っていないdpkg
かchroot
、私は何からやります、これらのツールを知って、このプロセスはちょうどかもしれない仕事します。
機能chroot
なしの効果を達成したい人に役立つ情報を含むリンクroot
:
chroot
fakechroot
)私は今、この主題に触れるもので少しやりましたが、さらにいくつかを見つけました...
フラグメント(ローカル環境のビルディングブロック):
chroot(1)
完全(完全なローカル環境プロバイダー):
chroot(1)
、mount --bind
、binfmt_misc
、とQEMUユーザースペースを使用して他のアーキテクチャからバイナリを実行しています概要:ローカルでエミュレートするか、実際にルート権限を取得することにより、DEBパッケージをローカル環境にインストールできます。
実行可能ファイルの所有権を変更して、1人のユーザーのみが実行できるようにすることができます。その後、必要に応じて、他のユーザーのメニューからアプリケーションを削除できます。
~/bin
ます。この質問には、Takkatがマルチユーザーアプリケーションのアクセス/可視性を制限したいかどうか、またはシングルユーザーアプリケーションをインストールしたいかどうかについてあいまいさがあります。あなたとアレンジの質問は前者の解釈を使用し、残りは後者を想定しています。
疑わしい。
debは主に、インストール時にファイルシステムのルートに抽出されるアーカイブ(およびいくつかの構成)です。1人のユーザーだけにインストールする場合は、何らかの方法で/ home / userフォルダーにインストールする必要があります。たとえそれを行ったとしても、feアプリケーションバイナリは/ usr / bin(またはsthに類似)に置かれず、起動しようとしてもシステムはそれらを見つけられないため、機能しません。同様に、システムは/ homeのどこかに存在することをシステムが認識しないため、ライブラリなども役に立ちません。あなたは試みることができるブルートフォースアプローチの、そしてあなたがDEBアーカイブからファイルを抽出どこを指すようにPATH変数を調整し、それだけではないだろうVERY 安全ではありませんが、互換性の問題を引き起こす可能性があります(GNOMEは.desktopファイルを/ usr / share / applicationsに拡張するため、feメニューエントリは機能しません)。
さらに、一部のユーザーのみにパッケージをインストールした場合、自分用にインストールした他のユーザーと競合する他のユーザーがインストールしたパッケージと、場合によっては他の多くのパッケージ管理関連の問題が表示されると、狂った依存関係の問題が発生する可能性があります。
これらすべてのトラブルにより、ユーザーごとにパッケージを個別に管理することは非常に困難になります。したがって、.debsの背後にあるアイデアがそれを許可しないため、1人のユーザーだけにパッケージをインストールすることは不可能のようです。