シェルではない組み込みコマンド(expect
など)を使用するスクリプトを記述しようとしていますが、オフラインで使用する予定です。
通常、私はexpect
を_Sudo yum install expect
_を使用してFedoraに、またはUbuntuが_Sudo apt install expect
_を使用してインストールできます。
しかし、expect
パッケージをダウンロードしたいのですが、_Sudo apt-cache depends expect
_を使用して依存しているすべてのものを学習します(学習後は、依存関係の使用...)_Sudo apt download <depends>
_。
私はそれを試し、いくつかの_.deb
_ファイルをダウンロードしました。そして私もこれを試しました:
_data.tar
_ファイルから_.deb
_ファイルを抽出します(常に成功したわけではなく、dpkg
を使用していないFedoraで使用したいので、_dpkg -i <some_pkg.deb>
_を使用したくありませんでした) )。
_tar -xhf data.tar -C ~/demo
_を使用してすべてのファイルを抽出します
最後に、_cp -rPn ~/demo/bin/* /bin ~/demo/etc/* /etc ...
_を使用して、システムディレクトリ内のすべてのファイルを手動でコピーします
しかし、これを-Fedora内でこの_.deb
_タイプのパッケージを特別に使用して行うと、segmentation fault (core dumped)
エラーが発生し、システムが停止します。
私は自分の目標を達成するために推奨されていない危険なアプローチを試みていることを知っていますが、これをオフラインで使用する方法はありますか(たとえば、コマンドを_/usr/bin/expect
_に依存してバックアップします)。
ディストリビューション間でパッケージを混ぜて一致させようとしないでください。非常に単純な場合を除いて、確実に機能する可能性は低くなります。
代わりに、ターゲットディストリビューションのツールを使用してください。パッケージをダウンロードする方法と、Debianベースのディストリビューションへの依存関係を理解しました。これはFedoraベースのディストリビューションでも可能です。 expect
とallの依存関係をダウンロードするには、一時ルートと一時ダウンロードディレクトリを作成し、dnf
に一時ルートにexpect
をインストールするために必要なパッケージをダウンロードするように指示します。
_mkdir /tmp/expectroot
mkdir /tmp/expectdeps
Sudo dnf install --installroot /tmp/expectroot \
--downloadonly --downloaddir /tmp/expectdeps \
--releasever 32 expect
_
(必要に応じて「32」を置き換えます)。
次に、ターゲットシステムの既存の依存関係に関係なく、オフラインインストールに必要なすべてのパッケージを_/tmp/expectdeps
_で検索します。
alien
を試すことができます。異なるパッケージシステム間でパッケージを変換します。
これは完全なものではなく、依存関係が適用され、他の問題が発生する可能性がありますが、試してみる価値はあります。