我从perl开始,想在Ubuntu 14.04上安装IDE Padre。
The answers in this question表示我可以使用apt-get
:
sudo apt-get install padre
我还尝试用以下方法安装它:
sudo cpan Padre
如所示here。
但是,当我运行padre
时,它会给我以下错误:
DBD::SQLite::db selectall_arrayref failed: attempt to write a readonly database at (eval 1905) line 41.
Perl exited with active threads:
1 running and unjoined
0 finished and unjoined
0 running and detached
当我以root(sudo padre
)运行时:
DBD::SQLite::db do failed: Safety level may not be changed inside a transaction at (eval 1905) line 37.
Perl exited with active threads:
1 running and unjoined
0 finished and unjoined
0 running and detached
padre --version
告诉我:Perl Application Development and Refactoring Environment 1.00
,我的perl版本是5.18.2。
在/usr/bin/padre
脚本中,我没有看到任何对SQLite数据库的引用。有谁知道如何解决这个问题?
答案 0 :(得分:4)
最后我在this bug report找到了解决方案。在Locker.pm
文件中(位于我/usr/share/perl5/Padre
的系统中),应更改以下功能(第102行):
sub db_increment {
my $self = shift;
unless ( $self->{db_depth}++ ) {
Padre::DB->begin;
# ...
Padre::DB->pragma( synchronous => 0 );
}
return;
}
为:
sub db_increment {
my $self = shift;
unless ( $self->{db_depth}++ ) {
#...
Padre::DB->pragma( synchronous => 0 );
Padre::DB->begin;
}
return;
}
即。更改Padre::DB->pragma
和Padre::DB->begin
的顺序。
这允许我以root(padre
)开始sudo
,为了解决这个问题,我必须更改Padre配置的所有者。我使用chown
更改了对用户的权限:
sudo chown -R myuser:myuser /.local/share/.padre/