単一のユーザーのみにDEBファイルでアプリケーションをインストールするにはどうすればよいですか?


33

ソフトウェアセンターまたはDEBファイルを使用してアプリケーションをインストールする場合、通常はすべてのユーザーに対してシステム全体にインストールされます。

単一のユーザーのみにアプリケーションをインストールする方法はありますか?

回答:


5

達成したい内容に応じて、この作業を行うためのさまざまな方法があります(または、少なくとも必要な機能をハックして見せる)。

多くの方法でのソフトウェアのインストールは、リソースを利用可能にするか、システムにすでに存在するものへのアクセスを許可することに帰着します。

プリンターへのアクセスを許可するか、ユーザーが特定のディレクトリでプログラムを実行できるようにするかどうかにかかわらず、これを実現する方法があります。Ubuntuにネイティブかもしれませんが、これらの種類のソリューションは一般的に(もちろん) .debインストールの後に追加されます。

追加できるインストール後制御の2つの一般的なクラスを次に示します。厳密に制御されたグループポリシーが適切に設定されている場合など、適切な環境が与えられている場合、基本システムを適切に設定すれば、これは簡単になる可能性があることに注意してください。これらの種類の許可は、LDAPまたはユーザーまたはグループごとに認証と承認を与えることができる同様のシステムに結び付けることさえできます。

可視性の制御
私は自分でおそらくある程度似たような状況を経験しましたが、私の場合、ユーザーは(まだ)あまり洗練されていません(全員が7歳未満)。私にとっては、Gnomeメニューを非表示にするか、デスクトップランチャーを削除するだけで機能しました。

ディレクトリから実行可能ビットを削除すると、プロセスがそれらを検索またはトラバースすることができなくなります。これらを効果的に非表示にし、ユーザーごとに使用不可にすることができます。たとえば、ファイルアクセスに基づいてメニューを作成するデフォルトのシステムポリシーがある場合、この種の化粧品のソリューションを取得し、追加の労力をほとんどかけずに後続のインストールで機能させることができます。

実行制御
リソースの制御は、Unix許可、apparmorプロファイル、SELinux許可などを介して実行できます。アプリケーションによっては、他のレベルの制御フィルタリングが作用する場合があります。よりターゲットを絞ったソリューションがない場合は、特定のプログラムの周りにラッパーを作成して、ユーザーまたはプロセスのアクセスを制御する必要があります。


3
可視性と実行制御の側面を分離するための+1
Takkat

10

まあdpkg、これはその設計目的ではないとしてあなたを助けにはなりません。システムにインストールされたパッケージのルート所有者の国勢調査になりたい。

頭に浮かぶのは、パッケージを展開して、ホームディレクトリに手動でファイルを配置することだけです。

ただし、これはいくつかの場合にのみ機能します。多数のパッケージがチャンクに分割され(実行可能ファイルまたはスクリプト/usr/bin、ライブラリ、/libその他のガーブ/usr/shareなど)、これらの場所はビルドスクリプトによってハードコーディングされます。したがって、このようなものをに引き込もうとすると、~壊れます。依存関係を解くのに何時間も費やすこともできますが、がんの治療法を見つけたり、世界の美しさを吸収するなど、あなたの時間に役立つ何かをすることができます。

ソフトウェアを書いた人からパッケージ化されていないバージョンを取得するだけで、はるかに良くなります。ほとんどすべてのフリーソフトウェアは、圧縮されたアーカイブの形式でソースとして入手できるため、それを入手してビルドするだけです。あなたはしませんmake installステップを。アプリが構築されました。好きな場所に置くだけです。


1
最後のオプションについては、いくつかの(単純なプログラム)場合に役立つかもしれませんが、通常、パッケージはたとえばinitスクリプトをインストールし/etc/init、で設定ファイルを探します/etc、または他のパスがハードコードされています。
手配

2
autoconfに基づくプロジェクトでは、を介してカスタムインストールディレクトリを設定でき./configure --prefix=$HOME/localます。
インゴカルカット

6

私は、このテーマについてはあまり知りませんが、あなたが別のディレクトリに代わりのパッケージをインストールすることがあり得ることを他の回答からのようだ/dpkg、使用して--rootたパラメータを、次にやるchroot」パッケージがしたディレクトリに(もちろん、ユーザーのホームディレクトリ内のディレクトリになります)。

以外のユーザーにパッケージをインストールするrootには、上記のプロセスを次のfakechroot代わりに使用することもできます。chrootます。

免責事項:私はこれをしようとしなかった、として書いている時点で多くの経験を持っていないdpkgchroot、私は何からやります、これらのツールを知って、このプロセスはちょうどかもしれない仕事します。

機能chrootなしの効果を達成したい人に役立つ情報を含むリンクroot

更新

私は今、この主題に触れるもので少しやりましたが、さらにいくつかを見つけました...

フラグメント(ローカル環境のビルディングブロック):

  • Fakechroot-エミュレートchroot(1)
  • Debootstrap-ディレクトリ内に別のDebianファイルシステム階層を作成する
  • Fakeroot-NG / fakeroot-いくつかのもののルートになりすますことができます
  • EmDebian-使用するスペースが少なく、chroot環境でよく使用される debianバリアント
  • binfmt_misc-インタープリターを使用して、ネイティブバイナリのようにファイルを実行できます。外部アーキテクチャのバイナリ(または(偽)chroot)で作業するためにqemu-userと併用すると便利です(QEMUソースコードに付属するscripts / qemu-binfmt-conf.shはこれを自動化します)
  • Qemuユーザースペース -他のアーキテクチャのバイナリを実行できます。一部のプロセッサアーキテクチャをサポートしていない場合、これらのツールのいくつかで使用できます。
  • LwIP-ユーザー空間から実行できるTCP / IPネットワークスタック

完全(完全なローカル環境プロバイダー):

  • ユーザーモードLinux-別のLinuxシステムを通常のプロセス/プログラムとして実行します
  • Qemu-完全な仮想コンピューターを実行する
  • PROOT -の機能を提供しchroot(1)mount --bindbinfmt_misc、とQEMUユーザースペースを使用して他のアーキテクチャからバイナリを実行しています
  • Linuxネームスペース - ユーザーネームスペースを使用する場合、Linuxカーネルバージョン3.8以降で利用可能な機能であるローカル環境内に完全なルートを持つことができます。

概要:ローカルでエミュレートするか、実際にルート権限を取得することにより、DEBパッケージをローカル環境にインストールできます。


3
以前の情報と矛盾する情報がある場合(または何か追加すると思われる場合)、回答を完全に再フォーマットしてください。多くの場合、追加の「編集」または「更新」セクションを追加するのではなく、言い換えれば答えがより明確になります。あなたの情報はおもしろいですが、おそらく最も関連性の高い部分が一番下に残っています。
ベラク

@jgbelacqua-再フォーマット済み、ヒントをありがとう。
アッバフェイ

4

おそらく、別のディレクトリにインストールする--rootオプションを使用できますdpkg。しかし、アプリケーションがのような固定された場所で何かを探す場合、おそらく問題に遭遇するでしょう/etc

つまり、簡単な方法はないと思います。


2

実行可能ファイルの所有権を変更して、1人のユーザーのみが実行できるようにすることができます。その後、必要に応じて、他のユーザーのメニューからアプリケーションを削除できます。


1
単一のユーザーにアプリケーションをインストールする一般的な動機は、インストールに管理者権限を使用する必要を回避することです。
エンドリューク

@ændrükしかし、彼がすでに.debからインストールしている場合、管理者権限を持っているのではないでしょうか?
ベラク

@jgbelacqua私の知る限り、はい、.debからのインストールには管理者権限が必要です。しかし、より一般的には、「単一ユーザーのみ」のものをインストールする場合、システム全体の管理に使用される特権への昇格は必要ありません。たとえば、私は頻繁に自分のプログラムをに配置してインストールし~/binます。この質問には、Takkatがマルチユーザーアプリケーションのアクセス/可視性を制限したいかどうか、またはシングルユーザーアプリケーションをインストールしたいかどうかについてあいまいさがあります。あなたとアレンジの質問は前者の解釈を使用し、残りは後者を想定しています。
エンドリューク

1

疑わしい。

debは主に、インストール時にファイルシステムのルートに抽出されるアーカイブ(およびいくつかの構成)です。1人のユーザーだけにインストールする場合は、何らかの方法で/ home / userフォルダーにインストールする必要があります。たとえそれを行ったとしても、feアプリケーションバイナリは/ usr / bin(またはsthに類似)に置かれず、起動しようとしてもシステムはそれらを見つけられないため、機能しません。同様に、システムは/ homeのどこかに存在することをシステムが認識しないため、ライブラリなども役に立ちません。あなたは試みることができるブルートフォースアプローチの、そしてあなたがDEBアーカイブからファイルを抽出どこを指すようにPATH変数を調整し、それだけではないだろうVERY 安全ではありませんが、互換性の問題を引き起こす可能性があります(GNOMEは.desktopファイルを/ usr / share / applicationsに拡張するため、feメニューエントリは機能しません)。

さらに、一部のユーザーのみにパッケージをインストールした場合、自分用にインストールした他のユーザーと競合する他のユーザーがインストールしたパッケージと、場合によっては他の多くのパッケージ管理関連の問題が表示されると、狂った依存関係の問題が発生する可能性があります。

これらすべてのトラブルにより、ユーザーごとにパッケージを個別に管理することは非常に困難になります。したがって、.debsの背後にあるアイデアがそれを許可しないため、1人のユーザーだけにパッケージをインストールすることは不可能のようです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.