WelcomeWelcome | FAQFAQ | DownloadsDownloads | WikiWiki

Recent Posts

Pages: [1] 2 3 ... 10
1
TCE Talk / Re: New package manager
« Last post by wysiwyg on Today at 11:53:25 AM »
Hey Rich, thanks for the reply!

Quote
... First, there is a pinned post at the top of this board saying not to abuse the bandwidth that is generously being donated to the project. ...
I'm not sure which post you are referring to, but that was likely in response
to individuals downloading entire repos.

Yes, that was the post that I was referring to. But wouldn't the partial download of the entire repo also fall under that category?  If the same results can be achieved without downloading anything, isn't that the most efficient use of bandwidth that is being donated?


Quote
... Even with using zsync, that would still fall under that category - at least in my eyes.  Without putting these files somewhere that they get saved, they would have to be re-downloaded every time a device reboots. ...
A reboot does not automatically result in a re-download.
sizelist  and  tags.db  are in  /tmp , so they would get re-downloaded if they're needed.
dep.db  and  provides.db  are in the  tce  directory, so they are persistent.

I understand.  I wasn't sure where the files were being placed.  It was just an observation based on the non-permanent nature of parts of the OS.


Quote
... TC takes great strides at being as small as possible, yet to perform this task with the existing package manager, it has to bloat the system with the entire software library.
I don't understand what you are trying to say there.
How are we bloating the system with the entire software library?

So if TC optimizes their packages during compile to be smaller in size (which they do) to shave off bytes per binary, I'd say that's going through effort to have the smallest distro possible.  If a normal user that uses the GUI for the tce-* scripts does any type of search, they are automatically downloading entire parts of the repo.  If it doesn't matter in that instance, why go through the efforts elsewhere to make this as small as possible?

If the search abilities for packages, whether for local or remote, can be accomplished with the same results, and one doesn't add anything to your storage (also saving donated bandwidth) vs one that does, wouldn't that fall in line with other aspects?  Let alone just being a more efficient system overall?
2
TCE Talk / Re: New package manager
« Last post by wysiwyg on Today at 11:37:56 AM »
Quote
I can go back and update the .info file to match what TC requires. Is there a template somewhere to use by chance?
This is the example I follow. Also the submitqc script in submitqc.tcz checks the info file for wrong or missing fields, among other things.

Awesome!  I'll grab that and adjust my .info files to match.

Quote
In regards to the compatibility with the existing tools and optional dependencies, I can understand your request. But that functionality isn't present, so there's nothing to be compatible with.

I was more concerned that like with the info file you'd submit extensions with dep files in a format that breaks the regular tce* tools. If you have something like separate "extension.tcz.dep.opt" files then that might work better, but otherwise I'd hope the tce* tools get support added for any new formatting features before they're used in the repo.

Gotcha!  I don't think you'd have to worry about this because it would take modifying the .dep files for various packages in the repo, of which I have no control over.  Nor would I want to do that without approval anyways.  But, if that functionality was added into the tce-* scripts from pax, I'd suggest to adopt the other forms of entries to those files as well (versioning, copying specific files from the package, etc).


Quote
To quickly go back to the start of this additional conversation... Part of the reason pax can not search packages is because it looked like it just pulled down the files ondemand. Based on our conversation, it appears that I was right.

Yes, but I'm not sure why you said Debian's package system is more "server-side" than on TC. Debian also downloads a full package list to search locally, and it downloads the description and dependency info equivalent to the info and dep files for all packages too. Debian do have a web interface that allows searching in a web browser, but apt-get and other package managers I've used there all locally search the downloaded package lists.

Hmmm can you point to where this list is?  I checked /var/lib/apt and the files in there only contain hashes to (past?) files, or brief info for installed packages.  I couldn't find anything where the entire repo's package listing is stored locally.  And yes, this is the equivalent to .info and .dep files for already downloaded packages being on the device.  This is not what I'm referring to.  pax can already parse those files for local searches.  For example, if a user wants to know what database servers are available in the online repo, those files are no good.  The current setup that TC has is to download the entire repo's worth of information files and search locally.  An online search would be much more efficient in terms of bandwidth and storage, right?
3
TCE Talk / Re: New package manager
« Last post by wysiwyg on Today at 10:58:23 AM »
This topic has being discussed before, how our package manager deal with how to determine what files is in what package ?

I suggested a SQLite solution, so you could also add more fields like description size and so on.
But i see the point of what TC is all about, simple and small. And not lot of dependencies, in this SQLite.
 
Let me see on my computer if i have the POC saved ?
Code: [Select]
$ cat make.sh
#!/bin/sh
sqlite3 files.db "CREATE TABLE IF NOT EXISTS tcz_files (name TEXT NOT NULL,file TEXT NOT NULL);"
for filename in $(ls *.tcz)
do
   tczfile=$filename;for file in $(unsquashfs -lc $tczfile); do sqlite3 files.db "INSERT INTO tcz_files ( NAME , FILE ) VALUES ( '$tczfile' , '$(basename $file)' );" ; done
done
Code: [Select]
$ cat search.sh
#!/bin/sh
sqlite3 -cmd ".timer on" -box files.db <<< "SELECT name as Package, file as File FROM tcz_files WHERE file LIKE '%$1%';"

Maybe you could steal my POC and make something about it.

Happy hacking :)

Hey Patrikg!

Thanks for the code snippets!  :) It looks like you are trying to use sqlite for a local repository on each client.  I'm actually trying to get an online solution for searching non-local files.  With the files that are already downloaded, they can have their corresponding .info files parsed - at least with pax.  The tce-* scripts require the downloading of the entire non-software package files.  This could be useful for offline devices, but then they couldn't download anything anyways making this a non-point.  The vast majority of devices are connected to the internet making this wasteful.  An online search takes zero space on your local storage while providing you the results you seek, for either local or non-local packages.
4
TCE Talk / Re: New package manager
« Last post by Rich on Today at 10:03:43 AM »
Hi wysiwyg
... So then it basically does download the entire repo's worth of non-software package files. ...
I'm working from memory here, and referring to the Apps GUI:
Code: [Select]
These get loaded for browsing/installing extensions:
info.lst Used to populate the left window of Apps
provides.db Used to populate the  Files  tab of Apps,
sizelist Used when populating the  Size  tab of Apps.

These get loaded for functions under Apps->Maintenance:
dep.db.gz Dependencies And Deletions, Check Onboot Unneeded, Check for Orphans
md5.db.gz Md5 checking, Check for Updates

Used in Search options:
provides.db Search for extensions by provided file
tags.db.gz Search for extensions by listed tags

Quote
... First, there is a pinned post at the top of this board saying not to abuse the bandwidth that is generously being donated to the project. ...
I'm not sure which post you are referring to, but that was likely in response
to individuals downloading entire repos.

Quote
... Even with using zsync, that would still fall under that category - at least in my eyes.  Without putting these files somewhere that they get saved, they would have to be re-downloaded every time a device reboots. ...
A reboot does not automatically result in a re-download.
sizelist  and  tags.db  are in  /tmp , so they would get re-downloaded if they're needed.
dep.db  and  provides.db  are in the  tce  directory, so they are persistent.

Quote
... TC takes great strides at being as small as possible, yet to perform this task with the existing package manager, it has to bloat the system with the entire software library.
I don't understand what you are trying to say there.
How are we bloating the system with the entire software library?
5
TCE Talk / Re: New package manager
« Last post by CNK on Today at 02:47:20 AM »
Quote
I can go back and update the .info file to match what TC requires. Is there a template somewhere to use by chance?
This is the example I follow. Also the submitqc script in submitqc.tcz checks the info file for wrong or missing fields, among other things.

Quote
In regards to the compatibility with the existing tools and optional dependencies, I can understand your request. But that functionality isn't present, so there's nothing to be compatible with.

I was more concerned that like with the info file you'd submit extensions with dep files in a format that breaks the regular tce* tools. If you have something like separate "extension.tcz.dep.opt" files then that might work better, but otherwise I'd hope the tce* tools get support added for any new formatting features before they're used in the repo.

Quote
To quickly go back to the start of this additional conversation... Part of the reason pax can not search packages is because it looked like it just pulled down the files ondemand. Based on our conversation, it appears that I was right.

Yes, but I'm not sure why you said Debian's package system is more "server-side" than on TC. Debian also downloads a full package list to search locally, and it downloads the description and dependency info equivalent to the info and dep files for all packages too. Debian do have a web interface that allows searching in a web browser, but apt-get and other package managers I've used there all locally search the downloaded package lists.
6
TCE Talk / Re: New package manager
« Last post by patrikg on Today at 01:47:42 AM »
This topic has being discussed before, how our package manager deal with how to determine what files is in what package ?

I suggested a SQLite solution, so you could also add more fields like description size and so on.
But i see the point of what TC is all about, simple and small. And not lot of dependencies, in this SQLite.
 
Let me see on my computer if i have the POC saved ?
Code: [Select]
$ cat make.sh
#!/bin/sh
sqlite3 files.db "CREATE TABLE IF NOT EXISTS tcz_files (name TEXT NOT NULL,file TEXT NOT NULL);"
for filename in $(ls *.tcz)
do
   tczfile=$filename;for file in $(unsquashfs -lc $tczfile); do sqlite3 files.db "INSERT INTO tcz_files ( NAME , FILE ) VALUES ( '$tczfile' , '$(basename $file)' );" ; done
done
Code: [Select]
$ cat search.sh
#!/bin/sh
sqlite3 -cmd ".timer on" -box files.db <<< "SELECT name as Package, file as File FROM tcz_files WHERE file LIKE '%$1%';"

Maybe you could steal my POC and make something about it.

Happy hacking :)
7
TCE Talk / Re: New package manager
« Last post by wysiwyg on January 28, 2026, 09:47:15 PM »
To quickly go back to the start of this additional conversation... Part of the reason pax can not search packages is because it looked like it just pulled down the files ondemand.  Based on our conversation, it appears that I was right.  Before trying to add in that feature, I wanted to see about having something server-side - again for efficiency, mostly.  Plus having this would allow for consistency across various Linux distros making pax for universal than trying to incorporate the way it's done in TC (which may be unique to just this distro and non-portable to others).

I do appreciate the feedback from you guys!
8
TCE Talk / Re: New package manager
« Last post by wysiwyg on January 28, 2026, 09:42:46 PM »
The package manager I just uploaded to the repo can list optional dependencies in the package .dep files (using the format [optional.tcz|installed.tcz]).

OK, but changes to the .dep file format should really be compatible with the tools in the base system, or else this is really still belongs in a fork of Tiny Core Linux.

I see you've already submitted a differently formatted info file for "pax", missing lots of the usual fields and omitting the upper-case letters at the start of fields. I expect this is incompatible with the programs generating these "db" files, hence "pax.tcz" is not in the tags.db.gz file, and therefore doesn't get found when searching with tce-ab. I don't know whether there's an issue with adding fields to the "info" files, but it seems obvious that you should be still including the existing ones in the same way as others. "Title:" should be the extension file name, but you're using "title:" for what should be in the "Description:" field, for example.

"Size:" isn't there in any form, and it's a field I often look for in the extension browser.

Hey CNK, thanks for the convo!

Honestly, I didn't even know there was any consistency with those files! lol  I worked on trying to standardize the repo here years ago, but didn't have much help.  As I processed those files I immediately noticed that there were so many inconsistencies that I just made my own.  For instance, not all of them capitalized the words.  Some had missing fields.  Some had extras.  I get it, it's a volunteer project.  I tried to fix this, but it was too large of a task without significant help.

I can go back and update the .info file to match what TC requires.  Is there a template somewhere to use by chance?

In regards to the compatibility with the existing tools and optional dependencies, I can understand your request.  But that functionality isn't present, so there's nothing to be compatible with.  If the tce-* scripts would like to incorporate that form of processing from my package manager, they are more than welcomed to do so - I do not mind.  But I will say that it may involve a little bit of work to incorporate as my package manager does not share the same code as the original tce-* scripts.


There's a switch to install them as well.  I know this won't help you, but it was something I thought about and incorporated.  There's also the ability to install certain files out of a package instead of the entire contents.

It's good to see these new ideas, but for my use I'd want things to still work with existing tools such as tce-ab and tce-update. Especially when it comes to things like the formatting of info files for extensions in the official repo.

Thanks, I agree!  New ideas always propel tech forward.  Currently pax has no ability to search the repo so the tce-ab script would still be required.  I assume that tce-update is used to update existing packages?  If so, this tool has been replaced within pax, although it would presently require 2 commands instead of 1.  A future update will resolve this, as well as add the ability to have this whole process automated if desired.

One of the other desired features was the ability to unload/uninstall packages.  TC currently has no ability to do so, but you can with pax.
9
TCE Talk / Re: New package manager
« Last post by wysiwyg on January 28, 2026, 09:24:22 PM »
There are some files with information:
Code: [Select]
dep.db.gz Lists each extension followed by its direct dependencies.
info.lst Lists which extensions are available in the repo.
md5.db.gz Lists md5sum for each extension.
provides.db Lists which files each extension provides including their paths.
sizelist Lists how big each extension is.
tags.db.gz Lists which tags show up in each extensions .info file.

Hey Rich, thanks for the reply!

So then it basically does download the entire repo's worth of non-software package files.  This does seem very odd to me for several reasons...

First, there is a pinned post at the top of this board saying not to abuse the bandwidth that is generously being donated to the project.  Yet the way these default tools work is by doing just that.  Even with using zsync, that would still fall under that category - at least in my eyes.  Without putting these files somewhere that they get saved, they would have to be re-downloaded every time a device reboots.  Again, I would say that a server-side script is much more efficient in this regard.  One could be crafted using simple grep and sed calls, removing even the need for a database server.  Then a small script could be created to simply call the URL with the proper parameter.  This would involve the addition of something like cURL, but it would be far more efficient (in both storage space and bandwidth) than the current solution.

The second point that stands out to me is the fact that TC takes great strides at being as small as possible, yet to perform this task with the existing package manager, it has to bloat the system with the entire software library.  The fact that TC attempts to achieve this slim profile is actually one of the reasons why I incorporated the ability to install specified files from packages instead of the whole package.

It just seems odd to me that this was the direction that was taken based on the goals of the project.  I'm not complaining, I'm just pointing out these oddities.
10
TCE Talk / Re: New package manager
« Last post by CNK on January 28, 2026, 08:58:09 PM »
How does it acquire the data to search?  I would presume it downloads all the .info files for all the packages...  Without a server-side search script of some type, it's eating up bandwidth.

For files contained in extensions there's a provides.db.gz file in the repo that's downloaded initially to the tce directory then checked for updates using zsync (which only downloads changed parts) on each run. Check it yourself by running "less /usr/bin/provides.sh". There's also a more sophisticated version of the script available with the provides.tcz extension.

As I examined here, the provides.db.gz file is downloaded initially when that's present on the mirror using Zsync, even though it looks in the script like the uncompressed provides.db file is used.

For keywords there's a tags.db.gz file with all the tags for each extension in the repo, which is downloaded by the search.sh script.

The package manager I just uploaded to the repo can list optional dependencies in the package .dep files (using the format [optional.tcz|installed.tcz]).

OK, but changes to the .dep file format should really be compatible with the tools in the base system, or else this is really still belongs in a fork of Tiny Core Linux.

I see you've already submitted a differently formatted info file for "pax", missing lots of the usual fields and omitting the upper-case letters at the start of fields. I expect this is incompatible with the programs generating these "db" files, hence "pax.tcz" is not in the tags.db.gz file, and therefore doesn't get found when searching with tce-ab. I don't know whether there's an issue with adding fields to the "info" files, but it seems obvious that you should be still including the existing ones in the same way as others. "Title:" should be the extension file name, but you're using "title:" for what should be in the "Description:" field, for example.

"Size:" isn't there in any form, and it's a field I often look for in the extension browser.

There's a switch to install them as well.  I know this won't help you, but it was something I thought about and incorporated.  There's also the ability to install certain files out of a package instead of the entire contents.

It's good to see these new ideas, but for my use I'd want things to still work with existing tools such as tce-ab and tce-update. Especially when it comes to things like the formatting of info files for extensions in the official repo.
Pages: [1] 2 3 ... 10