ルートアクセスなしでパッケージをインストールするにはどうすればよいですか?


126

このマシンにはルートアクセス権がありません

Ubuntuパッケージをダウンロードして非ルートとしてインストールする方法があるかどうか知りたいのですが

おそらく私~/bin~/usr/shareそのようなもので?それはうまくいくでしょうか?


1
うまくいけば、彼らはすぐにそれをサポートします。
ドミ14

4
Linux用のポータブルアプリを使用できます。インストールもルートも不要です。appimage.orgで見つけてください。Linus Torvaldsでさえそれが好きです。それは奇妙です、Linusは決して好きではないからです。
ipseリュート


の組み合わせdpk -xmv私のために働いた。または、偶数dpkが利用できず、非常に制限されたシステムでar配管/結合がtar機能していた場合は、こちらを
-iolsmit

回答:


107

Aptは直接サポートしていませんが、それを行う方法があります。

1つはschroot、非ルートchrootの作成に使用することです。これはやや複雑なプロセスですが、多くの開発者がコードをコンパイルするためにchroot環境をセットアップするので、コミュニティヘルプを見つけることができるはずです。

私が知っている2番目の方法は、.debパッケージからインストールすることです。これは、Webサイトからダウンロードできる場合と、ダウンロードできるUbuntuリポジトリにある場合があります。

apt-get download package

packageパッケージの名前に置き換えます

debファイルをdpkgコマンドラインから直接呼び出したら。次の例では、package.debをホームディレクトリにインストールします。

dpkg -i package.deb --force-not-root --root=$HOME 

このようにdpkgを使用することの欠点は、エラーメッセージがわかりにくい可能性があることです。dpkgは依存関係を自動的に解決したり、期待するディレクトリ構造を作成したりしません。

最後に、apt-get sourceコマンドを使用してパッケージのソースを取得し、ローカルにインストールするように構成できます。通常、これは次のようになります。

apt-get source package
cd package
./configure --prefix=$HOME
make
make install

このアプローチのデメリットは、このアプローチが機能するために利用可能な開発環境が必要であり、すべての依存関係を解決するために多数のパッケージをコンパイルしていることに気付くことです。

編集:

dpkg -i(コメントを参照)は動作しません、私はこの代替案を提案します:

dpkg -x package.deb dir

これにより、.debパッケージがdirに抽出されます。次に、バイナリがある場所にPATHをエクスポートできます。バイナリのすべての依存関係がインストールされている限り、通常どおり実行されます。


1
ルートアクセス権はあるが、特定のパッケージをグローバルにインストールしたくない場合は、パッケージのビルドにsudo apt-get build-dep package必要なすべてのインストールに使用できます(ソースを取得した後)。apt-get source
ウラジミールパンテレエフ

19
この回答は2010年に書き戻されました。それ以降、これが行われる方法に何か変更はありましたか?
ベッコ14

36
「:エラー:dpkgのを要求された操作はスーパーユーザ権限が必要です」でも--force-ないルートで、私が取得
クレマン

10
人々、--force-not-root --root=$HOMEまたはそのバリエーションは機能しません。Debianバイナリパッケージは、ホームディレクトリ、ピリオドにインストールされるようには設計されていません。または、これを別の言い方をすれば、「次の例では、package.debをホームディレクトリにインストールします。」いいえ、できません。
ファヒムミサ

1
悲しいことに、これは機能しません。私が試した--force-not-root --root=/your/custom/path
ベト

16

jeditをインストールすることを想定しています。まず、パッケージを見つけてダウンロードする必要があります。私はちょうど取るいくつかのミラーからのdebファイルを、コンソール/ターミナルを開きます。

  1. mkdir /tmp/jedit && cd /tmp/jedit-新しいディレクトリを作成しtmp、変更します。
  2. wget http://mirrors.kernel.org/ubuntu/pool/universe/j/jedit/jedit_4.3.1.dfsg-0ubuntu1_all.deb -パッケージをダウンロードする
  3. ar x jedit_4.3.1.dfsg-0ubuntu1_all.debまたは、入力しやすい、ar x *.debこれはファイルの内容を抽出します
  4. tar xvzf data.tar.gz-ファイルにdata.tar.gzは、ソフトウェアの実行に必要なものがすべて含まれています
  5. usr/bin/jedit エディターを開きます
  6. 完了:-)

ファイルをホームディレクトリのあるポイントに移動して、そこから実行できます。


11
インストール前およびインストール後のスクリプトは実行されないことに注意してください。また、依存関係やパスを自分で解決する必要があります。ただし、デフォルトのインストールでは、多くのデスクトップアプリケーションにとってこれで十分です。
jbowtie

あなたも、それを検索せずにパッケージをダウンロードするだけで行うことができますapt-getのダウンロード(他の回答を参照してください)
libの

リンクが壊れていると思います。
ウィネマッカ

9

私はJuJuと呼ばれるプログラムを作成しました。これにより、$ HOME / .jujuディレクトリ内に非常に小さなlinuxディストリビューション(パッケージマネージャーのみを含む)を作成できます。

proot経由でアクセスできるホームディレクトリ内のカスタムシステムを使用できるため、ルート権限なしでパッケージをインストールできます。すべての主要なLinuxディストリビューションに対して適切に実行されます。唯一の制限は、JuJuが最小推奨バージョン2.6.32でLinuxカーネルで実行できることです。

たとえば、JuJuをインストールしてjeditをインストールした後:

$>juju -f
(juju)$> pacman -S jedit
(juju)> jedit

これはUbuntuで正常に実行されますか?
セス14年

はい、ubuntuのLinuxカーネルバージョンが2.6.32以上であれば動作します。
user967489 14年

2
最初はあなたがこれについて話していると思った。2番目の大文字のjが違いを生みます。
コンサイク

1
問題は、Ubuntuパッケージをインストールできるかどうかでした。junestでは、ArchLinuxパッケージのみをインストールでき、Ubuntuパッケージはインストールできません。たとえば、同じパッケージがArchLinuxで利用できない場合、これは役に立ちません。とはいえ、ジューンストに感謝します。
キラン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.