yum(Scientific Linux)を使用してインストールするときの依存関係を無視する

yum(Scientific Linux)を使用してインストールするときの依存関係を無視する

yumScientific Linuxにインストールする単一のパッケージの依存関係をどのように無視できますか? CentOS / RHELに対する答えはおそらく同じでしょう。

lsb_release詳しくは、私が知っているユーティリティをに入れたいと思います/usr/bin/lsb_release。このコマンドは、そのユーティリティがパッケージの一部であることを知っています(そのアーキテクチャのため)、yum whatprovides /usr/bin/lsb_releaseX11関連redhat-lsbの依存関係を含む多くの依存関係があります。

私はlsb_releaseプログラムに従うので、依存関係に付属している「乱れ」を避けたいと思います。どうすればいいですか?

ベストアンサー1

Goldilocksの答えからヒントを得て、この小さなスクリプトを思い出しました。正確に私が望むものはそれ以上ではありません。 Scientific Linux 6.3で作成およびテストされていますが、他のRHEL派生バージョンでも機能できます。私はスクリプトに名前を付けましたredhat-lsb.sh(どのように非創造的なのか)。

#!/usr/bin/env bash
WKPKG=redhat-lsb
WKDIR=$HOME/$WKPKG
[[ -d "$WKDIR" ]] && [[ "x$1" != "x-f" ]] && { echo "ERROR: not removing $WKDIR. Use -f to force it."; exit 1; }
(
    [[ -d "$WKDIR" ]] &&  rm -rf "$WKDIR"
    mkdir "$WKDIR" && \
        cd "$WKDIR" && \
        yumdownloader $WKPKG && \
        cd / && \
        rpm2cpio "$WKDIR"/redhat-lsb-*.$(uname -m).rpm | cpio -idmv
) && rm -rf "$WKDIR"

sudo ./redhat-lsb.shまたはで呼び出しますsudo ./redhat-lsb.sh -f(後者は作業ディレクトリがすでに存在する場合は削除します)。

その機能は次のとおりです。

  1. フォルダ$HOME/redhat-lsbの操作
  2. パッケージをダウンロードするために使用されますyumdownloader
  3. シェルワイルドカードを使用して正しいものを選択してください.rpmredhat-lsb-*.$(uname -m).rpm
  4. /インストールしたい場所なので、に変更してください。
  5. rpm2cpio標準出力に解凍するため
  6. cpioこれをキャプチャして現在のディレクトリに抽出します(必須ステップですsudo)。
  7. 最後に、作業フォルダを削除します。

その後、大きな成功を収めました。すべての依存関係なしで動作します。

$ lsb_release -a
LSB Version:    :core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: Scientific
Description:    Scientific Linux release 6.3 (Carbon)
Release:        6.3
Codename:       Carbon

結果パッケージ自体には、静的にリンクされた実行可能ファイルのみが含まれます。今残っているのはシェルスクリプトとデータだけです。

おすすめ記事