OS-Xでプロセスディレクトリを非表示またはブロックする

OS-Xでプロセスディレクトリを非表示またはブロックする

ルートなしでプロセスを隠すか、ファイルシステムパスにマウントする方法はありますか?実際のファイルシステムには影響せず、プロセス自体とその子にのみ影響を与える必要がありますか?

少し奇妙なユースケースですが、通常のOSXシステムのように、OSXビルドサーバーから何かをビルドする必要があります。しかし、残念ながら、ビルドを台無しにするいくつかのライブラリがインストールされており、/usr/local/{include,lib}コンピュータへのrootアクセス権がありませんでした。だから/usr/local走っている間一時的に隠したいですconfiguremake

書き込み権限がないため、/usr/local実際に変更することはできません。

ベストアンサー1

いいえ、自分で行う方法はありません。chflags hidden物を隠すために使用できます。発見者ただし、これはコマンドラインには影響しません。

回避策は設定スクリプトによって異なります。それ可能表示するだけでもPATHわかりますが/usr/local、確認するハードコードされたディレクトリのリストがある可能性があります/usr/local。前者を変更するには(PATH- に基づいて)パスを調整できます。後者の場合、唯一の効果的な方法はconfigureスクリプトを修正することです。

ハードコーディングされたリストが表示されるのは、アドインがシステムの残りの部分と同じ検索パスを使用しない可能性があるためです。たとえば、さまざまなBSDポートなどを使用できます/usr/pkg/usr/local部分的に依存関係パッケージツールは、ビルドスクリプトでこれらのパス名を設定します。ただし、ポートシステムの一部として構築されていないプログラムは、ユーザーの注意をほとんど払うことなく構築するためにこれらの場所でアイテムを見つける必要があります。

OSX のデフォルト検索パスを無視するには、ld次のマニュアルページから始めます。

検索パス
ld使用するライブラリまたはフレームワークを検索するためのディレクトリのリストを保持します。これ基本図書館の検索パスは次のとおりです。/usr/libそれから/usr/local/lib。これ-Lオプションは新しいライブラリ検索パスを追加します。デフォルトのフレームワーク検索パスは次のとおりです。/Library/Frameworksそれから/System/Library/Frameworks。 (注:以前は/Network/Library/Frameworksデフォルトパスの末尾にあります。その機能が必要な場合は、明示的に追加する必要があります。 -F/Network/Library/Frameworks)。これ-Fオプションは新しいフレームワーク検索パスを追加します。これ-Zオプションは削除する標準検索パス。これ -syslibrootオプションは、すべての検索パスにプレフィックスを追加します。

ldオプションの前にプレフィックスを付けてオプションを渡します-Wl(スペースが必要な場合はコンマを使用)。あなたの目的に合わせてスクリプトを作成します。

  • -Z検索パスを削除するには
  • 使用する必要があるセクションをもう一度追加してください。-L

このclangオプションは-v詳細情報を表示します翻訳者たとえば、次を使用してディスプレイ-vに渡されます。ld-Wl,-vリンカーの詳細。

たとえば、次のようになります。

#!/bin/sh
clang -Wl,-Z -L/usr/lib -F/Library/Frameworks -F/System/Library/Frameworks "$@"

clangマニュアルには文書化されていませんが、簡単な確認-Zでリンカーに簡単なオプションを渡すことがわかります。一方、clangドキュメントオプション(主にgcc互換性のため)は、インクルードディレクトリのさまざまなカテゴリの検索を抑制しますか?

   -nostdinc
          Do not  search  the  standard  system  directories  or  compiler
          builtin directories for include files.

   -nostdlibinc
          Do not search the standard system directories for include files,
          but do search compiler builtin include directories.

   -nobuiltininc
          Do not search clang's builtin directory for include files.

埋め込みファイルの検索パスを表示するオプションはありませんが、プリプロセッサを実行してこれを推測できます。

スクリプトが機能してスクリプトを実行すると、スクリプト名をconfigure設定できます。たとえば、次のようになります。CC

./configure CC=cc-system

私はしばらくこの作業をしてきましたが、この特定の組み合わせは必要ありませんでした(参照コンパイララッパー)。

おすすめ記事