私は私がインストールしているすべてのプログラムを追跡したいので、コマンドにpacman -S
(-Sの後の重要なスペース)が含まれるたびにbashがコマンド文字列をファイルに追加したいと思います。私は現在関数を使用していますが、履歴に行き、関数と引用符で行を囲む必要があるので面倒です。履歴を確認できますが、一般的な解決策が役に立ちます。
1段階のインストールとログでこれを自動化する方法はありますか?
ベストアンサー1
私はあなたが達成しようとすることは不可能ではないが、非常に難しいと思います。必要なものを実行するラッパー関数を作成し、実際のコマンドの代わりにラッパーを呼び出すエイリアスを作成しても、すべてエラーが発生します。通常sudo pacman -S
、コンテキストを切り替えてすべての機能とエイリアスを破壊するsudoを実行します。
しかし、すべてが失われるわけではありません。明示的なインストールを使用してインストールされているすべてのパッケージを一覧表示できるので、pacman -Qe
いつでもシステムを再インストールしたり、環境を別のシステムにコピーしたい場合は、リストをファイルにインポートしてファイルを次のように変更できます。ターゲットコンピュータでpacmanを実行して、すべてのパッケージをインストールします。
文書作成:
pacman -Qe | cut -d ' ' -f 1 | tr "\n" " " >the-file.txt
pacman -Qe
処置: 明示的にインストールされたパッケージをすべて一覧表示します。cut -d ' ' -f 1
:パッケージのバージョンを削除して名前だけを保持することです。tr "\n" " "
:改行文字を空白に変更することです。>the-file.txt
処置: 出力をファイルにリダイレクトし、必要に応じてファイル名とパスを変更できます。
スペースで区切られたリストがthe-file.txtに出力されたら、ファイルをターゲットシステムに転送して次のように実行します。
sudo pacman -Sy - <the-file.txt
見て、パックマンはリストにあるすべてのパッケージをインストールしており、同じ結果が得られます。
--needed
最新のパッケージを再インストールしないように、pacmanにパラメータを追加することもできますpacman -S --needed ...
。
新しいシステムがリモートで動作している場合は、ファイル転送をスキップして結果をsshにパイプすると、リモートシステムに進みます。
pacman -Qe | cut -d ' ' -f 1 | tr "\n" " " | ssh -t user@host "sudo pacman -S --needed -"
- SSHを使用して疑似端末を割り当てます
-t
。それ以外の場合、sudoは失敗します。
頑張ってください。