我从perl开始,想在Ubuntu 14.04上安装IDE Padre。这个问题的答案表明我可以使用apt-get
:
sudo apt-get install padre
我还尝试使用以下命令安装它:
sudo cpan Padre
如此处所示。
但是,当我运行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
当我以根用户(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数据库的引用。有谁知道我该如何解决这个问题?
我在此错误报告中找到了解决方案。在文件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 (sudo
) 的身份启动padre
,为了解决这个问题,我不得不更改 Padre 配置的所有者。我使用 chown
更改了用户的权限:
sudo chown -R myuser:myuser /.local/share/.padre/