私の調査から、すべてのパッケージマネージャーは特権ユーザーとして使用されることに固執しており、/
にインストールする必要があることに気づいたようです。
通常、私が使いたいのは使い捨てアカウントを作成し、いくつかのソフトウェアをコンパイルして、そのアカウントの$HOME
にインストールすることです。さまざまな設定を試すことができ、完了したらアカウントを破棄します。
ただし、ソフトウェアのコンパイルは面倒になります。
私の経験は実際にはyum
に限定されていますが、repoファイルを~/etc/yum.repos.d
にドロップして、yumにすべてをホームアカウントにインストールさせることができない理由がわかりません。
ソフトウェアをインストールするためにパッケージマネージャーを特権ユーザーとして使用する必要がある理由はありますか?
バイナリパッケージは、/
の特定の場所にインストールされることを前提にコンパイルされます。これは常に簡単に変更できるとは限りません。特定のバイナリが再配置可能かどうかを判断するには、追加のQA作業(そもそもそれは十分に困難です!)が必要です。
fakechroot のようなものを使用して、システム全体を非ルートユーザーとしてサブディレクトリに作成できますが、これは面倒で壊れやすいものです。
あなたはソースパッケージでより幸運になるでしょう。 Gentoo Prefix と Rootless GoboLinux はどちらも、/
以外の場所にインストールでき、root
以外のユーザーも使用できるパッケージマネージャーです。
パッケージマネージャープロジェクトがあります-- Nix -興味深い基本的なアイデア( " function "pkg manager)、これはユーザーごとの操作もサポートします:
マルチユーザーサポート
バージョン0.11以降、Nixはマルチユーザーをサポートしています。これは、非特権ユーザーがソフトウェアを安全にインストールできることを意味します。各ユーザーは、異なるプロファイル、つまりユーザーのPATHに表示されるNixストア内の一連のパッケージを持つことができます。別のユーザーが以前にインストールしたパッケージをユーザーがインストールした場合、そのパッケージは2回目にビルドまたはダウンロードされません。同時に、あるユーザーが別のユーザーが使用する可能性のあるパッケージにトロイの木馬を挿入することはできません。
追加したいメモ:Nix
は、選択したUnixライクなシステム(Linuxディストリビューションなど)で使用できるはずです。 )。
そこにもあります Nixパッケージマネージャーでインストールできる関連パッケージの大規模なコレクション-- Nixpkgs -多くのプラットフォーム用に構築されています :
- 32ビットおよび64ビットx86上のGNU/Linux(i686-linuxおよびx86_64-linux)
- Mac OS X(i686-darwinおよびx86_64-darwin)
- FreeBSD(i686-freebsdおよびx86_64-freebsd)
- OpenBSD(i686-openbsd)
- Windows/Cygwin(i686-cygwin)、
そして関連するディストリビューション-NixOS:
NixOSはNixベースのLinuxディストリビューションです。これは、パッケージ管理だけでなく、システム構成の管理にもNixを使用します(たとえば、/ etcに構成ファイルを構築するため)これは特に、システムの構成全体を以前の状態に簡単にロールバックできることを意味します。また、ユーザーはroot権限なしでソフトウェアをインストールできます。 続きを読む…
関連する「連続」ビルドシステム-Hydra。
私は JuJ を使用します。これにより、$ HOME/.jujuディレクトリ内に(パッケージマネージャーのみを含む)非常に小さなLinuxディストリビューションを作成できます。
これにより、proot経由でアクセスできるホームディレクトリ内にカスタムシステムを作成できるため、root権限なしでパッケージをインストールできます。すべての主要なLinuxディストリビューションで正常に動作します。唯一の制限は、JuJuが推奨される最小バージョン2.6.32のLinuxカーネルで実行できることです。
まず第一に、それは依存関係によるものです。 PolicyKitなど、一部のパッケージはユーザーがインストールできない場合があります。したがって、自由時間を寄付するパッケージャに追加の負担をかける必要があり、通常、プログラムのインストールはSudo
(シングルユーザーステーション)と入力するか、管理者を悩ませることと同じくらい簡単です。
$ HOMEにインストールするオプションがあります
./configure --prefix=$HOME/sandbox --enable-cool-feature && make all install
(またはjhbuildのようなバリテーション)。かなり異なるモデルのもう1つは install です。これは、パッケージを実際にインストールするのではなく、使用するソフトウェアをダウンロードし、必要に応じてコンパイルし、キャッシュするグローバル名前空間から単にパッケージを実行するという考えに基づいています。
私の経験は実際にはyumに限定されていますが、なぜレポファイルを〜/ etc/yum.repos.dにドロップして、yumにすべてをホームアカウントにインストールさせることができないのか理解できません。
Linuxの主流のパッケージマネージャーは、システムを単一のエンティティであるsysadminのように世界を見ています。これにより、「システムXに適用される未解決のエラッタ」や「システムXとシステムYの違い」などの質問に対する回答を得ることができます。これにより、yumは使用可能な「履歴」を持ち、rpmdbのバージョンを持ち、「yum --security update」などのことを行うことができます。
ゼロインストールのように、ユーザーがそうであるように世界を表示しようとするパッケージマネージャーがいくつかあります。何アプリケーションする[〜#〜] i [〜#〜]にアクセスできます。
後者の方がより良いモデルだと思うかもしれませんが、IMNSHOは、ゼロインストールについて聞いたことがないが、yumについて聞いた理由があります。
ブロックに新しい子供がいます:「JuNest(Jailed User NEST)-ルートアクセスなしで任意のLinuxディストリビューションで実行されるArch Linuxベースのディストリビューション。」 @ https://github.com/fsquillace/junest 利点は、新しい種類のパッケージ形式が導入されないことです。そのため、非常に簡単にインストールした後(最小:約320M)、完全なArch Linuxリポジトリー(13000以上のパッケージATM)がすぐに手に入ります。
Slackwareで使用されているツール、特にinstallpkg
は使用できます。 manページから:
--root /otherroot
Install using a location other than / (the default) as the root of the
filesystem to install on. In the example given, use /otherroot instead.
Setting the ROOT environment variable does the same thing.
ただし、これを実行できる優れたフロントエンドは知りません(たとえば、slapt-get
は、私の知る限り、これを実行できません)。理論的には、installpkg
をinstallpkg --root ~/Apps
にエイリアス化できるはずです。しかし、ほとんどのフロントエンドはrootを実行する必要があると思います。
私はお勧めします http://linuxbrew.sh/
それは基本的にmacOSのbrewのフォークであり、使用するためにプリコンパイルされたバイナリがあります...
古いgccバージョンの処理に特に最適です。
本当に手動でインストールしたい場合、便利なガイドは http://www.linuxfromscratch.org/ です。
そして新しいものはzpkg
で、それは魔法です:
Zpkgを使用すると、他のディストリビューションからシステムにプログラムをインストールできます
zpkgはプログラムをホームディレクトリにインストールします。グローバルインストールもサポートされています(-gを使用)。
次に、Alpine
、centos
、debian
、Fedora
、gentoo
、archlinux
、からパッケージをインストールできますubuntu
Yumは、rootが所有するデータベースに書き込む必要があります。このため、通常のユーザーとしては使用できません。
選択したディレクトリ内のrpmファイル(rpm2cpio package.rpm | cpio -idmv)を解凍してみることができます。
ただし、プログラムを実行するときは、依存ライブラリをロードするためにLD_LIBRARY_PATHを変更するように注意する必要があります。また、これは依存関係を処理しません。
例:
# mkdir new_root
# cd new_root
# wget ftp://mirror.switch.ch/pool/4/mirror/centos/6.7/os/x86_64/Packages/vim-enhanced-7.4.629-5.el6.x86_64.rpm
# rpm2cpio vim-enhanced-7.4.629-5.el6.x86_64.rpm | cpio -idmv
# ./usr/bin/vim -version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jul 24 2015 02:23:23)
上記には依存ライブラリがありません。そうでなければ、次のようなものを使用する必要があります。
export LD_LIBRARY_PATH=./usr/lib ./usr/bin/program