RPMまたはYUMまたはLinuxの他のパッケージマネージャー、特にCentOSを使用して、既にダウンロードされたパッケージをインストールするか、管理者/ルートアクセスなしでリポジトリからカスタムの場所にインストールすることはできますか?
ソースからビルド、cmake、configure、make、make installなどを使用してみましたが、非常に多くの依存関係が次々とありました。
または、より良い代替手段はありますか?
Yumとrpmを使用して、ディストリビューションのリポジトリにパッケージをインストールすることができます。レシピは次のとおりです。
yum search
を使用します。
yumdownloader
(デフォルトでCentOSで使用可能)を使用して、パッケージとそのすべての依存関係をダウンロードします。依存関係を解決するには、--resolve
を渡す必要があります。 yumdownloader
は、--destdir
を指定しない限り、現在のディレクトリにダウンロードします。
mkdir -p ~/rpm
yumdownloader --destdir ~/rpm --resolve vim-common
~
、~/centos
、または~/y
です。ネットワークファイルシステム上にあるために自宅が遅い場合は、/var/tmp/...
に置くことができます。
mkdir ~/centos
選択したプレフィックスの場所にすべての.rpmパッケージを抽出します。
cd ~/centos && rpm2cpio ~/rpm/x.rpm | cpio -id
rpm2cpio
は、.rpmファイルをstdoutの.cpioアーカイブとして出力します。cpio
はstdinから読み取ります-i
は、(現在のディレクトリへの)抽出を意味します-d
は、欠落しているディレクトリを作成することを意味しますオプションで-v
:verboseを使用できます
インストールされたパッケージが正しく機能するためには、環境変数PATH
およびLD_LIBRARY_PATH
を構成する必要があります。 ~/.profile
の対応するサンプルは次のとおりです。
export PATH="$HOME/centos/usr/sbin:$HOME/centos/usr/bin:$HOME/centos/bin:$PATH"
L='/lib:/lib64:/usr/lib:/usr/lib64'
export LD_LIBRARY_PATH="$L:$HOME/centos/usr/lib:$HOME/centos/usr/lib64"
注:サーバーにSSH接続すると、ログインシェルが表示されます。したがって、.bashrc
はデフォルトではソースされません。 Bashは代わりにログインスタートアップファイルを実行します。このファイルは、リストの最初の既存のファイルです:.bash_profile
、.bash_login
、および.profile
( スタートアップファイルに関するbashドキュメント を参照)。なんらかの理由で、ログインファイルまたはスタートアップファイルではなく.bashrc
で環境を設定する場合は、前者を後者から取得する必要があります。
この方法で多くのパッケージをインストールする場合、プロセスを自動化することができます。その場合は、 このリポジトリ をご覧ください。
TL; DR Minicondaを使用して、conda-forgeはすばらしいです。
パッケージマネージャーをCentOSでうまく動作させるために長い間試みてきましたが、成功しませんでした。私ができる最善の方法は、ルートアクセスを持つ別のCentOSの正しい場所にGentooプレフィックスをインストールし、インストール全体の.tar.xz
をターゲットサーバーにscpすることです(Gentooプレフィックスの適切なgccを取得する方法のみ) 。ターゲットサーバー上でパッケージをemerge
(ビルドおよびインストール)することはできましたが、ローカルおよびアクセス許可の問題が発生し続けました。
最近、condaを使用していくつかの興味深いパッケージのユーザーインストールを実現しました。コマンドラインからインストールする方法は次のとおりです。
curl "https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh" | sh
私のように、ホームフォルダーがリモートドライブ(ネットワークファイルシステム)でホストされている場合、ホームフォルダーにインストールしたくないので、mkdir /var/tmp/lo
のようなものを使用してインストールフォルダーを指定します。インストール中の/var/tmp/lo/da
など。
.bashrcのPATHに/var/tmp/lo/da/bin
を追加するように求められますが、サーバーにsshするときにログインシェルが取得されるため、デフォルトで.bashrc
が取得されません。そのため、.bash_profile
/.bash_login
/.profile
を使用する必要があります( スタートアップファイルに関するbashドキュメント を参照)、その行を追加するか、.bashrc
。
その後、必要なパッケージすべてではないかもしれませんが、非常に多くのパッケージをインストールできます。ほとんどの場合、デフォルトチャネルにない場合は、conda-forge
になります。 https://anaconda.org/search?q=
で既存のパッケージを確認できます
conda install gcc
conda install zlib
conda install make
conda install cmake
conda install git
conda install -c conda-forge fish
conda install -c ActivisionGameScience zsh
conda install -c conda-forge tmux
da/lib
フォルダーに移動し、ln -sT libtinfow.so.6.1 libtinfo.so.6
をシンボリックリンクすることで回避できますCondaの後に使用しようとした他のパッケージマネージャー:
Homebrew(linuxbrew)をインストールするのは簡単だと思いましたが、ソースは乱雑で、Rubyインタープリターへのハードコードされた絶対パスを使用します。これは最後のバージョンではないため失敗しますなどなど、私はあきらめました。
Nixでは、まだ/ nixフォルダーを使用する必要があります。彼らもそれをハードコーディングしており、インストール中に行う必要のあるすべてのダウンロードから更新するのは難しいです。
ターゲットサーバーでgccを使用できるようになったため、Gentoo Prefixを直接インストールする方が簡単になると思います。 -OK、私は試しましたが、インストール中に権限のバグに遭遇しました(2018-09-28):
portage.exception.OperationNotPermitted: chown(b'~/gentoo/tmp/var/tmp/portage/sys-apps/gentoo-functions-0.12/image/var', 2000, 2000)
pkgsrc を試してみます。 -CentOS 6上または7.xバージョンで(G)LibCバージョンの問題が発生した場合は、(古い)バージョン64ビットEL 6.xを使用します。 -運が悪い、pkgsrcは/usr/pkg/sbin
と/usr/pkg/bin
をハードコードします。そのため、fakechroot環境をセットアップしない限り、ユーザーとして使用することはできません。しかし、私はそれを一度もやったことがなく、ユーザビリティの問題を予想しています。
他のパッケージマネージャーのインストールに成功した場合は、コメント/回答してください。
はい、そうです。ソフトウェアがリポジトリにパッケージされている場合。 adminはPackageKit-command-not-foundパッケージをインストールしました。
参照: https://fedoraproject.org/wiki/Features/PackageKitCommandNotFound
Goldilocksによるこの答えは、あなたが探しているもののように聞こえます。
https://unix.stackexchange.com/a/61295
まだかなりのプロセスではありませんが、ソースからビルドするよりも簡単に思えます。
それ以外の場合は、yumの代替として非ルートパッケージマネージャーを調べます。