lnを使用して欠落しているディレクトリを作成する

lnを使用して欠落しているディレクトリを作成する

だから私は小さなパッケージマネージャを書いていますが、1つの問題はファイルへのシンボリックリンクを作成することです。

パッケージをインストールして/usr/pkg/name-versionからファイルを読み、どのシンボリックリンクを作成するかを決定します。リンクの構築にこれを使用していますlnが、Linux APIヘッダーをインストールするのに問題があります。ヘッダーファイルを含むフォルダーではなく、ヘッダーファイル自体をリンクする必要があります。したがって、両方のパッケージが同じインクルードサブディレクトリにファイルを配置する必要がある場合は、それらのいずれかを台無しにする必要はありません。

問題を解決しましたが、lnパスが不完全な場合はエラーが発生します。これは、パッケージをインストールする前にこれらのディレクトリが存在してはいけないので迷惑です。

不足しているディレクトリを生成するフラグはありますかln?それとも複雑なbashスクリプトを使用する必要がありますか?

答え1

これを行うフラグがありませんln。ディレクトリを作成することはそれではありません。

mkdir -p foo/bar/qux必要に応じて作成されますfoo。したがって、最後のパスコンポーネントを除くすべてのパスコンポーネントが最初に呼び出されます。foo/barfoo/bar/quxmkdir -p

車輪を再発明するようです。 拾って入れる、必要な深さのディレクトリを作成し、内部のさまざまなパッケージコンポーネントへのシンボリックリンクを使用してディレクトリ階層をマージするシンプルなパッケージマネージャです。おそらくXストー、これはStowに似ていますが、よりカスタマイズ可能です。

答え2

複雑なbashスクリプトを必要とせず、単純な1行のコードしか必要ありません。mkdir --parentsすべてを処理し、ディレクトリ構造がすでに存在する場合、エラーを印刷することもありません。

他のパッケージが破損しないように削除するときにこれらのディレクトリを処理する方法に注意してください。

さらに、あなたが書いたのでbash、あなたは見ることができます魔術(恥ずかしいプラグ)。成熟して柔軟なので、修正する方が簡単かもしれません。

答え3

tarリンクを含むファイルを準備すると便利です。

find . -type l > links.txt
tar cpf links.tar --files-from links.txt

次に、必要な場所にリンクを作成します。

tar xvf links.tar

関連情報