LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware (https://www.linuxquestions.org/questions/slackware-14/)
-   -   sboui: ncurses-based UI for SBo package managers (call for testers) (https://www.linuxquestions.org/questions/slackware-14/sboui-ncurses-based-ui-for-sbo-package-managers-call-for-testers-4175602521/)

montagdude 03-25-2017 11:43 AM

sboui: ncurses-based UI for SBo package managers (call for testers)
 
2 Attachment(s)
Slackers,

I'm sharing a little tool I've been working on for the last several months. It is an ncurses-based user interface for sbopkg, sbotools, or your own custom SBo package manager. It's not dialog-based, like a lot of other Slackware system administration tools, but is written from the ground-up in C++ with low-level ncurses library calls. Here are the main features:
  • A two-pane listing of software groups and names (kind of mc-like)
  • Filters: all, installed, upgradable, tagged, and non-dependencies
  • Searching the local repository
  • Forward and inverse dependency resolution
  • Viewing and editing files in the local repository
  • Tagging multiple packages (or groups) to apply batch changes
  • Support for any custom SBo package manager meeting certain conditions
  • Configurable colors
The main github page for sboui is here:
https://github.com/montagdude/sboui

You can find a SlackBuild here:
https://github.com/montagdude/SlackB...r/system/sboui
(Click on each file and use the "Raw" link to download. Otherwise, you will just get html.)

When you first install it, it is set up to work "out of the box" with sbopkg's default settings. For sbotools, you just have to edit package_manager and repo_dir in the configuration file. It's pretty easy to make it work with custom tools too. See `man sboui.conf` for more details on that, or `man sboui` for general information about sboui.

It would be really great if people could try it out and give some feedback on anything that doesn't work or could be improved. Once I get some feedback and make some more planned changes plus fix any issues that people here may find, I plan to submit it on SBo.

Some screenshots are below. I'll make a couple more posts later to demonstrate some common actions: upgrading everything and reinstalling "inverse dependencies" after updating a library.

montagdude 03-25-2017 04:12 PM

3 Attachment(s)
Okay, so first off, here's a very basic use case. Let's say you want to install matplotlib.
  1. Scroll down to libraries on the groups list, then use Tab or the right arrow to switch to the SlackBuilds list, then scroll down with arrows and PgUp/PgDown until you get to matplotlib. (You could also just use the search, which would be faster.)
  2. Press Enter to bring up the list of actions.
  3. At this point, you may want to view the README or other files. When you're ready to install, scroll down to "Install" and press Enter, or just press the hotkey "i".
  4. A dialog will then pop up showing the build order. If for some reason you don't want one of the dependencies to be installed, you can highlight it and then hit Space to toggle it off. Press Enter when you're ready to install.
  5. Once it's done, sboui will notify you before returning to the main window.
To make sure it's installed, you can press "f" to bring up the available filters, then press "i" or scroll+select the Installed filter. The package you installed and all its dependencies will show up there.

montagdude 03-25-2017 06:34 PM

5 Attachment(s)
A couple more little demos:

To do the equivalent of "upgrade-all":
  1. Press "s" to sync/update the local repository.
  2. Press "f" then "u" to filter by upgradable packages.
  3. Press "t" on each group to tag everything.
  4. Press "u" to upgrade everything you just tagged.
Now, suppose you upgraded package A which is a dependency of packages B and C, and you want to rebuild B and C. For the sake of this example, package A is lua.
  1. Press "/" to search and type "lua" into the box.
  2. Highlight lua and press Enter to show actions.
  3. Scroll down to "List inverse deps" and press Enter, or just use the hotkey "l".
  4. In the next box, press "t" on each entry to tag. Then press Esc a couple of times to close the dialogs.
  5. Press "e" to reinstall the SlackBuilds you just tagged.
Just as a caveat, currently the reinstall action doesn't work with sbotools, because the latest released version doesn't support it. However, one of the latest commits in the git repo indicates it's coming, so stand by for that. For now, if you're using sbotools, you'll have to remove and then install again instead of reinstalling with a single command.

Alright, that's all for now. Have fun!

drgibbon 03-26-2017 11:39 PM

Thanks for this, will test it out :thumbsup:

bamunds 03-27-2017 12:01 PM

montagdude I've loaded and tested on Slackware 14.2 64 with sbotools and it is looking great.
Load time seems to be a little slow in loading my local sbotools repo, upto 10 seconds.

Usage
It shows the Slackbuild packages that I have installed in the appropriate categories from sbotools.
It would be nice if it could also show other slackbuilds installed which aren't from the sbotools repository. Perhaps a query of /var/log/packages to determine packages actually installed?
I'm curious, how it goes about searching when looking for installed packages? For example, I've locally built slackbuild for sddm-0.12.0 based off AlienBob slackbuild script, and modified the end of the files to read sddm-0.12.0-x86_64-1alien-SBo, but when attempting a search with sddm it did NOT find that file.
I've also installed AlienBob's qt5 and qt5-webkit, but a sboui search did not know that qt5 and qt5-webkit were already installed, perhaps it's a limit of sbotools rather than sboui search function?
Since Sync is critical for sbo, perhaps that option key should be included on the first default page? Or is that part of the initial startup when sbotools is used as the package manager?
Since Sync is meant to update is there a reason one must hit return? If it is to let one see the sync command results before going back to the interface, there might be confusion for the sbotools unfamiliar user, because a sync with no updates will show 0 0 0 0:00:00 and 0/52000 which might be thought of as a failed update, when in fact it is the result that nothing required updating.

Installation
I did have problems downloading the files from the link you provide above. I use SeaMonkey and when I attempt to "Save link Target as.." I was always getting the full html rather than the raw language. I'm not familiar with git, but thought it would have been interesting to clone the link to get the files. Read the Git User's Manual and the examples are for a git repository with a git tagged files, and that didn't work? Are you going to submit this to Slackbuilds.org so users might be able to get it standard methods? Also I see on github that you have a separate git tree for the actual development, so maybe you want to link to that instead during this development phase?
The sboui.conf file allows for vi and other editors. If I set it for Emacs and run it in a xterm then x-Emacs will actually be allowed, thanks! Documentation suggest only using non-x editors, so I'm assuming Emacs standard would be used?

I'll add more notes as I use it for some adds going forward.

montagdude 03-27-2017 12:33 PM

1 Attachment(s)
Quote:

Originally Posted by bamunds (Post 5688873)
I did have problems downloading the files from the link you provide above. I use SeaMonkey and when I attempt to "Save link Target as.." I was always getting the full html rather than the raw language.

bamunds, thanks for the feedback. I'll get to the rest of your comments later when I get time, but for now I just want to address the above, since I forgot about this issue with github. To download a file from github, you have to click on it and then use the "Raw" link (see where my mouse pointer is in the image below). Otherwise, as you found, you will just get the HTML.

You will want to download each of the files from the SlackBuilds page, download the file listed in the "DOWNLOAD=" field of the .info file, and then run the sboui.SlackBuild as root to build the package (just like the usual SBo process). sboui does require libconfig, which you can get from SBo. I intend to submit this to SBo after getting some feedback here and making some improvements.

Per your suggestion, I also added the development site to the first post.

bassmadrigal 03-27-2017 03:34 PM

Quote:

Originally Posted by bamunds (Post 5688873)
For example, I've locally built slackbuild for sddm-0.12.0 based off AlienBob slackbuild script, and modified the end of the files to read sddm-0.12.0-x86_64-1alien-SBo, but when attempting a search with sddm it did NOT find that file.

Adding that bit at the end actually goes against Slackware package naming conventions and you'd likely be unable to remove the package by using removepkg sddm.

The problem is the extra dash. How the pkgtool suite determines package names is done by reversing the string (using the rev program) and then using the dash to separate the various things in the package name. The first section (when reversed) is the tag, then the ARCH, then the version, and finally the package name. This allows package names to contain multiple dashes without breaking the tools. Once it has all that information, it reverses it again so everything is displayed properly.

So, the package manager likely sees this program's name as sddm-0.12.0, the version as x86_64, the ARCH as 1alien, and the tag as SBo.

For packages like this, you'd want to use underscores in the tag (as well as any versions that might normally contain dashes). So, a better tag would be 1alien_SBo.

bamunds 03-27-2017 06:13 PM

@bassmadrigal, Thanks. I didn't know there was a strict standard to follow for underscore and dashes. I wanted to remember the path (from alien repo) and method (slackbuild) used to get to the package installed. I'll modify the package name to have an underscore.

What practice do you use to remember the repo you might have pulled the source or original slackbuild from? Do you use SBo for all slackbuilds whether a script created by yourself or coming the slackbuilds.org? I just found in the three years using Slackware that paper is my primary source to remember how I found source and then built packages, maybe that is the life of a slacker...:-)

montagdude 03-27-2017 06:43 PM

Quote:

Originally Posted by bamunds (Post 5688873)
montagdude I've loaded and tested on Slackware 14.2 64 with sbotools and it is looking great.
Load time seems to be a little slow in loading my local sbotools repo, upto 10 seconds.

When it starts up, it has to read all the names of the packages from the repo and organize them into groups. That in itself shouldn't take too long, but for installed packages, it also reads some things from the .info files. So if you have a lot of packages installed, it might take a little while. The flip side to that is that since all those things are stored in memory, most operations (like searching, filtering, resolving dependencies) should be really fast afterwards. I personally have 64 packages installed from SBo at the moment, and it only takes about a second on startup. I have some plans for efficiency improvements that should make the startup time much faster even if you have a lot of things installed. Thanks for the report, though; I'll make sure to focus on that.

Quote:

Originally Posted by bamunds (Post 5688873)
Usage
It shows the Slackbuild packages that I have installed in the appropriate categories from sbotools.
It would be nice if it could also show other slackbuilds installed which aren't from the sbotools repository. Perhaps a query of /var/log/packages to determine packages actually installed?
I'm curious, how it goes about searching when looking for installed packages? For example, I've locally built slackbuild for sddm-0.12.0 based off AlienBob slackbuild script, and modified the end of the files to read sddm-0.12.0-x86_64-1alien-SBo, but when attempting a search with sddm it did NOT find that file.
I've also installed AlienBob's qt5 and qt5-webkit, but a sboui search did not know that qt5 and qt5-webkit were already installed, perhaps it's a limit of sbotools rather than sboui search function?

Currently, it will only find packages that end in *_SBo and that exist in the repository. Now that you mention it, I could check every installed package to see if it exists in the repository, in which case it would find your qt5 and qt5-webkit but not sddm. It would increase the startup time though, so I'll test it out after making the planned efficiency improvements.

Quote:

Originally Posted by bamunds (Post 5688873)
Since Sync is critical for sbo, perhaps that option key should be included on the first default page? Or is that part of the initial startup when sbotools is used as the package manager?

Good point. I can add that to the list at the bottom so that it is obvious how to sync without having to look at the Help window.

Quote:

Originally Posted by bamunds (Post 5688873)
Since Sync is meant to update is there a reason one must hit return? If it is to let one see the sync command results before going back to the interface, there might be confusion for the sbotools unfamiliar user, because a sync with no updates will show 0 0 0 0:00:00 and 0/52000 which might be thought of as a failed update, when in fact it is the result that nothing required updating.

As you guessed, the reason is that I want the user to be able to see the result of the sync operation before going back to the main window. The same thing happens with installs, upgrades, removes, etc., unless you set confirm_changes = false. If there is an error, a red window will appear when you return to the main window, but maybe I should also put some text to say it succeeded before pressing Enter to return, if that will make it more clear.

Quote:

Originally Posted by bamunds (Post 5688873)
The sboui.conf file allows for vi and other editors. If I set it for Emacs and run it in a xterm then x-Emacs will actually be allowed, thanks! Documentation suggest only using non-x editors, so I'm assuming Emacs standard would be used?

+1 for reading the manual! :) To view a file, sboui simply executes a command like `$editor FILE`. In truth, you can set the editor to anything you want. The reason for the warning is that, in my experience, if I try to run an X application within an "su -l" session, it usually fails. For example, trying to run kate this way, I get:

Code:

kate: cannot connect to X server :0
But if the editor you want works under this type of session, then feel free to use it.

bamunds 03-27-2017 07:29 PM

Quote:

Originally Posted by montagdude (Post 5688999)
When it starts up, it has to read all the names of the packages from the repo and organize them into groups.

As a reference I have Slackware64 14.2 and was in XFCE and XTERM when I tested. My Slacware runs on a emachine 5224 with Pentium D-820 processor, 4 Meg of RAM, nouveau graphic drier of a NVIDIA 6800. LVM/LUKS all files except /boot. Let me know if there are other parameters you'd like to know.

Quote:

Originally Posted by montagdude (Post 5688999)
Currently, it will only find packages that end in *_SBo and that exist in the repository. Now that you mention it, I could check every installed package to see if it exists in the repository, in which case it would find your qt5 and qt5-webkit but not sddm.

Not sure why it wouldn't find the sddm package which does appear in /var/lib/packages? Unless you are referring to the package alien-SBo ending I gave?

Quote:

Originally Posted by montagdude (Post 5688999)
Good point. I can add that to the list at the bottom so that it is obvious how to sync without having to look at the Help window.

Thanks

Quote:

Originally Posted by montagdude (Post 5688999)
maybe I should also put some text to say it succeeded before pressing Enter to return, if that will make it more clear.

I don't know if this is only a sbotools issue? But if it is, then it would be helpful to know the status or include the information in the documentation. Just think it will stop some ghost complaints about it not working. Maybe a green window to go with your red fault window? Of course those only work if the user is using color!

Quote:

Originally Posted by montagdude (Post 5688999)
if I try to run an X application within an "su -l" session, it usually fails.

Actually I was running in XTERM with "su -" to get to root.

Thanks again for the interface. I'm looking forward to using it more!

bassmadrigal 03-27-2017 08:25 PM

Quote:

Originally Posted by bamunds (Post 5688993)
What practice do you use to remember the repo you might have pulled the source or original slackbuild from? Do you use SBo for all slackbuilds whether a script created by yourself or coming the slackbuilds.org?

I generally only use SlackBuilds from SBo or my own (which have the _bass tag) and the occasional package from alien (LibreOffice, chromium, and qt5 -- but those might change when I get my Ryzen system... hopefully in a few months). If I develop a SlackBuild I expect will be uploaded to SBo at some point, it will probably have the SBo tag so I don't forget to change it when I upload it.

montagdude 03-27-2017 08:42 PM

Quote:

Originally Posted by bamunds (Post 5689012)
As a reference I have Slackware64 14.2 and was in XFCE and XTERM when I tested. My Slacware runs on a emachine 5224 with Pentium D-820 processor, 4 Meg of RAM, nouveau graphic drier of a NVIDIA 6800. LVM/LUKS all files except /boot. Let me know if there are other parameters you'd like to know.

Just curious, how many packages do you have installed from SBo? I just timed it and for me it takes about 4-5 seconds to start up with 64 packages installed (not 1 second as I had previously guesstimated).

Quote:

Originally Posted by bamunds (Post 5689012)
Not sure why it wouldn't find the sddm package which does appear in /var/lib/packages? Unless you are referring to the package alien-SBo ending I gave?

It will see the package, but it will be ignored if it does not appear in the SlackBuilds repo. Remember this is a user interface for tools that interact with repositories of SlackBuild scripts, not packages (there's slackpkg and other tools for that). If a package is installed but does not appear in the repo, that means there is no .SlackBuild or .info file for those tools to work with. Not to mention there would be no group to put it under.

Quote:

Originally Posted by bamunds (Post 5689012)
I don't know if this is only a sbotools issue? But if it is, then it would be helpful to know the status or include the information in the documentation. Just think it will stop some ghost complaints about it not working. Maybe a green window to go with your red fault window? Of course those only work if the user is using color!

Maybe so. I'll do some experimenting and see if I think the behavior should be changed.

Quote:

Originally Posted by bamunds (Post 5689012)
Actually I was running in XTERM with "su -" to get to root.

I believe `su -l` and `su -` are equivalent.

Quote:

Originally Posted by bamunds (Post 5689012)
Thanks again for the interface. I'm looking forward to using it more!

Glad you like it! It's been a fun project to work on.

bamunds 03-28-2017 09:54 AM

I have about 63 SBo packages from 11 groups installed at this time. Startup takes 9 seconds.

montagdude 04-13-2017 10:00 AM

Hey everyone,

sboui-0.2 has been released. Here are the main changes:
  • Now available on SlackBuilds.org! https://slackbuilds.org/repository/14.2/system/sboui/
  • Big speed improvements, especially during startup and after syncing. It will still take a few seconds the first time you start it up (cut down by about 50% compared to version 0.1.1), but subsequently cached memory magic makes it happen almost instantaneously.
  • Add a new "commander" color theme and allow changing color themes from the options window.
  • Show installed packages existing in the repo even if they have a different tag (i.e., they were installed from somewhere else). Give a warning when upgrading/reinstalling/removing such packages.
  • Display a summary of applied changes after the package manager is done, and no longer pause before returning to the main window.
  • Various other UI and UX improvements.
  • Various bug fixes.
You can read the full ChangeLog here:

https://github.com/montagdude/sboui/...ster/ChangeLog

I'm still welcoming feedback, suggestions, and bug reports. You can either do that here or on the github page.

bamunds 04-13-2017 02:38 PM

The new slackbuild installs, but as soon as I execute it goes to segmentation fault when trying to Read Slackbuilds repository.
This is the dmesg
[12656.650901] sboui[20624]: segfault at 18 ip 00007f4bad5de94b sp 00007ffe852b38d0 error 4 in libstdc++.so.6.0.21[7f4bad512000+16b000]
I'm not sure what is happening, but reinstalling 0.1.1 doesn't have this issue.

I've also noticed another issue or user error. I have Keepassxc installed. It requires libinput be installed as referenced here https://github.com/keepassxreboot/ke...on-from-Source and also in the "Compute Build Sequence" for keepassxc. However, when I run the "List inverse deps" for libinput it does NOT show that it is a dependency for keepassxc. Am I interpreting the "List inverse deps" wrong or should it be showing libinput is a dependency of keepassxc? Or is this an error in the slackbuild file itself, because I checked the slackbuild "REQUIRES" field of keepassxc and it only shows qt5 as required. Am I confused and it is all "user error"?

P.S. for those who installed the 0.1.1 version it will not upgrade with sboui, because the original slackbuilds have a _mntg-SBo ending and only those files with _Sbo will be recognized for upgrading. After installing the newest version it will properly identify in sboui.


All times are GMT -5. The time now is 02:29 AM.