暗号化ファイルシステム作成時にクラッシュするバグ(2014/2/2)
環境によっては、暗号化ファイルシステム作成時に以下のエラーが表示され、暗号化ファイルシステムの作成に失敗します。クラッシュログ
以下クラッシュログの抜粋です。
Traceback (most recent call last):
File "/opt/extras.ubuntu.com/cryptfolder-indicator/share/cryptfolder-indicator/crypto.py", line 159, in on_button_add_clicked
ce = CreateEncfs(self)
File "/opt/extras.ubuntu.com/cryptfolder-indicator/share/cryptfolder-indicator/createenfs.py", line 167, in __init__
gnomeencfsmod.add_folder(path1, path2, password, automount, autodelete)
File "/opt/extras.ubuntu.com/cryptfolder-indicator/share/cryptfolder-indicator/gnomeencfsmod.py", line 241, in add_folder
return create_crypted_folder(epath, mpoint, secret)
File "/opt/extras.ubuntu.com/cryptfolder-indicator/share/cryptfolder-indicator/gnomeencfsmod.py", line 253, in create_crypted_folder
child = pexpect.spawn(command)
File "/opt/extras.ubuntu.com/cryptfolder-indicator/share/cryptfolder-indicator/pexpect/__init__.py", line 1617, in __init__
searchwindowsize=searchwindowsize, logfile=logfile, cwd=cwd, env=env)
File "/opt/extras.ubuntu.com/cryptfolder-indicator/share/cryptfolder-indicator/pexpect/__init__.py", line 456, in __init__
self._spawn (command, args)
File "/opt/extras.ubuntu.com/cryptfolder-indicator/share/cryptfolder-indicator/pexpect/__init__.py", line 541, in _spawn
command_with_path = which(self.command)
File "/opt/extras.ubuntu.com/cryptfolder-indicator/share/cryptfolder-indicator/pexpect/__init__.py", line 1832, in which
if not os.environ.has_key('PATH') or os.environ['PATH'] == '':
AttributeError: '_Environ' object has no attribute 'has_key'
File "/opt/extras.ubuntu.com/cryptfolder-indicator/share/cryptfolder-indicator/crypto.py", line 159, in on_button_add_clicked
ce = CreateEncfs(self)
File "/opt/extras.ubuntu.com/cryptfolder-indicator/share/cryptfolder-indicator/createenfs.py", line 167, in __init__
gnomeencfsmod.add_folder(path1, path2, password, automount, autodelete)
File "/opt/extras.ubuntu.com/cryptfolder-indicator/share/cryptfolder-indicator/gnomeencfsmod.py", line 241, in add_folder
return create_crypted_folder(epath, mpoint, secret)
File "/opt/extras.ubuntu.com/cryptfolder-indicator/share/cryptfolder-indicator/gnomeencfsmod.py", line 253, in create_crypted_folder
child = pexpect.spawn(command)
File "/opt/extras.ubuntu.com/cryptfolder-indicator/share/cryptfolder-indicator/pexpect/__init__.py", line 1617, in __init__
searchwindowsize=searchwindowsize, logfile=logfile, cwd=cwd, env=env)
File "/opt/extras.ubuntu.com/cryptfolder-indicator/share/cryptfolder-indicator/pexpect/__init__.py", line 456, in __init__
self._spawn (command, args)
File "/opt/extras.ubuntu.com/cryptfolder-indicator/share/cryptfolder-indicator/pexpect/__init__.py", line 541, in _spawn
command_with_path = which(self.command)
File "/opt/extras.ubuntu.com/cryptfolder-indicator/share/cryptfolder-indicator/pexpect/__init__.py", line 1832, in which
if not os.environ.has_key('PATH') or os.environ['PATH'] == '':
AttributeError: '_Environ' object has no attribute 'has_key'
原因
「Cryptfolderインジケーター」はPython 3で動作しているにも関わらず、一部のコードがPython 2で記述されているためです。以下のように、「Cryptfolderインジケーター」はPython 3で動作していることが分かります。
修正する
直接コードを修正します。修正するファイルは、「/opt/extras.ubuntu.com/cryptfolder-indicator/share/cryptfolder-indicator/pexpect/__init__.py」です。
注意
事前に「Cryptfolderインジケーター」を終了しておきます。ソースコードの修正
「端末」を起動し、以下のコマンドを実行します。このコマンドは、Python 2のコードを機械的にPython 3のコードに変換するコマンドです。
sudo 2to3 -w '/opt/extras.ubuntu.com/cryptfolder-indicator/share/cryptfolder-indicator/pexpect/__init__.py'
以下のようになれば、修正完了です。
変更前のファイルについて
変更前のファイルは、「__init__.py.bak」に保存されます。問題が起きた時は元に戻すことができます。
自動マウントの設定やマウント先フォルダーの削除設定が有効にならないバグ(2014/2/2)
「Mount folder at start」と「Delete decrypted folder on unmount」の設定が反映・保存されないバグです。原因
内部の設定項目名(キー)や設定値が不正なためです。修正する
直接コードを修正します。修正するファイルは、「/opt/extras.ubuntu.com/cryptfolder-indicator/share/cryptfolder-indicator/configurator.py」です。
注意
事前に「Cryptfolderインジケーター」を終了しておきます。ソースコードの修正
「端末」を起動し、以下のコマンドを実行します。
sudo -i gedit '/opt/extras.ubuntu.com/cryptfolder-indicator/share/cryptfolder-indicator/configurator.py'
修正箇所は2箇所あります。
修正 1
以下の赤線のキーが間違っています。「_」を「-」に変更します。
以下のように修正します。
以下はコピペ用ですが、タブ位置は画像のように合わせてください。
def set_folder_auto_mount(self,name,auto_mount): self.params['folders'][name]['auto-mount'] = auto_mount self.save() def set_folder_auto_delete(self,name,auto_delete): self.params['folders'][name]['auto-delete'] = auto_delete self.save()
修正 2
赤枠内の2行を修正します。設定値には「'yes'」か「'no'」を指定する必要がありますが、このままでは「True」や「False」が設定されてしまいます。
1行目は以下のように修正します。
2行目は以下のように修正します。
以下はコピペ用ですが、タブ位置は画像のように合わせてください。
if auto_mount == True: folder['auto-mount'] = 'yes' else: folder['auto-mount'] = 'no' if auto_delete == True: folder['auto-delete'] = 'yes' else: folder['auto-delete'] = 'no'