web-dev-qa-db-ja.com

パッケージをローカルディレクトリにインストールしますか?

apt-get install <foo>に似たソフトウェアパッケージをインストールしたいのですが:

  1. Sudoなし、および
  2. ローカルディレクトリへ

この演習の目的は、私の continuous integration サーバーで独立したビルドを分離することです。

ソースからコンパイルするのは問題ありませんが、それが必要な場合は、可能な限り単純なアプローチを好むことは明らかです。前述のようにapt-get source --compile <foo>を試しました here ですが、autoconfのようなパッケージでは動作しません。次のエラーが表示されます。

dpkg-checkbuilddeps: Unmet build dependencies: help2man

Help2manをローカルディレクトリにコンパイルしましたが、apt-getに通知する方法がわかりません。何か案は?

UPDATEalmosthttps:// askubuntu.com/a/350/23678chrootの問題は、Sudoが必要なことです。 apt-get sourceの問題は、依存関係を解決する方法がわからないことです。 chrootは魅​​力的だと言わなければなりませんvery。 sudoを必要としない同等のコマンドはありますか?

36
Gili

Apt依存関係システムを混乱させるため、これは一般的に実行できません。

2つの解決策があります。

  1. ソースパッケージをインストールし、ソースディレクトリに変更し、パッケージングシステムに関係なく、パッケージを構成して、選択したディレクトリに手動でインストールします。

    apt-get source <package>
    

    これにはルートは必要ありません。パッケージソースをダウンロードし、現在のディレクトリ内のディレクトリに展開します。その後、そのディレクトリに変更したり、ソースを変更したり、別のターゲットにインストールを設定したりできます。

    ただし、プログラムのインストール先ディレクトリの設定は、特定のプログラムによって異なります。多くのプログラムは、./configure --prefix localdirを使用して、インストール先をlocaldirに設定します。しかし、これは常にそうとは限りません。

  2. パッケージをインストールするchroot環境を作成します。

    debootstrap precise myfancyinstall
    

    これで、myfancyinstall /ディレクトリーにダミーのインストールが作成されました。

    chroot myfancyinstall
    

    Chrootケージ内でapt-get installを使用して、必要なものをインストールできます。

20
January

bashシェルを使用し、「package.deb」ファイルを取得します(パック名が「package」であると仮定)、次のコマンドを実行して目的を達成できます-ホームディレクトリが同じように処理されるようにパッケージをインストールします「通常のインストールでは処理されます。

これはコマンドです:

apt-get download package; dpkg -i --force-not-root --root=$HOME package.deb

$ HOME/var/lib/dpkg/lockが見つからないなどのエラーが発生する可能性があるため、エラーから取得するすべての欠落ファイルを作成するだけで、インストールはSudoなしで機能するはずです。

「apt-get download」が機能しない場合は、「apt download」または「apitutde download package」を試すことができます。

どちらの方法も機能しない場合は、パッケージを手動で http://packages.ubuntu.com/ からダウンロードできます。

別の方法は、パラメーター$ HOMEを指定してchrootコマンドを実行し、上記と同じ方法で--root = $ HOMEなしでのみインストールすることです。このコマンドを実行すると、「/」が現在の$ HOMEであるシェルが表示されます。通常モードに戻るには、「終了」することを忘れないでください

幸運を。

14
user172681

sshアクセスはあるがapt-get rootなどがない、または同様に制限されたシステムの共有Webホスティングを使用している場合は、次の方法が有効です。 uname -aSMP Debian 4.9.65-3+deb9u2~bpo8+1 (2017-01-05) x86_64 GNU/Linuxのようなものを返すシステムで私のために働いた

# examples tried on a shared hoster with ssh access but no apt-get no root etc.
# http://mirrors.kernel.org/ubuntu/pool/main/g/gawk/gawk_4.1.3+dfsg-0.1_AMD64.deb
# https://github.com/dvorka/hstr/releases/download/1.25/hstr_1.25-1_AMD64.deb

debURL="http://mirrors.kernel.org/ubuntu/pool/main/g/gawk/gawk_4.1.3+dfsg-0.1_AMD64.deb"
# get the filename only, remove all till last slash "/"
# see http://wiki.bash-hackers.org/syntax/pe#substring_removal
debFile=${debURL##*/}
# change to your desired directory for installation/unpacking; here: $HOME
cd $HOME
# get the .deb file (no dependencies checked or resolved here)
curl -OL $debURL 
# unpack only the data part from the .deb file
# see https://en.wikipedia.org/wiki/Deb_%28file_format%29
ar p $debFile data.tar.xz | tar xJv --strip-components=2 -f - 
rm -v $debFile # clean up
echo "Done unpacking $debFile into $(pwd)"
0
iolsmit