SourceTreeでGitを更新したらエラーになった

Windows版のSourceTreeでGitのバージョンを更新したら、Gitのエラーが出た。


'git log' がコード128で終了しました: fatal; unsafe repository
(xxxxxxxxx is owned by someone else)

To add an exception for this directory, call:

git config --global --add safe.directory

エラーの最後の部分には、NASのパスが書いてあった。

これは、git 2.35.2から実装されたセキュリティ対策が影響しているらしく、
NAS上のGitリポジトリは「unsafe repository」ということらしい。

LANにある自分専用のNASなので、許可ディレクトリに追加して対処。

WindowsのSourceTreeなので、%UserProfile%\.gitconfig へ以下を追記した。

[safe]
        directory = 許可したいpath

Firefox98以降でPDF等をダウンロードせず開いた場合の挙動を従来に戻す

少し前の話になるけど、Firefox98でファイル(PDF等)を開いた場合の挙動が変わっていた話。
PDFをFirefoxの内部ビューワではなく、Acrobatなどで開いていると影響を受ける。


Firefox 97までは、
ファイルを開く場合はテンポラリフォルダに保存され、Firefoxを終了したらファイルが削除されていた。

Firefox 98からは、
ファイルを開く場合もダウンロードフォルダにファイルが保存されるようになった。


動作が変わった事を知らず、FirefoxでPDFへアクセスしてダウンロードではなく「開く」を選択していると、ダウンロードフォルダに大量のPDFが発生する。

従来の挙動に戻すには、about:config にて

browser.download.improvements_to_download_panel=false

に設定する。


参考
Firefox バージョン 98 におけるダウンロード処理方法の変更 | Firefox ヘルプ

AlmaLinux/RockyLinux 8 で古いカーネルを削除する方法

以前に、次のような記事を書いたが、使えないパターンがあった。

shobon.hatenablog.com

エラーになるパターン

こんな感じにカーネルがインストールされた状態で、最も古いカーネルで起動中。

# rpm -qa | grep kernel | sort
kernel-4.18.0-348.2.1.el8_5.x86_64
kernel-4.18.0-348.20.1.el8_5.x86_64
kernel-4.18.0-348.23.1.el8_5.x86_64
・・・略

# uname -r
4.18.0-348.2.1.el8_5.x86_64

以前のコマンドでは、次のようなエラーになる。

# dnf remove $(dnf repoquery --installonly --latest-limit=-2)
エラー:
 問題: 操作は結果的に以下の保護されたパッケージを削除します: kernel-core
(インストール不可のパッケージをスキップするには、'--skip-broken' を追加してみてください または、'--nobest' を追加して、最適候補のパッケージのみを使用しないでください)

古いカーネルを削除する方法・改良版

代わりに、次のようなコマンドで削除する。

# dnf remove --oldinstallonly --setopt installonly_limit=2 kernel
依存関係が解決しました。
===========================================================================================
 パッケージ          アーキテクチャー    バージョン                リポジトリー    サイズ
===========================================================================================
削除中:
 kernel              x86_64              4.18.0-348.20.1.el8_5     @baseos         0
 kernel-core         x86_64              4.18.0-348.20.1.el8_5     @baseos         68 M
 kernel-modules      x86_64              4.18.0-348.20.1.el8_5     @baseos         22 M

トランザクションの概要
===========================================================================================
削除  3 パッケージ

解放された容量: 90 M
これでよろしいですか? [y/N]: 


これならエラーは出ない。
削除対象になるのは、起動中を除いた最も古いカーネルからカウントして決定される。

指定されたdnfのオプションの意味は以下の通り。

  • remove --oldinstallonly:古いinstallonlyパッケージを削除
  • --setopt:/etc/dnf/dnf.confのデフォルト値を変更(installonly_limitの値を2にした)

dnf で jasper-libs が 競合エラーになる

環境

# cat /etc/redhat-release
AlmaLinux release 8.4 (Electric Cheetah)

CentOS 8からの移行環境ではなく、クリーンインストールしたAlmaLinux。

現象

次のようなエラーになる。

# dnf upgrade
メタデータの期限切れの最終確認: 1:53:30 時間前の 20211113211516秒 に実施しました。
エラー:
 問題: cannot install both jasper-libs-2.0.14-5.el8.x86_64 and jasper-libs-2.0.14-4.el8.x86_64
  - package jasper-devel-2.0.14-4.el8.x86_64 requires jasper-libs(x86-64) = 2.0.14-4.el8, but none of the providers can be installed
  - cannot install the best update candidate for package jasper-libs-2.0.14-4.el8.x86_64
  - problem with installed package jasper-devel-2.0.14-4.el8.x86_64
(競合するパッケージを置き換えるには、コマンドラインに '--allowerasing' を追加してみてください または、'--skip-broken' を追加して、インストール不可のパッケージをスキップしてください または、'--nobest' を追加して、最適候補のパッケージのみを使用しないでください)

# dnf clean all
してもダメ。

# dnf upgrade jasper-libs
のように個別で指定してもダメ。


まずは、現在のインストール済みバージョンを確認

# rpm -qa | grep jasper
jasper-libs-2.0.14-4.el8.x86_64
jasper-devel-2.0.14-4.el8.x86_64

次に、upgrade対象のバージョンを確認

# dnf info jasper-libs
・
・省略
・
名前         : jasper-libs
バージョン   : 2.0.14
リリース     : 5.el8
Arch         : x86_64
サイズ       : 166 k
ソース       : jasper-2.0.14-5.el8.src.rpm
リポジトリー : appstream
概要         : Runtime libraries for jasper
URL          : http://www.ece.uvic.ca/~frodo/jasper/
ライセンス   : JasPer
説明         : Runtime libraries for jasper.


最初に示したエラーメッセージの通り、
 現在 :jasper-libs-2.0.14-4.el8.x86_64
 更新先:jasper-libs-2.0.14-5.el8.x86_64
で競合しているらしい。
エラーメッセージの最後に、
- problem with installed package jasper-devel-2.0.14-4.el8.x86_64
と書いてあるが、インストール済みパッケージに何らかの問題が発生している模様。

エラーメッセージのヒントで、
 (競合するパッケージを置き換えるには、コマンドラインに '--allowerasing' を追加してみてください
 または、'--skip-broken' を追加して、インストール不可のパッケージをスキップしてください
 または、'--nobest' を追加して、最適候補のパッケージのみを使用しないでください)
とあったので、これらを試してみる。


「--allowerasing」の指定を試す

# dnf upgrade jasper-libs --allowerasing
メタデータの期限切れの最終確認: 0:05:42 時間前の 20211113211537秒 に実施しました。
依存関係が解決しました。
===============================================================================================
 パッケージ                Arch           バージョン                 リポジトリー        サイズ
===============================================================================================
アップグレード:
 jasper-libs               x86_64         2.0.14-5.el8               appstream           166 k
依存関係パッケージの削除:
 ImageMagick-devel         x86_64         6.9.10.86-1.el8            @epel               501 k
 jasper-devel              x86_64         2.0.14-4.el8               @powertools         2.8 M

トランザクションの概要
===============================================================================================
アップグレード  1 パッケージ
削除            2 パッケージ

ダウンロードサイズの合計: 166 k
これでよろしいですか? [y/N]:

「jasper-devel」が削除されるらしい。
「jasper-devel」だけ個別にremoveしてからupgradeしても良かったかもしれない。

mariadb のlogrotateでgzipエラーが出る

環境

AlmaLinux 8.4~8.5

$ rpm -qa | grep mariadb
mariadb-connector-c-config-3.1.11-2.el8_3.noarch
mariadb-10.3.28-1.module_el8.3.0+2177+7adc332a.x86_64
mariadb-server-10.3.28-1.module_el8.3.0+2177+7adc332a.x86_64
mariadb-errmsg-10.3.28-1.module_el8.3.0+2177+7adc332a.x86_64
mariadb-connector-c-3.1.11-2.el8_3.x86_64
mariadb-gssapi-server-10.3.28-1.module_el8.3.0+2177+7adc332a.x86_64
mariadb-common-10.3.28-1.module_el8.3.0+2177+7adc332a.x86_64
mariadb-backup-10.3.28-1.module_el8.3.0+2177+7adc332a.x86_64
mariadb-server-utils-10.3.28-1.module_el8.3.0+2177+7adc332a.x86_64

現象

mariadb のlogrotateで次のようなエラーが出た。

/etc/cron.daily/logrotate:

error: Compressing program wrote following message to stderr when compressing log /var/log/mariadb/mariadb.log-xxxxxxxx:
gzip: stdin: file size changed while zipping


以下が該当すると思われる。
bugzilla.redhat.com


上記のリンク先を見ると、修正済みとしてリリースされている模様。
access.redhat.com


修正された更新パッケージのバージョン部分を見ると、「mariadb-10.5.9-1」とある。

自分の環境でインストールされたMariDBは10.3 で、上記の修正版とはバージョンが異なる。

パッケージ更新があったのは10.5系だったが、10.3系で修正された情報を得られなかったので、
Bugzilla にあるよう/etc/logrotate.d/mariadb へ delaycompress を追記して対応。

10.3から10.5への移行を考えるなら、以下を参考に。
9.2.6. MariaDB 10.3 から MariaDB 10.5 へのアップグレード Red Hat Enterprise Linux 8 | Red Hat Customer Portal

9.2.6.2. RHEL 8 バージョンの MariaDB 10.3 から MariaDB 10.5 へのアップグレード Red Hat Enterprise Linux 8 | Red Hat Customer Portal

CentOS 6のEPELで提供されるClamAVがサポート終了になった

CentOS 6は既にサポート終了となってるけど、諸事情で稼働しているケースにて。

2021/10/30の朝に次のようなメールを受信した。

Subject: Anacron job 'cron.daily' on **HOSTNAME**

/etc/cron.daily/freshclam:

ERROR: getpatch: Can't download daily-26337.cdiff from db.jp.clamav.net
ERROR: Can't download daily.cvd from db.jp.clamav.net
ERROR: getpatch: Can't download daily-26337.cdiff from db.local.clamav.net
ERROR: Can't download daily.cvd from db.local.clamav.net

ClamAVの更新エラーらしい。
たまたまかな?と思ったが、この翌日以降も同様のエラーになったので調べた。

なお、/var/log/clamav/freshclam.log にも、メールで通知されたのと同様のエラーが記録されている。

環境は、以下の通り。clamavは、EPELリポジトリから導入したもの。


検索で見つけたClamAVのMLを見ると・・・
[clamav-users] Issues with freshclam

Re: [clamav-users] Issues with freshclam

一部を引用すると、

I'm sorry to say, but yes 0.100 is too old. As of October 29, 0.100
has exceeded end of life and is now actively blocked from downloading
signature updates.

なるほど、2021/10/29にVer 0.100 はEOLになりブロックされるとのこと。

上記MLで紹介されていたClamAVのドキュメントにもEOLの記載があり、確かに終了だった。
docs.clamav.net

CentOS 8.4 から MIRACLE LINUX 8.4への移行

以前に、CentOS 8から「Rocky Linux」「Alma Linux」への移行を試した。

新たに、cybertrust社から「MIRACLE LINUX 8.4」がリリースされたので、CentOSからの移行を試してみた。

www.cybertrust.co.jp


Rocky LinuxAlma Linuxと同様に、移行スクリプトが公式から提供されている。
国産ゆえ、移行マニュアルも日本語で提供されている。
マニュアルの「制限事項」にもある通り、UEFIのセキュアブートを無効にしておく点は注意が必要。

環境

# cat /etc/redhat-release
CentOS Linux release 8.4.2105

ハードウェア:VMware ESXi 7.0 上の仮想マシン
ファームウェアEFI(推奨)、セキュアブート:無効

移行手順

以下に移行スクリプトがある。
Index of /miraclelinux/migration-tool


移行スクリプトを入手

# wget https://repo.dist.miraclelinux.net/miraclelinux/migration-tool/migrate2ml.sh


権限を与えて実行

# chmod +x migrate2ml.sh
# ./migrate2ml.sh --core
migrate2ml.sh VERSION: 1.0.1
centos-release: CentOS Linux release 8.4.2105
Disabled CentOS repo files.
Copied MIRACLE LINUX repo files.
Clean dnf cache.
21 files removed
Imported MIRACLE LINUX GPG key.
Start download pkgs
・・・略
Complete!
Upgraded of shim-x64 package.
Generating grub configuration file ...
Adding boot menu entry for EFI firmware configuration
done
Success to generate grub.cfg for ML.
Setup of efibootmgr.
BootCurrent: 0003
BootOrder: 0004,0003,0000,0001,0002
Boot0000* EFI Virtual disk (0.0)
Boot0001* EFI VMware Virtual SATA CDROM Drive (0.0)
Boot0002* EFI Network
Boot0003* CentOS Linux
Boot0004* MIRACLE LINUX
Core package migration is completed!

ログは、/var/log/migration2ml-*.log に保存される。


OSを再起動して、起動時のカーネル選択画面にて、MIRACLE LINUXの表示になっているか確認。
あれ?変わっていなかった(´・ω・`)

もう一度、以下で確認

# grubby --info DEFAULT | grep title
title="CentOS (4.18.0-305.12.1.el8_4.x86_64) 8"

CentOSのままだった(´・ω・`)


OS情報のファイルが変わっているか確認

# cat /etc/redhat-release
MIRACLE LINUX release 8.4 (Peony)

こちらは大丈夫。

リポジトリMIRACLE LINUXが追加されている

# ls /etc/yum.repos.d/
CentOS-Linux-AppStream.repo          CentOS-Linux-HighAvailability.repo
CentOS-Linux-BaseOS.repo             CentOS-Linux-Media.repo
CentOS-Linux-ContinuousRelease.repo  CentOS-Linux-Plus.repo
CentOS-Linux-Debuginfo.repo          CentOS-Linux-PowerTools.repo
CentOS-Linux-Devel.repo              CentOS-Linux-Sources.repo
CentOS-Linux-Extras.repo             MIRACLE-LINUX-AppStream.repo
CentOS-Linux-FastTrack.repo          MIRACLE-LINUX-BaseOS.repo

CentOSリポジトリも残ったままだが、公式マニュアルの

既存の CentOS 向けのリポジトリの無効化(enabled=0)と、
当社のリポジトリにアクセスするための repo ファイルを ‘/etc/yum.repos.d/’ 配下に配置

の通り仕様と思われる。

また、公式ページにも記載があるが、2021年10月の段階では、BaseOS, AppStream しか提供されていない。


この後、dnf upgrade すると、「ML8-BaseOS」というリポジトリへアクセスするのを確認。

ちょうど移行前のCentOSカーネルが少し古く、
MIRACLE LINUXの更新リストにkernel があったので、更新を適用したら起動時のカーネル選択画面も変わった。

# grubby --info DEFAULT | grep title
title="MIRACLE LINUX (4.18.0-305.19.1.el8_4.x86_64) 8.4 (Peony)"


という訳で、Rocky LinuxAlma Linuxと同様、CentOSMIRACLE LINUXへの移行も簡単。

RHEL8クローンの選択肢が色々とあって迷うところだけど、利用する環境や要件にあったものを選んでいくことになるかな・・・。