投げ銭

★当サイトへの投げ銭(PayPal)★

LINK


(無償、寄付歓迎) logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)

★LibreOfficeの導入事例★
詳細について

人気の投稿(1ヶ月間)

Ad

Ad

投げ銭

★当サイトへの投げ銭(PayPal)★

2021年11月10日水曜日

【pdftk 2.02】PDFファイルの任意のページを回転させたり順番を変えたりカットしたりする【Linux Mint 19.3 (Tricia)】



■インストール

リポジトリの導入
# add-apt-repository ppa:malteworld/ppa

パッケージ管理ツールのインストール
# apt install snapd

pdftkをインストール
# snap install pdftk



■動作テスト

$ pdftk -version
pdftk 2.02 a Handy Tool for Manipulating PDF Documents
Copyright (c) 2003-13 Steward and Lee, LLC - Please Visit: www.pdftk.com
This is free software; see the source code for copying conditions. There is
NO warranty, not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

<例>

◯全8ページあるPDFファイルのうち、5ページ目だけを右90度回転させ、残りはそのままの状態で新しいPDFファイルに保存する。

$ pdftk OriginalFile.pdf cat 1-4 5right 6-7 8-end output ModifiedFile.pdf
OriginalFile.pdf 
…オリジナルPDFファイル(全8ページ)

cat 1-4 5right 6-7 8-end 
…1-4ページ目はオリジナルのまま、5ページ目のみ右90度回転、6-7及び8はオリジナルのまま。

output ModifiedFile.pdf 
…結合したページを保存するためのPDFファイル名を指定

◯最初の4ページを逆順に並べ替え、5ページ目は右に90度回転させ、残りはそのままの状態にする。

pdftk OriginalFile.pdf cat 4 3 2 1 5right 6-7 8-end output ModifiedFile2.pdf

もしくは
pdftk OriginalFile.pdf cat 4-1 5right 6-7 8-end output ModifiedFile2.pdf


◯オリジナルの2と4ページ目はカットし、5ページ目は右に90度回転させ、残りはそのままの状態にする。

pdftk OriginalFile.pdf cat 1 3 5right 6-7 8-end output ModifiedFile3.pdf



<参考>
・Install pdftk on Linux Mint
< https://snapcraft.io/install/pdftk/mint > 2021年11月10日

・pdftk-server
< https://www.pdflabs.com/tools/pdftk-server/ > 2021年11月10日

・PDFtk メモ
< http://penguinitis.g1.xrea.com/computer/pdftk.html > 2021年11月10日

2021年10月19日火曜日

【CentOS 7 + MATE 1.16.2】Firefoxのメニューが英語で表示されるので日本語言語パックを導入し解消した


Dockerコンテナ上にCentOS 7 + MATEデスクトップ環境(日本語対応)をVNCでリモートアクセスできるように構築した。

そして、追加の複数のユーザーをuseraddで追加してそのVNCセッションを増やしたところ、
一部のユーザーで何故か、ブラウザFirefox(78.8.0esr)のメニューが英語表記になってしまった。

英語表記のメニューにならず、最初から日本語メニューが表示されるユーザーもあった。
調べてみると、これらの日本語のメニューが表示されるユーザーのFirefoxには、「Japanese Language Pack」というアドオンがインストールされていた。


一方、英語のメニューが表示されるユーザーには、この言語パックが導入されていなかった。
同じuseraddで追加したユーザーであるにも関わらず、ユーザーによって言語パックのインストールの有無が変化する理由は不明である。

しかし、後から「Japanese Language Pack」というアドオンをインストールしさえすれば、正しく日本語のメニューが標示されることがわかった。



■「Japanese Language Pack」をインストールする

言語パックが未導入で英語のメニューが表示されるユーザーのFirefoxから次のアドレスにアクセスした。



表示されている「Firefoxへ追加」というボタンをクリックした。
すると、インストールしてよいか確認されるので、「Add」をクリックした。

インストールが完了し、右上には次のような案内が表示された。
「OK」をクリックした。


そして、Firefoxを再起動した。
すると、メニューは日本語表記となった。


メニューからアドオン項目を開き、下図のように「言語パック」をクリックすると、
導入された「Japanese Language Pack」の情報を確認することができた。


以上


<参考>
・Japanese Language Pack
< https://addons.mozilla.org/ja/firefox/addon/japanese-language-pack-1/ >

2021年10月1日金曜日

【Linux CentOS 7 MATE】MATEデスクトップにQCADをインストールした

環境
CentOS 7 + MATE


■qcadのインストール

◯適当なディレクトリにqcadパッケージファイルをダウンロードした。

# wget https://qcad.org/archives/qcad/qcad-3.26.4-trial-linux-x86_64.tar.gz

◯パッケージを展開した。
# tar zxvf qcad-3.26.4-trial-linux-x86_64.tar.gz
# ls -al
total 93504
drwxr-xr-x  3 root   root         89 Oct  1 04:11 .
drwxr-xr-x  1 root   root         18 Sep 30 04:55 ..
drwxrwxr-x 15 user01 user01     4096 Jun  4 14:05 qcad-3.26.4-trial-linux-x86_64
-rw-r--r--  1 root   root   95743869 Jun  4 14:05 qcad-3.26.4-trial-linux-x86_64.tar.gz
展開直後は1000番のユーザー(上の例ではuser01)でアクセス権が設定されていた。

◯所有者の変更を行った。
# chown root:root qcad-3.26.4-trial-linux-x86_64 -R

◯qcadディレクトリを/usr/localに移動した。
# mv qcad-3.26.4-trial-linux-x86_64 /usr/local/qcad



■qcadのためのランチャーをデスクトップ環境に作成

メニューからqcadを選択して起動できるようにランチャーを設定した。

まず、ユーザーのデスクトップ環境でターミナルを起動した。
(以下はMATEデスクトップを使用した場合)

◯ターミナルからメインメニュー設定エディタを起動しランチャーを作成した。
$ mozo

図のようにエディタが起動するので、
グラフィックスメニューを選択し、「+新しいアイテム」ボタンを押した。

すると、ランチャの作成というウインドウが開くので、
まず次のように項目を入力した。
名前:qcad
コマンド:/usr/local/qcad/qcad
コメント:qcad

つづいて、今開いている「ランチャの作成」ウインドウの左側にある、
スプリングのようなバネのアイコンをクリックし、アイコンを登録した。


以上でランチャーの作成は完了である。

メインメニューのグラフィックスメニュー内にqcad項目が作成された。



■qcadの起動

上で作成したランチャーをクリックして、qcadを起動した。

システムの初期化が開始される。

トライアル版なので、最初に待機時間が8秒程度ある。

画面の右下に「体験版」との表示がある。
そのため、下図のように15分で一旦アプリケーションが再起動される。


このような制限を解除したい場合は、製品を数千円で購入するか、
右下に表示されている「拡張機能削除」操作を行う必要がある。

「拡張機能削除」操作とは、下図の「How To Remove」に示されているファイルを、
指定の場所から削除すればよい。(ターミナルのコマンド操作で行えた。)


しかし、実際に「拡張機能削除」を試したところdxfファイルの日本語の文字化けが生じるようになった。
日本語表示には「拡張機能」が要るということだろうか。




■QCADの設定ファイル

たとえば、user11のQCADの設定ファイルは次の場所に構成されていた。

# ls /home/user11/.config/QCAD/ -al
total 112
drwxrwxr-x  2 user11 user11     46 Oct  1 04:19 .
drwx------ 16 user11 user11    317 Oct  1 03:44 ..
-rw-rw-r--  1 user11 user11 107570 Oct  1 04:19 QCAD3.conf
-rw-rw-r--  1 user11 user11     56 Sep 30 05:01 QCAD3_old.conf

以上



<参考>
・QCAD Downloads
< https://qcad.org/en/qcad-downloads-trial > 2021年10月1日

2021年7月10日土曜日

【Linux CentOS 7 MATE】メール添付されたZIPファイルの展開で日本語ファイル名の文字化けが起こらない方法を既定にする


Windows環境で作成された圧縮ファイルが添付されているもののうち、圧縮ファイル内のファイル名が日本語である場合、
Linux環境でこの圧縮ファイルを展開すると、ファイル名が文字化けしてしまう。

これは、Windows環境で使用されているファイル名の文字コードと、Linux環境で使用されるファイル名の文字コードが異なるためである。

Thunderbirdは適切に添付ファイル自体のファイル名文字コードの変換を行ってくれるため、
この問題が起きるのは、圧縮ファイル内のファイルだけである。

調べてみると、unarというソフトウェアを用いれば、展開時にそのような問題が生じないことがわかった。
unarが展開時に文字コードの変換を自動で行ってくれていると考えられる。

そこで、ThunderbirdでZIP添付ファイルを開く方法として、unarをデフォルトにしたい。
以下ではそのための手順を扱っている。

unarにはGUIがない。そのため、適切なスクリプトの作成と、ZIPファイルとの関連付けが必要である。



□ unar をインストールした。

# yum install unar


□ 次の2種類のスクリプトを作成した。

スクリプトを作成するディレクトリを作成し、移動した。

# mkdir -p /usr/local/share/scripts/decompress
# cd /usr/local/share/scripts/decompress
# pwd
/usr/local/share/scripts/decompress

2種類のスクリプトの説明

1つ目のスクリプトは、本体である。
ユーザーのデスクトップ上に、_TMPというフォルダを作成し、その中にファイルを展開する処理を行っている。
また自動的に、展開先フォルダ_TMPを開く処理も行っている。
ターミナルで開くので、パスワードの入力も可能である。
ターミナルはカウントダウンで自動的に閉じられる。

2つ目のスクリプトは、1つ目のスクリプトのラッパーの役割を果たしている。
ZIPファイルとの関連付け並びにThunderbirdから呼び出されるのはこちらのラッパーの方である。

スクリプトで使用されているコマンドのパスは環境に応じて変更する。

[root@ed04b3dfde72 decompress]# vi unar.sh
#!/bin/bash

TARGETFOLDER=~/デスクトップ/_TMP

UNAR=/usr/bin/unar

FILEMANAGER=/usr/bin/caja

MKDIR=/usr/bin/mkdir


$MKDIR -p $TARGETFOLDER
$UNAR "$1" -o $TARGETFOLDER
$FILEMANAGER $TARGETFOLDER


countdown=7
while [[ ${countdown} -ge 0 ]]
do
        echo -n ${countdown}
        echo -ne "\r"
        sleep 1
        countdown=$(( ${countdown} - 1 ))
done
[root@ed04b3dfde72 decompress]# vi decompress.sh
#!/bin/bash

TERMINAL=/usr/bin/mate-terminal
DECOMP=/usr/local/share/scripts/decompress/unar.sh

$TERMINAL -e "$DECOMP '$@'"


実行権限を与えた。

# chmod +x unar.sh
# chmod +x decompress.sh

[root@ed04b3dfde72 decompress]# ls -al
total 16
drwxr-xr-x 2 root root 4096 Jul 10 06:23 .
drwxr-xr-x 3 root root 4096 Jul 10 05:20 ..
-rwxr-xr-x 1 root root  126 Jul 10 05:29 decompress.sh
-rwxr-xr-x 1 root root  366 Jul 10 06:23 unar.sh



 圧縮ファイルを開く方法として「decompress.sh」を関連付けた。

2つの方法がある。
1つは、以下に示すように、デスクトップ上の操作で行う方法である。

もう一つは、ターミナルで専用ファイルを編集することによって行う方法である。
こちらの手順は、後に「アプリケーションの定義をターミナルで行う方法」で示している。
専用ファイルを編集する方が柔軟である。

いずれかの方法を採用する。



◆「デスクトップ上の操作で行う」

◯ファイルと既定のアプリケーションの関連付け

デスクトップ上に何かzipファイルを置いて、右クリックメニューを表示させた。
メニューの「別のアプリで開く(A)」をクリックした。




すると、次の画面が開くので、「▼コマンドを直接指定する(U)」をクリックし、
テキストボックスに、先程作成した、decompress.sh のパスを入力した。
「これを"ZIP アーカイブ"のファイルを開くアプリケーションとして記憶する(R)」にチックを入れておく。



そして、「開く」ボタンを押すと、「ZIPファイルとの関連付け」が完了する。

また、テスト用ZIPファイルは、decompress.sh に渡されて処理が開始された。
スクリプトの指示通り、デスクトップ上に「_TMP」フォルダが作成され、その中にファイルが展開された。



以上で、ZIPファイルの展開方法として「decompress.sh」が関連付けられているので、
Thunderbirdから添付ZIPファイルを直接開くことが可能になった。

メールに添付されたファイル名を右クリックすると、次のようなメニューが表示された。
既に、「decompress.sh(既定)」が選択されていたので、「OK」をクリックした。
上記ど同様に展開処理が始まった。


圧縮ファイルにパスワードがかけられている場合は、先程のターミナルの画面にパスワードの入力が求められる。
それ以外は同様である。





◆「アプリケーションの定義をターミナルで行う方法」
(上記の手順で既定アプリケーションを設定していれば不要)


ユーザーホームディレクトリ内の次のディレクトリに移動した。

$ cd ~/.local/share/applications
$ pwd
/home/user11/.local/share/applications

次の形式のファイル名でアプリケーションを定義した。

形式:userapp-NAME.desktop

以下では、decompress.shという名前を使っている。
Execに記載のシェルスクリプトは、上記で定義しているラッパースクリプトである。
Nameは任意のアプリケーション名である。

$ vi userapp-decompress.sh.desktop 
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
NoDisplay=true
Exec=/usr/local/share/scripts/decompress/decompress.sh %f
Name=decompress
Comment=decompress.sh
以上で、アプリケーションの定義が完了した。
この時点で、デスクトップ環境において、ファイルの右クリックメニューの「別のアプリで開く(A)」のアプリ一覧に表示される。


さらに次のように既定のアプリケーションとして登録すれば、Thunderbirdなどからファイルをこのアプリケーションによって直接開くことができるようになる。

次のファイルを編集することで、ファイルの種類ごとに既定のアプリケーションを関連付けられる。

ここでは、ZIPファイルを開くための既定のアプリケーションとして登録する。

$ vi ~/.config/mimeapps.list
[Default Applications]
application/x-desktop=pluma.desktop
application/x-shellscript=pluma.desktop
text/plain=atril.desktop
application/zip=userapp-decompress.sh.desktop

[Added Associations]
application/zip=engrampa.desktop;xarchiver.desktop;userapp-decompress.sh.desktop;
text/plain=atril.desktop;

decompress.shを用いたZIPファイルの展開が実際にどうなるかについては、◆「デスクトップ上の操作で行う」での説明を参照。



■ ファイル関連付けを解除する手順

次のファイルを編集する。

例えば、先程作成した「ZIPファイルとdecompress.shとの関連付け」を解除したい場合は、
次のマーカーを引いた箇所を削除すればよい。

[user11@ed04b3dfde72 ~]$ vi ~/.config/mimeapps.list
[Default Applications]
application/x-desktop=pluma.desktop
application/x-shellscript=pluma.desktop
text/plain=atril.desktop
application/zip=userapp-decompress.sh-LKCZ50.desktop

[Added Associations]
application/zip=engrampa.desktop;xarchiver.desktop;userapp-decompress.sh-LKCZ50.desktop;
text/plain=atril.desktop;



<参考>
・Thunderbird: specify handler for opening file and arguments
< https://unix.stackexchange.com/questions/610187/thunderbird-specify-handler-for-opening-file-and-arguments > 2021年7月10日

・Differences between /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
< https://askubuntu.com/questions/308045/differences-between-bin-sbin-usr-bin-usr-sbin-usr-local-bin-usr-local > 2021年7月10日

・Linux Mint Tips: Windows 由来のファイルの文字化けの対処法
< http://baker-street.jugem.jp/?eid=757 > 2021年7月21日

2021年5月26日水曜日

【Dovecot 2.0.9】IMAPユーザーの増加に必要なチューニング(コネクションがタイムアウトしてしまう問題への対処、Inotify instance limitの設定)


使用しているdovecotのバージョンは以下の通り。

# dovecot --version
2.0.9

CentOS 6マシンで動作させている。


■DovecotへのIMAP接続でタイムアウトする問題への対処

ThunderbirdをIMAPサーバー(dovecot)のクライアントとして使用していたところ、
Thunderbird側で当IMAPサーバーとのコネクションがタイムアウトする問題が生じた。

これについて、dovecotのログ(/var/log/maillog)を見てみると問題の生じた時刻に次の問題が発生していることがわかった。
dovecot: master: Warning: service(imap-login): process_limit reached, client connections are being dropped

ようするに、dovecot側でのチューニングが甘かったということだ。


この問題に対処するために、次のファイルの項目を編集し、dovecotを再起動した。

# vi /etc/dovecot/conf.d/10-master.conf
service imap-login {
  inet_listener imap {
    #port = 143
  }
  inet_listener imaps {
    #port = 993
    #ssl = yes
  }

  # Number of connections to handle before starting a new process. Typically
  # the only useful values are 0 (unlimited) or 1. 1 is more secure, but 0
  # is faster. <doc/wiki/LoginProcess.txt>
  #service_count = 1
  service_count = 0

  # Number of processes to always keep waiting for more connections.
  #process_min_avail = 0

  # If you set service_count=0, you probably need to grow this.
  #vsz_limit = 64M
  vsz_limit = 256M
}
(説明)
service_count は、ログインを司るサービスにおいて、「performance mode」と、「secure mode」とを切り替えるための値を設定する。

今回は、デフォルトの設定値「1」で、process_limit reached が警告されIMAP接続ができなくなる問題が発生したわけである。
そこで、次のようにパフォーマンスモードに切り替えた。

「0」を設定することによって、パフォーマンスモードとなる。
これにより全てのコネクションが単一インスタンスで処理されるようになる。
(次に挙げる、セキュアモードに比べるとセキュリティーは強くない。)

一方、「1」に設定すれば、セキュアモードとなる。
クライアントからのコネクションは、一つ一つ別々のインスタンスで処理される。
クライアントが切断するまでインスタンスは残り続けるため、上限が存在する。
これを超過すると、process_limit に到達したとの旨が警告され、新しい接続が拒絶される。
今回はこの問題が発生し、クライアントからの接続がタイムアウトしたのだった。


vsz_limit は、万が一メモリリークが発生した場合に備えてプロセスが使用できる上限を設定するものである。これを超過するプロセスはカーネルによってkillされる。

パフォーマンスモード に切り替える場合は、これにより上限を設定しておいたほう良い。
設定値がわからないので、とりあえずデフォルトの64MBの4倍の量とした。
利用環境により設定値を変える必要があるだろう。


そして、dovecotを再起動した。

# service dovecot restart
Stopping Dovecot Imap:                                     [  OK  ]
Starting Dovecot Imap:                                     [  OK  ]


■Inotify instance limitを超過したとの警告への対処

上記のクライアントからの接続不能問題とは関係なさそうだが、
さらに、/var/log/maillogに、他にも次のような警告を見つけた。
dovecot: imap(accountname@domain.example.com): Warning: Inotify instance limit for user 5000 (UID vmail) exceeded, disabling. Increase /proc/sys/fs/inotify/max_user_instances

警告は、/proc/sys/fs/inotify/max_user_instances の値を増やせと伝えている。

まず値を調べた。
# cat  /proc/sys/fs/inotify/max_user_instances
128
Inotify とはファイルやディレクトリの変更を監視する仕組みである。
何か変更があればカーネルから通知をもらえる。詳細はわからないが、dovecotはこの仕組みを利用しているのだろう。
上記警告は、vmailユーザーに関するInotifyのためのリソースが設定限度を超過したとのことである。
たとえば、vmailユーザーのプロセスにより上流からdovecotはメールを受け取っているとすると、vmailユーザーのプロセスのディスクへの書き込み変更がdovecotに通知される必要があるだろう。
こういう仕組みが機能しない状態になれば何か困ることがあるに違いない。


さて、どのくらい増加させればよいかよくわからない。

設定手順は次のファイルを編集(行の追加)して、読み込ませる。

# vi /etc/sysctl.conf
fs.inotify.max_user_instances = 512
sysctl -p

そして、dovecotを再起動した。

service dovecot restart
Stopping Dovecot Imap:                                     [  OK  ]
Starting Dovecot Imap:                                     [  OK  ]

設定値を変更した後、ログの警告が消えるかどうか調べ、値を調整するとよいと思う。
また今度、対処することにしよう。




ところで、次のコマンドでは上記以外の警告は見つけられなかった。

# grep Warning /var/log/maillog* | grep -v max_user_instances | grep -v  process_limit | less




<参考>
・Dovecot: “Warning: service(imap-login): process_limit reached, client connections are being dropped”
< https://serverfault.com/questions/629612/dovecot-warning-serviceimap-login-process-limit-reached-client-connection > 2021年5月26日

・service(imap-login): process_limit (100) reached (bug?)
< https://talk.plesk.com/threads/service-imap-login-process_limit-100-reached-bug.337563/ > 2021年5月26日

・Dovecot performance tuning
< https://wiki.dovecot.org/PerformanceTuning > 2021年5月26日

・Problem: Dovecot Warns about “Inotify instance limit for user 120 (UID dovemail) exceeded”
< https://help.univention.com/t/problem-dovecot-warns-about-inotify-instance-limit-for-user-120-uid-dovemail-exceeded/13572 > 2021年5月26日

・Warning: Inotify instance limit for user 2000 (UID vmail) exceeded, di
< https://forum.iredmail.org/topic9653-iredmail-support-warning-inotify-instance-limit-for-user-2000-uid-vmail-exceeded-di.html > 2021年5月26日

・Unable to access mail: Warning: Inotify instance limit for user exceeded
< https://support.plesk.com/hc/en-us/articles/115002673113-Unable-to-access-mail-Warning-Inotify-instance-limit-for-user-exceeded > 2021年5月26日


2021年5月25日火曜日

【Linux Ubuntu 18.04.5】ファイル名に含まれている特定の文字列を別の名前に一挙に置換しファイル名変更する方法


次のようなファイル一覧がある。
ファイル名に含まれている「kk」という文字列を、「mm」に置き換えたい。

# ls
RUN_kk.sh           environment_kk_InitialSettings
ReSTART_kk.sh       environment_kk_InitialSettingsSaved
environment_kk_Create  environment_kk_Script

次のようなワンライナーのコマンドを発行することによって、一挙に意図したようにファイル名を変更できた。

(後で挙げるように、renameコマンドを用いると同じことができることがわかった。)

# for f in `ls` ; do mv $f `echo $f | sed -e "s/kk/mm/"` ; done

`」は、「シフトキー+@」で得られる文字で、バックティック、バッククォートと呼ばれる。

(説明)

◯ for f in `ls`

lsコマンドで取得できるファイル一覧に対して繰り返し処理を宣言する。
これにより1ファイルごとにループ処理が行われる。
一回のループ処理につき異なるファイル名が変数fに格納され、do以下の処理がなされる。
do以下において、$fで変数に格納された文字列を取得できる。


◯ mv $f `echo $f | sed -e "s/kk/mm/"`

一見複雑であるが、これは次のような形になっている。
mv $f `変更後のファイル名`

 `echo $f | sed -e "s/kk/mm/"` で、$fに載ってくるオリジナルファイル名に対して、
ターゲットの文字列(kk)を検索して、新しい文字列(mm)に置き換えたものを出力している。

つまり、mv RUN_kk.sh RUN_mm.sh のようなコマンドが実行されることになる。



一連の処理がなされた後、次のようにファイル名が一挙に書き換わった。

# ls
RUN_mm.sh           environment_mm_InitialSettings
ReSTART_mm.sh       environment_mm_InitialSettingsSaved
environment_mm_Create  environment_mm_Script


■renameコマンドを使う方法

カレントディレクトリにおいて、ファイルやディレクトリそれぞれの名前に含まれているkkをmmに変更する。

# rename "s/kk/mm/" *

forループ回さなくて良いので簡単だった。



<参考>
・【Linuxコマンド】sedで文字列を置換する方法
< https://www.sejuku.net/blog/54595 > 2021年5月25日

・【sed / awk / grep】文字列の置換・抽出・検索と正規表現
< https://qiita.com/shuntaro_tamura/items/e4e942e7186934fae5e7 > 2021年5月25日


2021年5月16日日曜日

【Thunderbird 78.9.0】IMAPサーバーからのメールをキャッシュしないように設定する手順(また、キャッシュ削除手順について)


Linuxデスクトップ環境でThunderbird 78.9.0を、IMAPサーバー(Dovcot)のクライアントとしてセットアップした。
これでIMAPサーバーに保存されているメールがThunderbirdで操作できるようになった。

ところが、ThunderbirdはデフォルトでIMAPサーバーからメールをキャッシュするようになっている。
IMAPクライアント(=Thunderbird)側のディスクを圧迫することが懸念される
メールデータはオンラインサーバー側にあるのだから、クライアント側ではそれらのデータを保存したくない。
そこでThunderbird側のIMAPアカウントについてデータキャッシュを無効にした。

以下ではキャッシュを無効にする設定方法について説明している。
(ただし、IMAPメールサーバーとThunderbirdクライアント側は高速な回線で接続されている必要がある。私の場合では80Mbps程度で、快適だった。)

キャッシュを無効にすると、Thunderbirdでメール検索を行うとIMAPサーバー側で検索作業が成されるはずである。
検索時に、IMAPサーバー側のCPU使用率が跳ね上がるのを確認できた。
そのため、IMAPサーバー側のサーバーソフトウェアとホストのパフォーマンスについても要件があるだろうと思う。

私の場合、IMAPサーバーは dovecotで、しかもメールボックスへの保存のために dovecot-ldaを用いている。
メールサーバーPostfixを使っている場合、virtualプロセスでメールボックスで保存されるところを、dovecot-ldaを用いている。
dovecot-ldaでメールがメールボックスに保存されると、dovecotサーバー側でキャッシュファイルが更新されるらしい。
このことがIMAPサーバーであるdovecotの検索時のパフォーマンスを高めているのかもしれないが未検証である。



ところで、以下で説明する「Thunderbirdではキャッシュしないようにする設定」は、IMAPアカウントを新規登録する際に行った方が良い。
使いはじめると自動的にキャッシュが貯まってしまうからだ。
そして、キャッシュ無効設定の以前にキャッシュされていたメールデータは、自動では消去されないようであるからだ。

推奨方法ではないが、最後にこれらのキャッシュを削除する手順も記載した。



◆設定方法◆

Thunderbird側で、IMAPサーバーのメールをキャッシュしないように設定した。

右上ハンバーガーボタン「≡」から、「アカウント設定」を選択し設定画面を開いた。



設定するアカウントについて、「同期とディスク領域」をクリックし、メッセージの同期設定を開いた。
そして、「このコンピューターのこのアカウントのすべてのフォルダーを保存する(0)」のチックを外した。


すると、「同期設定の変更確認」ウインドウが開くので、「保存」をクリックした。
設定画面を閉じた。


以上でキャッシュを貯め込まない設定が完了した。



◆ 既存キャッシュを削除する手順(必要な場合だけ) ◆

上記でキャッシュを無効にした後、既存のキャッシュデータを削除することもできる。

(注意)
この設定は、IMAPサーバーのクライアントとしてThunderbirdを使用している場合に有効である。
POP3などのクライアントとしてThunderbirdを使用している場合は、この設定を行ってはいけない。(データ喪失してしまう!)

また、IMAPサーバーのクライアントとしてThunderbirdを使用している場合でも、下記操作によってデータ喪失などの問題が生じないかどうかテスト環境で試しておいた方が良い。バージョンや環境の違いによって異なる挙動を示すかもしれないからだ。


以下の手順では、Linux デスクトップ環境 MATE Desktop Environment 1.16.2 において、ファイルマネージャー Caja 1.16.6 を用いている。 

ユーザーホームディレクトリを開き、上部の「表示」メニューを開き、「隠しファイルを表示する」を選択した。


そうすると、「.thunderbird」という隠しフォルダが一覧の中に現れるので開いた。

すると、xxxxxxxdefault のような形式のフォルダが表示されるので、
内部に「ImapMail」というフォルダが存在するフォルダの方を開いた。



Thunderbirdが動作中であれば終了した。

(必ず、最初に述べた 「Thunderbird側で、IMAPサーバーのメールをキャッシュしないように設定」を行っておくこと。)
その後に、さきの「ImapMail」を丸ごと削除した。 

再び、Thunderbirdを起動した。
すると、ThunderbirdはIMAPサーバーからメールをリロードしはじめ、メールの量にも依るが間もなく以前のように一覧できるようになった。



<追伸>

以前、別の手順で、INBOX.mfsというファイルのみ削除する方法を試したことがある。
すると、添付ファイルが開けなくなる不具合が発生してしまった。
ただ、この不具合は、簡単に修復できた。

Thunderbirdにおいて「受信トレイ」の右クリックメニューでプロパティーをクリックし、
開いたフォルダのプロパティーウインドウの中の、「フォルダーを修復」ボタンを押下するだけで回復した。



<参考>
・PDF Attachments are empty
< https://support.mozilla.org/en-US/questions/1189521 > 2021年5月16日


2021年4月27日火曜日

【Linux CentOS 7 MATE 1.16.2】Linuxデスクトップ環境MATEからSAMBA(Windows)ファイルサーバーに接続しブックマークを作成する方法


MATEからSAMBA共有にアクセスする方法


1、SAMBAサーバー(Windows共有)への接続方法

まず、上部バー内の「場所」からメニューを開き、「サーバーへ接続…」を選択した。


すると、次のように「サーバーへの接続」ウインドウが開くので、
「種類」メニューから、「Windows共有」を選択した。


そして、次のように、ファイルサーバーに接続するために必要な情報を入力した。

・サーバー名(ファイルサーバーのIPアドレスやFQDN)
・共有(共有名)
・フォルダー(共有内のフォルダ名)
・ユーザー名
・パスワード

そして、「接続する」ボタンをクリックした。

次のようなエラー「ユーザーの詳細を確認してください」が発生する場合があるが、
「接続する」ボタンを再度クリックした。


すると次のように、指定した共有内のフォルダが開いた。
(ただし、上記の入力例とは異なる設定を用いている。)



2、ブックマークを作成した。

つづいて次のように「ブックマーク(B)」をからメニューを開き、
「+ブックマークの追加(A)」をクリックした。


すると、次のように、左側一覧に「ブックマーク」グループ内に、ブックマークが作成された。


デフォルトではブックマーク名は、ブックマークを作成したフォルダの名前のままである。

ブックマーク名を変更するには、「ブックマーク(B)」の「+ブックマークの編集(E)」から可能である。



◯以上で作成済みのブックマークは次のファイルに記述されている。

[root@localhost user11]# cat /home/user11/.gtk-bookmarks 
smb://username@192.168.100.100/sharename/files BookMarkName

このファイルのフォーマットに従えば、ブックマークの追加、編集が可能である。

また、他のユーザーのホームディレクトリにこのファイルをコピーすることで同じ設定を利用できるようになるだろう。
その際は、その他のユーザーにコピーしたファイルのアクセス権限を与える必要がある。

2021年4月7日水曜日

【Linux Raspbian】zip 圧縮するときの指定ディレクトリの除外、シンボリックリンク先の除外方法


Raspberry Pi (Raspbian)で、zipコマンドでディレクトリごとファイルを圧縮したい。
ただし、そのうち除外したいディレクトリがある。



# zip -y -r Archive.zip Target -x Target/SubDirectory/\*

(説明)
Archive.zip …生成される圧縮ファイルに付ける名前
Target …圧縮対象の親ディレクトリ名
-y …シンボリックリンクがあればリンク先のファイルまでは対象にはしない。
-r …圧縮対象の親ディレクトリ以下全てのディレクトリを対象にする。
-x Target/SubDirectory/\* …そのうちの除外するサブディレクトリ

Target/SubDirectory/\* は、親ディレクトリのTargetの直下にあるSubDirectoryディレクトリ内の全てのファイルやディレクトリを指定している。
\* はバックスラッシュが入っている。これはシェルによる * に対する展開処理をエスケープして、そのままの形でzipコマンドに渡すために必要なのだと思う。



<参考>
・Unix zip directory but excluded specific subdirectories (and everything within them)
< https://superuser.com/questions/312301/unix-zip-directory-but-excluded-specific-subdirectories-and-everything-within-t >

・How to zip directory excluding symbolic links and the files they point to?
< https://unix.stackexchange.com/questions/491004/how-to-zip-directory-excluding-symbolic-links-and-the-files-they-point-to >

【Linux Mint 19.3】他システムから外したRAID1ミラーリングアレイ構成ディスクを他システムでマウントする手順【mdadm 4.1~rc1-3~ubuntu18.04.4】


別のシステム(Raspberry Pi のRaspbian)においてmdadmで構築したRAID1(ミラーリング)アレイを構築していた。

このミラーリングアレイの2台のディスクの内、1台のUSBハードディスクを外して他のLinuxマシンに接続しマウントしようとした。

そのときの手順のまとめである。



◯システムの情報

Linux Mintである。ここの /mnt/disk にミラーアレイの構成ディスク1台をマウントしたい。

$ cat /etc/lsb-release
DISTRIB_ID=LinuxMint
DISTRIB_RELEASE=19.3
DISTRIB_CODENAME=tricia
DISTRIB_DESCRIPTION="Linux Mint 19.3 Tricia"

$ uname -a
Linux 5.0.0-32-generic #34~18.04.2-Ubuntu SMP Thu Oct 10 10:36:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux


◯mdadmのインストール

デフォルトではmdadmが入ってなかったのでインストールした。
インストールするやいなや自動的にディスクスキャンが開始された。
これはアレイのメタ情報を検索してシステム上のRAIDアレイを認識しようとしているのだろう。

# apt install mdadm


◯アレイの状態を確認した

ミラーリングアレイの構成ディスクだったUSBハードディスクは、このシステム上では /dev/sdd として認識されていた。
その第一パーティションがミラーリングアレイの構成デバイスだった。
このパーティションは、このシステム上では /dev/sdd1 として認識された。

そこで、次のようにアレイとしての状態を確認した。

# mdadm --examine /dev/sdd1
/dev/sdd1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : eeeeeeee:ffffffff:gggggggg:hhhhhhhh
           Name : raspberrypi:0
  Creation Time : Thu Aug 27 08:19:06 2020
     Raid Level : raid1
   Raid Devices : 2

 Avail Dev Size : 1950906368 (930.26 GiB 998.86 GB)
     Array Size : 975453184 (930.26 GiB 998.86 GB)
    Data Offset : 264192 sectors
   Super Offset : 8 sectors
   Unused Space : before=264112 sectors, after=0 sectors
          State : clean
    Device UUID : aaaaaaaa:bbbbbbbb:cccccccc:dddddddd

Internal Bitmap : 8 sectors from superblock
    Update Time : Sun Jan 10 19:37:14 2021
  Bad Block Log : 512 entries available at offset 16 sectors
       Checksum : df9ad670 - correct
         Events : 4003
アレイとしては問題なさそうである。



◯エラーのためmd0をマウントできなかった

上記のディスクを接続すると、mdadmによって自動的にRAIDアレイが認識され、/dev/md0 という名称でデバイスとして認識できるようになった。
この名称は、前のシステム(Raspbian)で構成したとおりである。

ところが、この/dev/md0 をこちらのシステムでマウントしようとしてもうまくいかなかった。
同じシステムにおいてディスクツール(gnome-disks)では、/dev/md0 内にはファイルシステムが確認できない状態になっていた。

# mount /dev/md0 /mnt/disk/
mount: /mnt/disk: can't read superblock on /dev/md0.


◯そこで次の復帰手順を試した

アレイが正しく認識されていないためにこの問題が生じているらしい。(†1)

まずアレイを停止した。これによって、/dev/md0 が消えた。
(アレイ構成デバイスとしての /dev/sdd1 は認識されている。)

# mdadm --stop /dev/md0
mdadm: stopped /dev/md0

つづいて、次のコマンドを実行した。

# mdadm --assemble --scan
mdadm: /dev/md/0 has been started with 1 drive (out of 2).

すると、うまくmd0デバイスが認識されるようになり、ファイルシステムが見えるようになった。
そして、ファイルシステムのマウントにも成功した。

以後、このシステムでは、アレイの構成ディスクであるそのUSBハードディスクを接続すると自動で、/dev/md0 が正しく認識されるようになった。



<参考>
(1) mdadm raid doesn't mount
< https://unix.stackexchange.com/questions/148062/mdadm-raid-doesnt-mount/149177 > 2021年4月5日

(2) How to mount software RAID1 member using mdadm
< https://sleeplessbeastie.eu/2012/05/08/how-to-mount-software-raid1-member-using-mdadm/ > 2021年4月5日

(3) RAID superblock formats
< https://raid.wiki.kernel.org/index.php/RAID_superblock_formats >  2021年4月7日

2021年4月6日火曜日

【Linux CentOS 7】フォントを追加する手順


フォントファイルは次のフォルダに複数のフォルダに分けられて存在している。

# ls /usr/share/fonts


フォントファイルを置くフォルダを作成した。

# mkdir /usr/share/fonts/newfonts


追加したいフォントファイルをこのディレクトリにコピーした。

# cp /path/to/somefontfile  /usr/share/fonts/newfonts


作成したフォルダの中のフォントファイルと、フォルダのパーミッションを次のように変更した。
(この設定をしていなければアプリケーションから利用できなかった。)

# chmod 644 /usr/share/fonts/newfonts -R
# chmod 755 /usr/share/fonts/newfonts


フォントキャッシュの更新した。

# fc-cache -f -v


追加したフォントが認識されているか確認した。

# fc-list


デスクトップ上のアプリケーションを再起動した。
すると追加したフォントが利用できるようになった。

【Linux CentOS 7】LibreCADのインストール


CentOS6では、QCADというアプリケーションを使っていた。
ところがCentOS7では、同様にepelリポジトリを導入していても、QCADをyumで導入できなかった。
そこで、LibreCADというアプリケーションを代わりに使うことにした。

LibreCADは、QCADから分岐したオープンソースソフトウェアである。
インターフェイスはAutoCADに似ている。
DWGファイルを使うためにlibdxfrwというライブラリ(GPLv2ライセンス)を使用している。


ここでのインストール環境は、DockerコンテナのCentOS 7 にMATEデスクトップ環境を導入し、VNCリモート接続できるようにしたものである。

下記はそのデスクトップ環境の導入手順である。



◯LibreCADについて情報を表示した

# yum info librecad
Name        : librecad
Arch        : x86_64
Version     : 2.0.5
Release     : 2.el7
Size        : 2.0 M
Repo        : epel/x86_64
Summary     : Computer Assisted Design (CAD) Application
URL         : http://librecad.org/
License     : GPLv2 and GPLv2+
Description : A graphical and comprehensive 2D CAD application.


◯LibreCADのインストール

[root@6097c5fce671 /]# yum install librecad

Installed:
  librecad.x86_64 0:2.0.5-2.el7

Dependency Installed:
  libdxfrw.x86_64 0:0.5.11-2.el7              librecad-fonts.noarch 0:2.0.5-2.el7      librecad-langs.noarch 0:2.0.5-2.el7      librecad-parts.noarch 0:2.0.5-2.el7
  librecad-patterns.noarch 0:2.0.5-2.el7      muParser.x86_64 0:2.2.5-8.el7            shapelib.x86_64 0:1.3.0-2.el7

Complete!

◯起動方法

インストール後、MATEデスクトップのアプリケーションメニュー内の「グラフィックス」群に「LibreCAD」項目が表示された。
これをクリックした。


アプリケーションが初回に開くときに、下記のように言語や単位を選択できるウインドウが表示された。
日本語を選択した。



アプリケーションのメインウインドウが表示された。


以上



<参考>
・LibreCAD / Open Source 2D-CAD
< https://librecad.org/ > 2021年4月6日

・LibreCAD
< https://en.wikipedia.org/wiki/LibreCAD > 2021年4月6日

2021年3月28日日曜日

【Linux Centos 7】MATEデスクトップ日本語環境にLibreOffice(日本語化)をインストールする【LibreOffice 7.0.5.2】

MATEデスクトップ環境は、次の方法でDockerコンテナに構築している。




■LibreOfficeの最新版をインストールする。

◯必要なパッケージをダウンロードした。

・本体パッケージを含む圧縮ファイル

wget https://download.documentfoundation.org/libreoffice/stable/7.0.5/rpm/x86_64/LibreOffice_7.0.5_Linux_x86-64_rpm.tar.gz


・日本語化のための言語パッケージを含む圧縮ファイル

# wget https://download.documentfoundation.org/libreoffice/stable/7.0.5/rpm/x86_64/LibreOffice_7.0.5_Linux_x86-64_rpm_langpack_ja.tar.gz


◯パッケージの展開とインストール

・本体パッケージ

# tar zxvf LibreOffice_7.0.5_Linux_x86-64_rpm.tar.gz
# cd LibreOffice_7.0.5.2_Linux_x86-64_rpm/RPMS
# yum install *.rpm
Total size: 619 M
Installed size: 619 M
# cd ../..

・日本語化のための言語パッケージ

# tar zxvf LibreOffice_7.0.5_Linux_x86-64_rpm_langpack_ja.tar.gz
# cd LibreOffice_7.0.5.2_Linux_x86-64_rpm_langpack_ja/RPMS
yum install *.rpm
Total size: 2.9 M
Installed size: 2.9 M
# cd ../..


◯動作確認

MATEデスクトップを開き、LibreOfficeを起動した。


次の写真のように、きちんと日本語表示になっている。



以上


<参考>
・Installing LibreOffice on Linux
< https://wiki.documentfoundation.org/Documentation/Install/Linux#Fedora_.2F_CentOS > 2021年3月27日

【Linux CentOS 7】MATEデスクトップの基本機能をロックダウンする【MATE 1.16.2】


MATEデスクトップ環境をリモートデスクトップとして使う場合、
スクリーンロックなどいくつかの機能が動作しないようにしておいた方が良いことがある。

MATEデスクトップ環境は次の手順でDockerコンテナにインストールしたものを使用している。

以下では、いくつかの機能をロックダウンするための手順について記載する。
機能のロックダウンには次のコマンドによって起動するGUIのエディタを利用した。



■MATEデスクトップの設定用エディタの起動方法

MATEデスクトップターミナルから次のコマンドを実行した。
すると、下の写真のようにエディタが起動した。

[user01@580dd7fd3e61 /]$ dconf-editor



■エディタの使い方

フォルダアイコンが5つ並んでいる。MATEを設定するためのキーが分類されている。

基本的には、フォルダを辿っていって設定すべきキーの値をマウスクリックでON/OFFすることによって設定値が即座に変更される。


■設定値の見つけ方

右上の虫眼鏡アイコンから設定項目の検索ができる。
試しに、screenと入力して検索してみた。


このように編集の必要なキーの見当をつけることができる。
実際に、スイッチを切り替えてみて、挙動を確認しながら見つけていく。



■以下では、MATEデスクトップ機能のいくつかのロックダウンを行ってみた。


◯デスクトップ上部にあるシステムメニューから「画面のロック」「ログアウト」項目を非表示にした。

デフォルトのシステムメニューは次のように表示されていた。


それぞれ、次のキーの値を変更することで即座にメニューに反映された。

・「画面のロック」項目の非表示

/org/mate/desktop/lockdown/disable-lock-screen
 false ⇒ true


・「ログアウト」項目を非表示

/org/mate/desktop/lockdown/disable-log-out
 false ⇒ true


それぞれの設定の結果、次のようになった。




◯画面の自動ロックを禁止する

MATEデスクトップにアクセスせずに放置していると、デフォルトではタイムアウトとなり自動的に画面にロックがかかった。

次のキーをfalseに設定することによって自動画面ロックをオフにできた。

/org/mate/screensaver/lock-enabled
 true ⇒ false


パネルの編集を無効化

設定変更前には、パネル(上部のバー部分)の右クリックで、
次の写真のように、パネル操作の項目がメニューに表示される。


次のように設定値を変更した。

/org/mate/panel/general/locked-down
 false ⇒ true

すると、次の写真のようにパネル変更の項目がメニューから削除された。



◯システムメニューの非表示

デフォルトでは、システムメニューがある。


次の設定値をfalseに設定した。

/org/mate/panel/menubar/show-desktop
 true ⇒ false

システムメニューが表示されなくなった。



他にも、アプリケーション、場所メニューを非表示する設定値があった。


◯上部パネルを隠すボタンを表示する

/org/mate/panel/toplevels/top/enable-buttons
 false ⇒ true

次のように非表示ボタンが上部パネルの左右に現れた。


表示された非表示ボタンを押すと上部パネルが消えた。




iBUSアイコンを隠す

設定変更前には、次の写真のように「あ」という表示がある。
これを右クリックすることによって、入力メソッドについて設定が変更できる状態になっている。


設定値を次のように変更した。

/desktop/ibus/panel/show-icon-on-systray
 true ⇒ false



◯プリンターを使わせない設定キーもあった。

/org/mate/desktop/lockdown/disable-printing
 false


◯プロキシを設定するキーのあるフォルダもあった。
/system/proxy/



<おまけ>

・メインメニュー項目などの編集は、MATEの場合、alacarteコマンドではなく、mozoコマンドを使う。

・alt+F2でコマンド入力ウインドウが開くので、必要なGUIを起動可能。

・ターミナル:mate-terminal

・自動起動設定(スタートアッププログラム設定):mate-session-properties

投げ銭

★当サイトへの投げ銭(PayPal)★

Ad

Ad