Bug 349647 - Krusader is unable to "browse" a zip file (or a 7z one) in Kubuntu 15.04
Summary: Krusader is unable to "browse" a zip file (or a 7z one) in Kubuntu 15.04
Status: RESOLVED FIXED
Alias: None
Product: krusader
Classification: Applications
Component: krarc (show other bugs)
Version: Git
Platform: Compiled Sources Linux
: NOR normal
Target Milestone: ---
Assignee: Davide Gianforte
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-06-27 09:32 UTC by Toni Asensi Esteve
Modified: 2015-07-02 19:14 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
The "archive" configuration in Krusader (80.98 KB, image/png)
2015-06-27 17:44 UTC, Toni Asensi Esteve
Details
After the «Auto Configure» button is pressed (79.62 KB, image/png)
2015-06-27 17:45 UTC, Toni Asensi Esteve
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Toni Asensi Esteve 2015-06-27 09:32:56 UTC
After compiling the git version of Krusader and executing it in a clean Kubuntu 15.04 virtual machine, Krusader is unable to "browse" a zip file (or a 7z one). However, Krusader is able to "browse" a tar or tar.bz2 file.

The error shown in Krusader when trying to open a file, for example, 
    /home/user/Desktop/user.zip
is
    Error: The directory /home/user/Desktop/user.zip does not exist.
I've checked that that error comes from the file 
    [...]/krusader/VFS/normal_vfs.cpp
from the function
    bool normal_vfs::populateVfsList(const QUrl &origin, bool showHidden)
from this code        
    // check that the new origin exists
    if (!QDir(path).exists()) {
        if (!quietMode)
            emit error(i18n("The directory %1 does not exist.", path));
        return false;
    }
    
Additional information: 
    - When executing 
        /usr/bin/krusader
    Krusader writes
        [...]
        couldn't create slave: "Unable to create io-slave:
        klauncher said: Could not find the 'kio_krarc' plugin.
        
    - The execution of
        find / -xdev -iname "*krarc*" 2>/dev/null
    writes
        /usr/lib/x86_64-linux-gnu/plugins/libkio_krarc.so
        /usr/share/kservices5/krarc.protocol
        /home/user/krusader/krusader-kf5-build/krusader/VFS/CMakeFiles/VFS.dir/krarchandler.cpp.o
        /home/user/krusader/krusader-kf5-build/krusader/VFS/moc_krarchandler.cpp
        /home/user/krusader/krusader-kf5-build/krArc
        /home/user/krusader/krusader-kf5-build/krArc/libkio_krarc.so
        /home/user/krusader/krusader-kf5-build/krArc/moc_krarc.cpp
        /home/user/krusader/krusader-kf5-build/krArc/kio_krarc_automoc.cpp
        /home/user/krusader/krusader-kf5-build/krArc/CMakeFiles/kio_krarc.dir
        /home/user/krusader/krusader-kf5-build/krArc/CMakeFiles/kio_krarc.dir/krarc.cpp.o
        /home/user/krusader/krusader-kf5-build/krArc/CMakeFiles/kio_krarc.dir/kio_krarc_automoc.cpp.o
        /home/user/krusader/krusader-kf5-build/krArc/CMakeFiles/kio_krarc_automoc.dir
        /home/user/krusader/krusader/krusader/VFS/krarchandler.cpp
        /home/user/krusader/krusader/krusader/VFS/krarchandler.h
        /home/user/krusader/krusader/krArc
        /home/user/krusader/krusader/krArc/krarc.protocol
        /home/user/krusader/krusader/krArc/krarc.h
        /home/user/krusader/krusader/krArc/krarc.cpp
    but the execution of the same commmand in a Kubuntu 14.04 with the official Krusader Qt4 packages returns:
        /usr/lib/kde4/kio_krarc.so
        /usr/share/kde4/services/krarc.protocol
    
    - The file
        /home/user/Desktop/user.zip
    is a file, not a directory, of course. Executing
        unzip -l /home/user/Desktop/user.zip
    shows its contents.
    
    - Trying to go with Krusader to that "address"
        krarc:///home/user/Desktop/user.zip
    doesn't work (although the same action works in a Krusader Qt4, under Kubuntu 14.04).        
                    
    - Krusader was compiled and executed with:
        git clone git://anongit.kde.org/krusader 
        cd krusader
        git checkout plasma
        mkdir -p krusader-kf5-build
        cd krusader-kf5-build
        cmake ../krusader -DCMAKE_INSTALL_PREFIX=/usr/ -DCMAKE_C_FLAGS:STRING="-O2 -fPIC" -DCMAKE_CXX_FLAGS:STRING="-O2 -fPIC"
        make
        sudo make install    
                    
    - Maybe the following information won't be very useful, but just in case: the problem of 
        Krusader not being able to "browse" a zip file (or a 7z one), but being able to "browse" a tar or tar.bz2 file
    also happened in that case:
        https://bugs.kde.org/show_bug.cgi?id=294542#c7

I'm available for further testing! Thanks for Krusader!

Reproducible: Always
Comment 1 Davide Gianforte 2015-06-27 09:54:08 UTC
It seems Krusader is unable to load libkio_krarc.so. You can override the install directory (actually  /usr/lib/x86_64-linux-gnu/plugins/) by using -DQT_PLUGIN_INSTALL_DIR= in cmake command.

I don't have the Kubuntu VM that I use for testing and I don't remember if I forced the parameter.

Atm, I'm testing Debian Jessie, as soon as possible I'll install a new Kubuntu to check.
Comment 2 Davide Gianforte 2015-06-27 16:55:05 UTC
The installation path for the plugins is wrong; try to configure adding -DQT_PLUGIN_INSTALL_DIR=lib/x86_64-linux/gnu/qt5/plugins; this should install likbio_iso and likbio_krarc in the correct folder.
Comment 3 Toni Asensi Esteve 2015-06-27 17:43:19 UTC
Thanks, I supposed it was meant 
    /usr/lib/x86_64-linux-gnu/qt5/plugins
and so the final commands that were used in this new test were:
    cmake ../krusader -DCMAKE_INSTALL_PREFIX=/usr/ -DCMAKE_C_FLAGS:STRING="-O2 -fPIC" -DCMAKE_CXX_FLAGS:STRING="-O2 -fPIC" -DQT_PLUGIN_INSTALL_DIR=/usr/lib/x86_64-linux-gnu/qt5/plugins
    make
    sudo make install   
and it answered:
    [...]
    -- Installing: /usr/lib/x86_64-linux-gnu/qt5/plugins/libkio_krarc.so
    -- Installing: /usr/share/kservices5/krarc.protocol
    -- Installing: /usr/lib/x86_64-linux-gnu/qt5/plugins/libkio_iso.so
    -- Installing: /usr/share/kservices5/iso.protocol
    -- Installing: /etc/xdg/kio_isorc
    [...]
Now Krusader can "browse" the file 
    /home/user/Desktop/user.zip
and it can go to
    krarc:/home/user/Desktop/user.zip

Although when Krusader tries to "browse" the file
    /home/user/Desktop/user.7z
then Ark is executed. In Konsole is seen
   "/usr/bin/ark -caption Ark /home/user/Desktop/user.7z"
Trying to go with Krusader to the "address"
    krarc:/home/user/Desktop/user.7z
the error that is seen is the old one:
    Error: The directory /home/user/Desktop/user.7z does not exist.

Note: The "p7zip-full" package is installed. Executing
    dpkg -l | grep 7z
writes
     ii  p7zip-full                                    9.20.1~dfsg.1-4.1                          amd64        7z and 7za file archivers with high compression ratio

I'll attach some screenshots of the archive configuration in Krusader.
Comment 4 Toni Asensi Esteve 2015-06-27 17:44:36 UTC
Created attachment 93367 [details]
The "archive" configuration in Krusader
Comment 5 Toni Asensi Esteve 2015-06-27 17:45:17 UTC
Created attachment 93368 [details]
After the «Auto Configure» button is pressed
Comment 6 Davide Gianforte 2015-07-02 19:14:30 UTC
fixed in commit 4885f99568d44360b94d3e27dc203cda78551431

Thanks to Toni for the patch :)