packdude

Under development: PCMCIA, wireless, etc.
Message
Author
stemsee

package formats conversion

#31 Post by stemsee »

Have you seen this. Might be some useful scripts in there.

http://4mlinux.blogspot.co.uk/2013/12/a ... m-txz.html

cheers

User avatar
Iguleder
Posts: 2026
Joined: Tue 11 Aug 2009, 09:36
Location: Israel, somewhere in the beautiful desert
Contact:

#32 Post by Iguleder »

I'm aware of alien and I think it's nice, but I want something different - a repository converter. I want to convert a repository myself, so they user doesn't have to go through the slow conversion process locally.

Regarding compiler stuff, my GCC cross-compiler fails to build a native self. I'm trying to cross-compile a static GCC using Aboriginal's toolchain.
[url=http://dimakrasner.com/]My homepage[/url]
[url=https://github.com/dimkr]My GitHub profile[/url]

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#33 Post by technosaurus »

Iguleder wrote:Regarding compiler stuff, my GCC cross-compiler fails to build a native self. I'm trying to cross-compile a static GCC using Aboriginal's toolchain.
linuxfromscratch had a couple of patches for this problem... the autotools garbage messes up the 2nd pass iirc.
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

gcmartin

#34 Post by gcmartin »

Sqlite should probably have been a standard feature in PUPs since smartPhones arrived years ago. 2 of the members here are WOOF-CE contributors. Please add for future PUPs as this PPM utility moves forward into mainstream.

User avatar
8-bit
Posts: 3406
Joined: Wed 04 Apr 2007, 03:37
Location: Oregon

#35 Post by 8-bit »

One thing I never did like about PPM was the update process.
When run, it would attempt to update all repositories.
I would have preferred to be able to choose the ones that got updated.
And if one tries to interrupt the update process, the conversion of the file lists never gets completed and I have crashed PPM in the process.

WIll packdude have a graphical user display that shows available files in a repository?
Or is SQlite responsible for that?

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#36 Post by technosaurus »

sqlite is really simple to learn. if you're interested you can use puppy built-in sqlite3 shell to play. The csv format is ideal for gtkdialog trees/lists. I even wrote a patch to output json for use in a browser front-end. Hopefully I can get netsurf's new JavaScript engine to work or elinks with spidermonkey/libsee so it can be used in the console (see akita thread for last elinks with libsee support)
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

User avatar
Iguleder
Posts: 2026
Joined: Tue 11 Aug 2009, 09:36
Location: Israel, somewhere in the beautiful desert
Contact:

#37 Post by Iguleder »

I wrote gpackdude, a dead-simple packdude frontend, with gtkdialog1. It allows you to install or remove packages. Inspiration came from Tiny Core's FLTK-based extension manager, but I don't like the use of C++ because of bloat and the challenge of cross-compiling static C++ binaries. Also, I really like GTK1 :lol:

You don't have to worry about updating the database. In one of the latest commits, I made the repository package database cached. packdude will try to fetch the database without asking any questions, if it's one hour old. If you install multiple packages, packdude will update the database before the first installation.

If you look at the output of packdude -l and packdude -q, you'll notice it's exactly in the format of tree view entries in gtkdialog. You just have to wrap each output line with <item> tags. Here's the gpackdude code.

(screenshot taken under Xubuntu 14.04 x86_64)
Attachments
gpackdude.png
(45.6 KiB) Downloaded 433 times
[url=http://dimakrasner.com/]My homepage[/url]
[url=https://github.com/dimkr]My GitHub profile[/url]

stemsee

packdude

#38 Post by stemsee »

It looks great! Very clear and logical. Any chance of a field for package size?

4Mlinux - even though it uses the word 'Alien' (noun) in the link it isn't alien (n) it is alien (adj). If you can't be bothered to have a look fair enough!

User avatar
Iguleder
Posts: 2026
Joined: Tue 11 Aug 2009, 09:36
Location: Israel, somewhere in the beautiful desert
Contact:

#39 Post by Iguleder »

Intentionally, I decided to remove that field, for three reasons:
1) This allows developers to rebuild a defective package, without having to rebuild the database.
2) Size doesn't matter much, because packages are small thanks to xz compression. The internet connection of most users is fast enough to handle the download of packages in the size range of 80K to 1MB (most packages in the repository at the moment).
3) I believe people care more about functionality and less about size. If a user needs to convert an audio file and the only audio converter in the repository is ffmpeg, the user has to choose between installing a big package and giving up on that. Most users are sane and use their computers to do useful stuff.

Regarding alien - it's client-side and I want something server-side. Also, alien doesn't resolve dependencies. I'm talking about the old alien (https://en.wikipedia.org/wiki/Alien_(software)) - the 4M solution does the same thing.
[url=http://dimakrasner.com/]My homepage[/url]
[url=https://github.com/dimkr]My GitHub profile[/url]

stemsee

#40 Post by stemsee »

I wanted to install a more appealing mixer the other day, I had a CHOICE! Qasmxer or qashctl or jackmixer or retrovol, I chose gmerlin, because it offered the same functionality in a smaller package size, and because I'm psychologically dysfunctional! Comes from the longest posterity.

"Most users are sane and use their computers to do useful stuff. " This is debatable and lacks consensus and empirical evidence, I would say relatively!

Peace be with you. Have a nice day!

User avatar
Iguleder
Posts: 2026
Joined: Tue 11 Aug 2009, 09:36
Location: Israel, somewhere in the beautiful desert
Contact:

#41 Post by Iguleder »

Just added two new features:
- Non-removable packages - if you pass -n, packdude will not remove the packages no matter what.
- Listing of removable packages - if you pass -c, packdude will list packages installed by the user which can be removed. Unlike -q, in this mode, packages installed as dependencies or non-removable ones are not displayed. In other words - this means it's possible to use packdude without ever seeing the dependencies of a package.
[url=http://dimakrasner.com/]My homepage[/url]
[url=https://github.com/dimkr]My GitHub profile[/url]

User avatar
mavrothal
Posts: 3096
Joined: Mon 24 Aug 2009, 18:23

#42 Post by mavrothal »

Iguleder wrote:I wrote gpackdude, a dead-simple packdude frontend, with gtkdialog1. It allows you to install or remove packages.
What about "finding packages" and specially searching for function in addition to a package name ie "video player").
Is even more important as "category" is not implemented (is it going to?)
== [url=http://www.catb.org/esr/faqs/smart-questions.html]Here is how to solve your[/url] [url=https://www.chiark.greenend.org.uk/~sgtatham/bugs.html]Linux problems fast[/url] ==

User avatar
Iguleder
Posts: 2026
Joined: Tue 11 Aug 2009, 09:36
Location: Israel, somewhere in the beautiful desert
Contact:

#43 Post by Iguleder »

Nope, because it makes life harder for Woof. Some distros don't have a category field, so PPM has to guess the category using an ugly, hardcoded table of known packages.

I think categories should be a feature of the package manager frontend (the graphical interface). It could look for certain keywords (e.g "video player") in the package description field - that's the only way to guess the package category without having to put a table of all known packages in every Puppy.

Regarding package search - the frontend could run packdude -l | grep -i player.
[url=http://dimakrasner.com/]My homepage[/url]
[url=https://github.com/dimkr]My GitHub profile[/url]

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#44 Post by technosaurus »

I wrote a script for Scotman that went through the whole package database checking if the file list contained a .desktop file and if so, downloaded just enough of the package to extract the desktop file for categorization. ... should be in the akita thread I think.
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

User avatar
Iguleder
Posts: 2026
Joined: Tue 11 Aug 2009, 09:36
Location: Israel, somewhere in the beautiful desert
Contact:

#45 Post by Iguleder »

Here's a usage example of packdude's new dependencies abstraction feature.

I installed xhippo (which depends on mpg123 and ogg122) and mtpaint (to take this screenshot, it has its own dependencies - e.g gifsicle). As usual, packdude installed their dependencies first.

On the left you can see the dialog which lets the user choose a package to remove, while on the right, you can see the list of all installed packages.

When the wants to remove a pacakge, gpackdude shows only the package the user chose to install, hiding away its dependencies (which cannot be removed - i.e mpg123 cannot be removed because xhippo depends on it). This makes the package manager interface a lot cleaner and very pleasant to work with, since it doesn't offer the user actions that won't work (such as removing a dependency of a package or removing the kernel).

Once the user removes a package, unneeded dependencies (e.g mpg123, in the case of xhippo) are cleaned up automatically, as before.
Attachments
gpackdude.png
(8.7 KiB) Downloaded 250 times
[url=http://dimakrasner.com/]My homepage[/url]
[url=https://github.com/dimkr]My GitHub profile[/url]

jamesbond
Posts: 3433
Joined: Mon 26 Feb 2007, 05:02
Location: The Blue Marble

#46 Post by jamesbond »

Which repo URL can I use for testing packdude?
Fatdog64 forum links: [url=http://murga-linux.com/puppy/viewtopic.php?t=117546]Latest version[/url] | [url=https://cutt.ly/ke8sn5H]Contributed packages[/url] | [url=https://cutt.ly/se8scrb]ISO builder[/url]

User avatar
Iguleder
Posts: 2026
Joined: Tue 11 Aug 2009, 09:36
Location: Israel, somewhere in the beautiful desert
Contact:

#47 Post by Iguleder »

[url=http://dimakrasner.com/]My homepage[/url]
[url=https://github.com/dimkr]My GitHub profile[/url]

jamesbond
Posts: 3433
Joined: Mon 26 Feb 2007, 05:02
Location: The Blue Marble

#48 Post by jamesbond »

Thanks.

Is there a way to download the packages for offline use? When building a distro, I don't want to keep re-downloading the packages over and over again.
These are the steps:
1) Get to know the list of available packages
2) Get a list of dependency for all packages.
3) I have a subset of packages I want to use (I may not want to install everything that exist in the repo). With information from 1) and 2), I want to download packages for offline storage (download only - don't install).
4) Install to chroot, with packages from local filesystem
- if it does not use dependency, then its fine.
- if it does use dependency, I want that dependency to be resolved from my local filesystem.

I think packdude can only do step 1 at the moment (and may be partially 4, as you said before).

For testing, I did this before:

Code: Select all

mkdir -p /root/p/var/packdude
export REPO=your-repo-url above.
for p in $(./packdude -p /root/p -l | sed 's/|.*//'); do ./packdude -p /root/p -i $p; done
And that gives me a nice filesystem, but if I want to do it again I end up re-downloading everything again.
Fatdog64 forum links: [url=http://murga-linux.com/puppy/viewtopic.php?t=117546]Latest version[/url] | [url=https://cutt.ly/ke8sn5H]Contributed packages[/url] | [url=https://cutt.ly/se8scrb]ISO builder[/url]

User avatar
neerajkolte
Posts: 516
Joined: Mon 10 Feb 2014, 07:05
Location: Pune, India.

#49 Post by neerajkolte »

Hi jamesbond,

In which puppy you're testing Packdude.
In Fatdog-64, or the new puppy you're building with pure ubuntu repo packages using Fatdog's kernal.

If that's the case could you provide me link to libarchive for fatdog64-631.

I tried using Packdude but it asks me libarchive (see Here) . I couldn't find it.
I have no knowledge of compiling.
But i downloaded source from HERE. I don't even know if that's right.
"One of my most productive days was throwing away 1000 lines of code."
- Ken Thompson

“We tend to overestimate the effect of a technology in the short run and underestimate the effect in the long run.â€￾
- Amara’s Law.

User avatar
Iguleder
Posts: 2026
Joined: Tue 11 Aug 2009, 09:36
Location: Israel, somewhere in the beautiful desert
Contact:

#50 Post by Iguleder »

jamesbond - you can download the packages and repo.sqlite3, using wget. All files are located at the repository root. Then, use file:// or python -m SimpleHTTPServer.
[url=http://dimakrasner.com/]My homepage[/url]
[url=https://github.com/dimkr]My GitHub profile[/url]

Post Reply