
だから私は小さなパッケージマネージャを書いていますが、1つの問題はファイルへのシンボリックリンクを作成することです。
パッケージをインストールして/usr/pkg/name-version
からファイルを読み、どのシンボリックリンクを作成するかを決定します。リンクの構築にこれを使用していますln
が、Linux APIヘッダーをインストールするのに問題があります。ヘッダーファイルを含むフォルダーではなく、ヘッダーファイル自体をリンクする必要があります。したがって、両方のパッケージが同じインクルードサブディレクトリにファイルを配置する必要がある場合は、それらのいずれかを台無しにする必要はありません。
問題を解決しましたが、ln
パスが不完全な場合はエラーが発生します。これは、パッケージをインストールする前にこれらのディレクトリが存在してはいけないので迷惑です。
不足しているディレクトリを生成するフラグはありますかln
?それとも複雑なbashスクリプトを使用する必要がありますか?
答え1
答え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