【macOS】gnubin への PATH を一括で通す

【macOS】GNU パッケージの PATH
GNU gsed をインストールした後の表示。


GNU "sed" has been installed as "gsed".
If you need to use it as "sed", you can add a "gnubin" directory
to your PATH from your bashrc like:

     PATH="$HOMEBREW_PREFIX/opt/gnu-sed/libexec/gnubin:$PATH"

👉 gnu-sed — Homebrew Formulae hatena-bookmark

sed のように利用するには PATH を優先しておく、とのことだが。

GNU パッケージは、「パッケージごとに」シンボリックシンクが分かれている。


Commands also provided by macOS and the commands dir, dircolors, vdir have been installed with the prefix "g".
If you need to use these commands with their normal names, you can add a "gnubin" directory to your PATH with:
    PATH="$HOMEBREW_PREFIX/opt/coreutils/libexec/gnubin:$PATH"

👉 coreutils — Homebrew Formulae hatena-bookmark

自分のマシンで見てみる。


❯ ls -l $(brew --prefix)/opt/*/libexec/gnubin
/opt/homebrew/opt/gnu-sed/libexec/gnubin:
total 0
lrwxr-xr-x@ 1 mao  admin  14 Nov  7  2022 sed@ -> ../../bin/gsed

/opt/homebrew/opt/gsed/libexec/gnubin:
total 0
lrwxr-xr-x@ 1 mao  admin  14 Nov  7  2022 sed@ -> ../../bin/gsed

/opt/homebrew/opt/libtool/libexec/gnubin:
total 0
lrwxr-xr-x@ 1 mao  admin  18 Mar 17  2022 libtool@ -> ../../bin/glibtool
lrwxr-xr-x@ 1 mao  admin  21 Mar 17  2022 libtoolize@ -> ../../bin/glibtoolize

そうか、インストール時に作ってくれてるんだシンボリックリンク。

sed@ が2個あるけど実体は同じでした。


❯ ls -al /opt/homebrew/opt/gnu-sed
lrwxr-xr-x@ 1 mao  admin  21 Oct  5 22:58 /opt/homebrew/opt/gnu-sed@ -> ../Cellar/gnu-sed/4.9

❯ ls -al /opt/homebrew/opt/gsed
lrwxr-xr-x@ 1 mao  admin  21 Oct  5 22:58 /opt/homebrew/opt/gsed@ -> ../Cellar/gnu-sed/4.9

よって、以下のようにして GNU パッケージの PATH を一括で通すと良い、とな。


if type brew &>/dev/null; then
  HOMEBREW_PREFIX=$(brew --prefix)

  # gnubin; gnuman
  for d in ${HOMEBREW_PREFIX}/opt/*/libexec/gnubin; do export PATH=$d:$PATH; done

  # I actually like that man grep gives the BSD grep man page
  #for d in ${HOMEBREW_PREFIX}/opt/*/libexec/gnuman; do export MANPATH=$d:$MANPATH; done
fi

👉 macos - Homebrew: Easy way to add 'gnubin' to path for multiple packages? - Ask Different hatena-bookmark

他パッケージのインストーラーがこけたりするときないのか、と思ったので眺めておきました。


【Kotlin DSL】Deprecated な packagingOptions が fun Packaging.() に変換される件

これは?

【Kotlin DSL】packagingOption  が  fun Packaging.()  に変換される件

以下の記述が


packagingOptions {
  resources {
    excludes += "META-INF/rxjava.properties"
  }
}

これになりました。


fun Packaging.() {
  resources {
    excludes += "META-INF/rxjava.properties"
  }
}

なんだかおかしいです?

該当部分のコードを確認します。


    /**
     * Specifies options and rules that determine which files the Android plugin packages into your
     * APK.
     *
     * For more information about the properties you can configure in this block, see [Packaging].
     */
    @Deprecated("Renamed to packaging", replaceWith = ReplaceWith("packaging"))
    val packagingOptions: Packaging

    /**
     * Specifies options and rules that determine which files the Android plugin packages into your
     * APK.
     *
     * For more information about the properties you can configure in this block, see [Packaging].
     */
    @Deprecated("Renamed to packaging", replaceWith = ReplaceWith("packaging"))
    fun packagingOptions(action: Packaging.() -> Unit)

    /**
     * Specifies options and rules that determine which files the Android plugin packages into your
     * APK.
     *
     * For more information about the properties you can configure in this block, see [Packaging].
     */
    val packaging: Packaging

    /**
     * Specifies options and rules that determine which files the Android plugin packages into your
     * APK.
     *
     * For more information about the properties you can configure in this block, see [Packaging].
     */
    fun packaging(action: Packaging.() -> Unit)

👉 build-system/gradle-api/src/main/java/com/android/build/api/dsl/CommonExtension.kt - platform/tools/base - Git at Google hatena-bookmark

こうですね。


packaging {
  resources {
    excludes += "META-INF/rxjava.properties"
  }
}

ついでに、短くしておきます。


packaging {
  resources.excludes += "META-INF/rxjava.properties"
}

これでOK。

👉 How to replace deprecated packagingOptions in Android Gradle build files - Stack Overflow hatena-bookmark


【Android】通知が表示されないときのアプリ別の端末設定 ON/OFF ⚙️

意外と分かりづらいです。

通知に表示されないときは、

まずは、以下設定の確認をしてみると良いです。

[設定] → [アプリ] → [(対象のアプリ名)]

または、

対象アプリのアイコン長押し

から、

「通知」

または

「権限」

です。

👉 顔文字 (かおもじ) パレット - Google Play のアプリ hatena-bookmark

 

⚙️ 通知

ON になっているか確認します。

【Android】通知が表示されないときのアプリ別の端末設定 ON/OFF ⚙️

分からない場合は、すべて ON にしておきます

 

⚙️ 権限

通知のの権限が端末側で許可されているか確認します。

【Android】通知が表示されないときのアプリ別の端末設定 ON/OFF ⚙️

 

⚙️ まとめ

上記2つの設定ができたら、再度、アプリ内の設定 を OFF → ON とやってみましょう。

【Android】通知が表示されないときのアプリ別の端末設定 ON/OFF ⚙️

通知表示の設定は、実はもっと複雑ですが、まずはここらから確認していくと良いでしょう。

👉 Android で通知を管理する - Android ヘルプ hatena-bookmark