4

我从 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

当我以 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 数据库的任何引用。有谁知道我该如何解决这个问题?

4

1 回答 1

5

最后我在这个错误报告中找到了解决方案。在文件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

这允许我以padreroot ( sudo) 身份启动,为了解决这个问题,我必须更改 Padre 配置的所有者。我使用以下方法更改了用户的权限chown

sudo chown -R myuser:myuser /.local/share/.padre/
于 2016-01-18T10:55:45.013 回答