Wow, thanks again, esp. for the last of those, which will definitely be on my 
reading list. I don't particularly know either Go or Rust either (just C, C++, 
a smidgen of Java and Swift, PL/I and a bit of COBOL and FORTRAN and various 
assembler, ksh, perl, awk, SQL and some other query languages, etc), but I can 
see the sense of the choice of Rust for a balance of speed and safety (although 
were it me, I might be old school and tempted by Ada); it's obvious if not 
entirely true to blame at least some of the slowness on Python, although 
usually choice of algorithms accounts for more than choice of language.

> On Mar 5, 2023, at 11:57, Till Wegmüller <toaster...@gmail.com> wrote:
> 
> No not quite,
> 
> You can check my go port for formats and some incomplete server code 
> https://github.com/Toasterson/pkg6-go
> 
> My C++ port attempt for sax parsing and history format implementation
> https://github.com/Toasterson/pkg6
> 
> And my current rust port for Manifest reading code and an attempt to make 
> things faster
> https://github.com/OpenFlowLabs/ips
> 
> And the docs of the original for details from the Original developers fom 
> 2011.
> https://github.com/OpenIndiana/pkg5/tree/oi/doc
> 
> In there is a complete manual how everything works and Implementation details 
> and notes from the devlopers about the algorithms and the original reasons 
> why things are why they are. There is a t least conference 20 talks worth of 
> reading in there.
> 
> -Till
> 
> 
> On 05.03.23 17:47, Richard L. Hamilton wrote:
>> Thanks! That covers the useful part of my questions; for curiosity details I 
>> can always look at the source code. :-) Unfortunately for a more than casual 
>> overview, I'd have to learn Python. :-(
>>> On Mar 5, 2023, at 11:19, Till Wegmüller <toaster...@gmail.com> wrote:
>>> 
>>> Hi
>>> 
>>> IPS works on images of the OS. And it does so in an Atomic way. Speed is 
>>> not the main goal. Stability is.
>>> 
>>> If you want to speed up the time it is usually good to add more RAM and 
>>> faster disks, as IPS consumes a lot of memory resolving dependencies. And 
>>> doing Catalog operation. The Actual update is alsmost instant.
>>> 
>>> A lot of the phases during package actions are spent in internal 
>>> bookkeeping things which are simply slow on OpenIndiana due to how IPS was 
>>> initially designed with releases and not rolling release. This can be fixed 
>>> in the future but I did not have time to do anything there. A update would 
>>> require a couple months worth of work and currently nobody is paying for 
>>> that. It's good enough for people as it is.
>>> 
>>> The stages you see are:
>>> - Downloading and updating cached JSON catalogs of all packages available 
>>> (this usually takes the longest)
>>> - instrumenting beadm
>>> - downloading manifest files
>>> - Downloading and copying files (uncomress) into place as described by the 
>>> manifests. (check the contents with `pkg contents -m`
>>> - Creating a search index for pkg search actions (this also takes a long 
>>> time)
>>> 
>>> Boot environments are created on updates that update more than one package. 
>>> The package can inform IPS if a new boot environment is required. 
>>> Installation uninstall etc. do not require a new boot environment.
>>> 
>>> Hope this helps
>>> Till
>>> 
>>> On 05.03.23 16:41, Richard L. Hamilton wrote:
>>>> Given the output
>>>> ----- output begins ------
>>>> root@openindiana:~# pkg update
>>>>             Packages to update: 375
>>>>        Create boot environment: Yes
>>>> Create backup boot environment:  No
>>>> DOWNLOAD                                PKGS         FILES    XFER (MB)   
>>>> SPEED
>>>> Completed                            375/375     5209/5209  181.4/181.4  
>>>> 878k/s
>>>> PHASE                                          ITEMS
>>>> Removing old actions                       1015/1015
>>>> Installing new actions                     1017/1017
>>>> Updating modified actions                  6585/6585
>>>> Updating package state database                 Done
>>>> Updating package cache                       375/375
>>>> Updating image state                            Done
>>>> Creating fast lookup database                   Done
>>>> Updating package cache                           2/2
>>>> A clone of openindiana-2023:03:03 exists and has been updated and 
>>>> activated.
>>>> On the next boot the Boot Environment openindiana-2023:03:05 will be
>>>> mounted on '/'.  Reboot when ready to switch to this updated BE.
>>>> Updating package cache                           2/2
>>>> ---------------------------------------------------------------------------
>>>> NOTE: Please review release notes posted at:
>>>> https://docs.openindiana.org/release-notes/latest-changes/
>>>> ---------------------------------------------------------------------------
>>>> ----- output ends -----
>>>> what do the various phases mean? And what drives the decision whether to 
>>>> create a new boot environment, or a backup boot environment (or maybe 
>>>> neither)?
>>>> Knowing those might be helpful if anything went badly wrong (although the 
>>>> simplest remedy would be to fall back to a previous boot environment!) or 
>>>> if one intended to create a package, and would certainly be more 
>>>> satisfying waiting for the slower phases to complete, being able to say to 
>>>> oneself what it was doing then.  Oh, and why does "Updating package cache" 
>>>> appear twice?
>>>> Updates on Solaris 11 and derivatives (OpenIndiana, etc) are certainly 
>>>> very robust (if packages and repositories are correct!) and provide 
>>>> generous means of recovery. But they do seem to be quite slow compared to 
>>>> e.g. either Red Hat based or Debian based Linux methods (yum or apt, or 
>>>> the underlying local-only facilities). That's not counting download time 
>>>> either (since repository servers are not all equal).
>>>> _______________________________________________
>>>> openindiana-discuss mailing list
>>>> openindiana-discuss@openindiana.org
>>>> https://openindiana.org/mailman/listinfo/openindiana-discuss
>>> 
>>> _______________________________________________
>>> openindiana-discuss mailing list
>>> openindiana-discuss@openindiana.org
>>> https://openindiana.org/mailman/listinfo/openindiana-discuss
>>> 
>> _______________________________________________
>> openindiana-discuss mailing list
>> openindiana-discuss@openindiana.org
>> https://openindiana.org/mailman/listinfo/openindiana-discuss
> 
> _______________________________________________
> openindiana-discuss mailing list
> openindiana-discuss@openindiana.org
> https://openindiana.org/mailman/listinfo/openindiana-discuss
> 


_______________________________________________
openindiana-discuss mailing list
openindiana-discuss@openindiana.org
https://openindiana.org/mailman/listinfo/openindiana-discuss

Reply via email to