-
-
Notifications
You must be signed in to change notification settings - Fork 24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support for installing in apt (.deb) #31
Comments
@fmarier (one of our users and a Debian Member) just submitted an RFP to add BusKill to the repos a couple days ago: |
I wanted to read about how RFPs work, but I got "403 Forbidden" trying to access the wiki @fmarier I almost-always get 403 errors trying to access the debian wiki. Is there any way you can have them not block VPN users? It's surprisingly anti-privacy for the debian project :( |
Hm, that's weird. I can't imagine that being done on purpose. Probably just some false positive from an anti-abuse system of some sort. I see some IP-blocking logic in https://salsa.debian.org/debian/wiki.debian.org/-/tree/master/bin. Here what the FAQ (on the wiki of course!) says:
Other ways to reach them:
|
Here's what that page currently says:
So basically, it's a "Request for Package", as opposed to "Intent to Package". I am planning to convert it into an ITP once I've got a bit of time to do it, but I filed it as an RFP in case someone else is keen to get it done right now and upload it. |
@fmarier we just got another ticket from a user asking about debian repo integration (specifically asking if we could make our own third-party repo). Generally, I'd prefer to put BusKill in the official repos. This was also a prereq from @adrelanos to integrate BusKill into Whonix Is there anything that I can do to help with this effort? Maybe I can build a |
Right now, I don't have any free time at all for this, but hopefully I'll find some time during the xmas break and make it before the freeze for the next Debian version.
The things that normally need to be worked out are:
One minor thing: the standard Debian tooling can check the upstream GPG signature on the tarball, but not on a SHA256SUMS file. So if you modified your signing script to upload two Anyways, if all of these potential issues are resolved ahead of time, then it should be pretty smooth creating, testing and uploading the package :) |
And I forgot to say, I do appreciate the offer to help. It's immensely helpful when upstream developers are friendly and supportive of the packaging work in Debian 😄 |
Would prefer a Debian/Ubuntu repository. This way the update manager can install updates automatically on all Debian and Ubuntu based distros. |
Is there a difference here between a "Debian/Ubuntu repository" and a "Debian repository". I assumed that buskill would be available automatically in Ubuntu if we included it in the Debian repositories. Is that not correct? |
Once it's included in Debian, it will automatically be part of all future Ubuntu releases (in the |
awesome, thanks for pointing me in the right direction :)
I think the app's dependencies and licenses could be better enumerated. I'll work on adding this to our documentation to make it more clear.
Quesion: how do apps like firefox with their own built-in update systems work when packaged on Debian to avoid conflicts with The BusKill app has a built-in update checker, which downloads a json file in a random web server from a set hard-coded mirrors defind here:
One mirror is GitHub, for example: The
But that's just how our in-app updates works internally. I wonder: should we detect if the app was installed via The latest release is also listed directly in the GitHub API, which spits out a JSON
Yes, our CI pipeline spits-out three "pre-release" builds for every push to github.com. These tag names are just a long string of numbers (seconds since epoch iirc). Actual release tags differ in that their tag names use semantic version naming (eg 'v0.6.0'). Does your Debain Watch tool allow you to query GitHub tags by regex?
The BusKill app is a single AppImage. Just copying the AppImage binary on machines would be the easiest solution. Would you plan to just put the AppImage in the repos or build some sort of wrapper for the sourcecode directly? How is this done for other software in Debian that's distributed upstream as AppImages?
Ah, yes. I'll write one.
I'd rather update our release workflow to include a redundant signature on the linux tarball just for Debian than disable this upstream GPG signature check. |
Usually what we do in Debian is simply disable these in-app update checks since updates are handled by the system. If that check can be disabled in a config file (or similar mechanism), then that would be very handy and save us from having to maintain a patch.
Yes, we'll be able to filter that tags URL for something like
I'm not super familiar with AppImage, but my understanding is these are self-contained archives with everything required to run the program (perhaps bundling third-party libraries too?). In Debian, we would install the Python files in the usual directories (e.g.
🎉 |
…arball (for downstream Debian package maintainers) * #31 (comment)
I went ahead and signed the latest linux release tarball (v0.6.0): And I've also updated our Release Workflow documentation to include this redundant external signature file for future releases: |
Yeah, it's basically one big binary that includes your app and all its dependencies. At execution-time, it extracts everything into a temporary directory. This is how we build our BusKill app for Linux. We actually start with the AppImage for Python, then we extract the squashfs contents, modify it by adding our code/images/etc, and then package it back up again into an AppImage binary.
I'm afraid this is the hard approach because we don't build/test the BusKill app like that, but it will result in a much smaller package. I expect some iteration will be needed to get it working. Code changes may be needed for things like images, which are expected to be located relative to the extracted AppImage's temp directory.
Right now we don't have a config option to disable the BusKill in-app updates, and this is blocked until at least the next release, which will finally include config file support. I've created a ticket for this. But, unfortunately, I'm not sure this can be done before the new year. |
I've added a new "Dependencies" section to our documentation that enumerates all the external software that the BusKill app uses: In Debian, I believe this translates to the following packages:
All the above software is already in Debian. The only code that I or other contributors didn't write directly for this project is here in the 'packages' dir. As you saw, the |
That's great. All of these are already packaged in Debian ✔️ |
I've done some initial packaging work in this repo. It's not quite ready yet, but it does seem to run (I don't have my buskill with me so I can't actually test it). A few questions for you:
One thing I failed to notice earlier when you added a GPG signature on the tarball just for the Debian use case is that the tarball I actually need to use is not the Linux one (which only contains the AppImage), but rather the source code one since I am "building" from source. Sorry for not catching this earlier. Would you like me to file a separate issue for this? |
The larger problem though is that I may need to repackage the upstream source code tarball. It contains far too much stuff compared to what's actually needed in Debian (i.e. > 300MB of external dependencies), and I would also need to document the licenses for all of that if I left it in. Alternatively, do you think you could simply exclude the |
Thanks so much for your work on this. To answer your questions
Yes, it's used if the application is executed with arguments. See:
The quick & dirty method would be to just comment-out the two ways the user can trigger the upgrade functions to run in the UIs. I'd like to just do ^ that for now so this can get in before the freeze. But in the future I'll add a boolean flag and some logic in the code that will detect this and hide the options if that's set to Is this what other projects do? Can you link to good examples of how this is ideally solved in other software (eg Firefox and, uh, another app that's much simpler than Firefox)? But for now, please just comment-out this block for the GUI
And this block for the CLI
Ah, good point. I think you're right and gnupg is only used by the update code, so you can probably remove that depend on Debian systems.
Ah, ok. Yeah, a new issue would help as I'll need to update the docs for how to do our release. But I'll try to get you that detached sig file for the v0.6.0 source code by EOD.
Yeah, definitely strip the You can also delete the I'd also consider deleting all of the files in
And you should also be able to delete the |
I see a lot of debug output when I use the command line tools in the Debian package I just built:
and:
Is there anything I should be setting/changing to hide the inconsequential debug output? |
Might be too late, but here it is: #53 |
There's currently nothing you can do. The app always outputs DEBUG messages. Adding an option to toggle debug log messages is on the TODO list, but it's fairly low priority and is blocked by #16 |
In that case, you might be able to just add the |
(Is my I'm-not-actually-a-real-developer hat showing?) TIL the
And from
Thanks for the tip. I'll give that a try and see if I can get GitHub's release source tarball to match what you expect automatically |
Aand today I stumble on this :) thanks again |
Initial package submitted to the NEW queue for approval: https://ftp-master.debian.org/new/buskill_0.6.0+git20221227.e1539d2-1.html |
Fantastic news @fmarier, thanks so much for your work on this!
And thanks for catching those font depends, and sorry I missed them before |
See also the ticket for packaging I see it's marked to be added to What is the process of going from |
Once it's accepted into |
TODO: After the
|
Since the Debian Import Freeze for Ubuntu 23.04 is on 2023-02-23, it should normally be in that distro as well. |
… issues for bugs, enhancements, PRs, and helped bring the BusKill app into the Debian repos in 2022/2023 * https://github.com/fmarier * #31 (comment)
The |
Fantastic news, thanks so much for your help to get us to reach this milestone, @fmarier !! I was wondering how to track the package's status in the NEW queue. So I guess if it disappears from the new queue, then it was accepted? Maybe a "red" font means rejected? |
Ah, I also just noticed that the "Homepage" listed for the Currently it's: But it should be: |
Indeed. It was also reported on the Debian bug tracker and so I just fixed it, for a future upload next week. I used the buskill.in page though, do you think that's okay? |
Absolutely. Thanks :) |
And the homepage fix has now make it to bookworm. |
FWIW, the latest version of the package also includes an optional systemd unit file to enable buskill automatically without requiring the GUI application: https://salsa.debian.org/debian/buskill/-/blob/master/debian/README.Debian |
@fmarier very interesting idea to create a systemd unit file! So the idea is that the user executes the following to arm buskill
And they execute the following to disarm (eg before going to the bathroom), is that correct?
Also, I'm not sure if you've ever used the shutdown feature, but that's currently available in the CLI version of BusKill
I imagine it's possible to update the systemd config to support setting the trigger type, but I'm not privy to the systemd/debian best-practices for how this should be done. |
Yes, although since it's using the default trigger of locking the screen, I expect most users will just let the screen lock while they go to the bathroom ;-) |
Right now that could be done by editing/overriding the unit file and changing the Once there is support for a config file in buskill though, it could be even easier: just configure buskill to use the shutdown trigger as default when it arms, and then the systemd unit file can be used as-is. |
FYI, looks like Debian 12 is becoming stable in two days 🎉 |
Yesterday I downloaded and installed Debian 12 in an HVM on my QubesOS system. I think this might have been the first time I've installed Debian on an HVM in Qubes, but it was unable to get a network connection, so I ended-up with a system without a Desktop Environment. Surprisingly, I was still able to install BusKill without a DE. After it installed, I ran Unfortunately, I couldn't click anything with the mouse (somehow I was able to open the navigation drawer, but I still couldn't click anything). And, worse, I couldn't exit the shell. If I wasn't on an HVM, I could have done the ctrl+alt+f2 to jump to tty2 and kill the session, but those hotkeys were captured on my QubesOS dom0 hypervisor, so the only thing I could do was shutdown the system :( I think we should implement some kind of way to exit the app with a keyboard shortcut, for which I've created this bug: In any case, I think this ticket is complete |
Later this year, I hope to publish an article that shows how to install BusKill on Debian-based systems, including:
...but I'll at least have to wait for the next release of each of those systems |
Feature request: create a .deb and work with Debian to add this software to the main Debian repos
The text was updated successfully, but these errors were encountered: