Rust coreutils: スクリプトの互換性と GNU の代替手段
Ubuntu 26.10 は、以前に保持されていた cp、mv、および rm コマンドを Rust ベースの uutil に移行します。名前はおなじみのものですが、珍しいオプション、エラー テキスト、または終了動作に依存するスクリプトは検証する必要があります。 26.10 リリース ノート で移行が確認されています。
現在の実装を検査する
type -a cp mv rm
cp --version
mv --version
rm --versionまず type -a でエイリアス、シェル関数、またはカスタム PATH エントリを確認してから、バージョン出力を調べます。コンテナには独自のユーザー空間があります。ホストをアップグレードしても、コンテナ内のコマンドは自動的に変更されません。
一時ディレクトリで基本的なワークフローをテストする
この例では、作業ファイルには触れずにテスト ファイルを作成および移動します。
coreutils_check_dir=$(mktemp -d)
printf 'coreutils check\n' > "$coreutils_check_dir/source.txt"
cp "$coreutils_check_dir/source.txt" "$coreutils_check_dir/copy.txt"
cmp "$coreutils_check_dir/source.txt" "$coreutils_check_dir/copy.txt"
mv "$coreutils_check_dir/copy.txt" "$coreutils_check_dir/moved.txt"
rm "$coreutils_check_dir/moved.txt"
ls -la "$coreutils_check_dir"終了ステータス 0 の cmp からの出力がない場合は、内容が一致していることを意味します。これは単なる基本的なチェックであり、バックアップまたは展開スクリプトに互換性があることを証明するものではありません。検査用にディレクトリを保存し、後で手動で削除します。
これらのスクリプトを優先する
- エラー メッセージを解析するスクリプト: 終了コードと明示的なファイル チェックを優先します。
- 再帰的コピー、シンボリック リンク、メタデータの保存: サンプル データを使用してコンテンツ、権限、リンク ターゲットを比較します。
- スケジュールされたジョブと CI: 実際のユーザー、PATH、作業ディレクトリを使用してテストします。
- ファイルを削除または上書きするタスク: 使い捨てコピーを使用し、最初に回復手順を確認します。
ターゲット システムと元の環境で同じ入力を実行します。コマンド、終了コード、標準出力、標準エラー出力を記録します。メタデータが重要な場合は、サンプル ファイルで stat を使用します。
GNU の代替手段
Ubuntu は引き続き GNU ユーティリティを提供します。公式ドキュメントでは、gnu などの gnuls プレフィックスが付いたコマンドと、coreutils-from-gnu と coreutils-from-uutils 間の切り替えについて説明しています。 公式のrust-coreutils手順 を参照してください。
まず、特定のスクリプトの問題を修正または分離します。システム全体の切り替えが必要な場合は、公式コマンドを読み、APT の計画された変更を確認してください。これらは基本システム パッケージです。 /usr/bin 内のファイルを上書きしたり、それらを置き換えるシンボリックリンクを作成したりすることは避けてください。
次: バックアップとリカバリ および リリース選択。