MorphUp Package Manager 1st public beta
  • Acolyte of the Butterfly
    Acolyte of the Butterfly
    naTmeg
    Posts: 135 from 2004/2/8
    Introduction
    ============
    To use applications on AmigaOS/MorphOS users have very often to go to several different websites, download, extract and install the files manualy. This is time consuming and can lead to a messed up system.

    MorphUp is a package manager to solve this problem. It is implemented in two parts, the generator and the client. The generator is used to generate the packages, which can be hosted on any http-server and the client is used to fetch them and handle them, on the target machine...

    Features
    ========
    Overall features over both applications:

    Packagesystem
    -------------
    - Packages can be grouped by type.
    - Theoreticaly unlimited packages per group and unlimited dirs/files per package.
    - Can handle file size up to (the DOS limitation of) 2 GB.
    - Extraction of files without the need of unpacking the whole package.
    - Real directory structures in packages.
    - 3 different package types.
    - Full packages, to transfer a huge amount of files at once.
    - Single packages, to safe bandwitch if only a few files need to transfered.
    - Link packages, to refer to other archives.
    - Full packages automaticly split into parts if they grow too larger while generation.
    - Dynamic block compression based on zlib.
    - Differentiation between system and application files.
    - Tag-based saving to easy add things later.

    GUIs
    ----
    - Multithreaded MUI applications, can handle multiple indexes at same time.
    - Many editing functions like: add, remove, makedir, add recursive...
    - Cut&Paste edit mode, even over different packages.
    - Dynamic context menus.
    - Controlable through application menus, contextmenus, keyboard.

    Other
    -----
    - Configurable datatype system.
    - Configurable data classes system, to avoid hardcoded paths.
    - Configurable package classes system.
    - Uses XAD system to support many types of archives in link packages.
    - Packages can have a picture, either JPG or PNG/PNG + alpha
    - Multilevel log system with possibility to log to disk.
    - Small memory usage.

    Grab it HERE
  • »22.12.05 - 14:03
    Profile Visit Website
  • Priest of the Order of the Butterfly
    Priest of the Order of the Butterfly
    eliot
    Posts: 564 from 2004/4/15
    Great, looks very good.
    But now i am missing some server ;)
    regards
    eliot
  • »22.12.05 - 15:54
    Profile
  • Acolyte of the Butterfly
    Acolyte of the Butterfly
    naTmeg
    Posts: 135 from 2004/2/8
    You can test with this one:

    http://member.ycn.com/~hausrup/morphup/morphos/index_mos.pmi
  • »22.12.05 - 16:31
    Profile Visit Website
  • Leo
  • Order of the Butterfly
    Order of the Butterfly
    Leo
    Posts: 417 from 2003/8/18
    @naTmeg: it seems to work *very well*...

    Some questions though:

    .With the server, when adding files to a package, is there a way to add a complete directory and its subdirectories ?
    => Pressing "all files" on the requester only selects and adds files found in the selected directory.

    If not, that's a suggestion :)

    .Where are the package description & picture displayed in the Client ? I created a package, put in on a server and run the client: I was able to see its contents, name, and download it but its description and picture didn't appear anywhere...

    .Is there a way to execute a script at the end of the installation of a package ?

    If not that's another suggestion :)

    => We could for example imagine a script that adds the newly installed application on the desktop, or on a panel if the user wants to... The application could also be launched after the installation is finished. And what if an assign is needed ?

    Keep up the great work !

    Leo.
    Nothing hurts a project more than developers not taking the time to let their community know what is going on.
  • »22.12.05 - 16:57
    Profile Visit Website
  • Acolyte of the Butterfly
    Acolyte of the Butterfly
    naTmeg
    Posts: 135 from 2004/2/8
    @leo:

    The answers for your questions are in the context menus. They built dynamic for every entry/type selected :)
  • »22.12.05 - 17:16
    Profile Visit Website
  • Acolyte of the Butterfly
    Acolyte of the Butterfly
    pixie
    Posts: 147 from 2003/9/5
    From: Am*ga
    Congratulations to all involved! :-)

    [ Edited by pixie on 2005/12/23 0:37 ]
    pixie - writing from a paradise called Portugal
  • »22.12.05 - 18:20
    Profile
  • Paladin of the Pegasos
    Paladin of the Pegasos
    Acill
    Posts: 1914 from 2003/10/19
    From: Port Hueneme, Ca.
    I've been waiting for this one. Can it be used in its current state to look at my system and then go look for what I need to update? Cant wait to see it it action.
    Powermac Dual 2.0 GHZ G5 PCI-X (Registration #1894)
    Powerbook 1.67GHZ
    Powermac Dual 2.0 GHZ G5 PCIE (Registration #6130)
    A4000T CSPPC, Mediator
    Need Repairs, upgrades or a recap in the USA? Visit my website at http://www.acill.com
  • »23.12.05 - 03:17
    Profile Visit Website
  • Order of the Butterfly
    Order of the Butterfly
    Yomgui
    Posts: 348 from 2004/8/31
    From: Québec - Canada
    Congratulation!

    I've not tested yet, but I've a question: does it use MD5 to check files version or/and version tag ($VERS)? Because not all files have a version tag.
    And now... next project!
  • »23.12.05 - 08:55
    Profile Visit Website
  • Acolyte of the Butterfly
    Acolyte of the Butterfly
    naTmeg
    Posts: 135 from 2004/2/8
    @Yomgui:

    it uses MD5 for checking files valid, and it uses $VER, if found :)
  • »23.12.05 - 09:43
    Profile Visit Website
  • Order of the Butterfly
    Order of the Butterfly
    BatteMan
    Posts: 282 from 2003/2/24
    From: France
    naTmeg :  Great Job ! Really !
    But, one thing is missing : a description of the package to know what we're going to install.

    --
    /me is going to put some money on the bounty.
    Proud user of MorphOS since 2003 !
  • »23.12.05 - 10:10
    Profile Visit Website
  • Acolyte of the Butterfly
    Acolyte of the Butterfly
    naTmeg
    Posts: 135 from 2004/2/8
    @BatteMan:

    You can see the descrition if you enable the "Info-Group" in the client. Press RMB in the left list and select "Show info group" from context menu. Cycle the "Mode" from "Picture" to "Info". Now you should see a short/long description... :)
  • »23.12.05 - 11:04
    Profile Visit Website
  • Order of the Butterfly
    Order of the Butterfly
    roschmyr
    Posts: 206 from 2003/2/20
    From: Oberhausen/Ger...
    and another package to test
    Thanks Krashan
    http://teleinfo.pb.bialystok.pl/~krashan/software/tte/files/ttengine.pmi

    [ Edited by roschmyr on 2005/12/25 18:14 ]
  • »25.12.05 - 10:04
    Profile
  • MorphOS Developer
    Krashan
    Posts: 1107 from 2003/6/11
    From: Białystok...
    I've mailed naTmeg already about agreeing on MIME type for MorphUp packages (my proposal is 'application/x-morphup'), so we can arrange browsers (after adding some functionality to MUClient) in such a way that click on *.pmi link will start MUClient automatically and add the new source. Of course there is some problem, you have to be an administrator of a web server to effectively add a new MIME type (which is the case for me :-) ).
  • »25.12.05 - 10:55
    Profile Visit Website
  • Acolyte of the Butterfly
    Acolyte of the Butterfly
    naTmeg
    Posts: 135 from 2004/2/8
    How to configure IBrowse to directly load a .pmi into muCl:

    1. Get latest client via MU
    1. Open IB/Settings/Ext.Viewer
    2. Add a new MIME type:
    - Type: application/x-morphup
    - Ending: pmi
    - Action: External Viewer
    - Viewer: muCl
    - Args: ADDSERVER %r

    ...before pressing a .pmi-link make sure muCl is NOT running, because only one instance is allowed. If you try to add a index that is already in the listtree you will get the error-msg "This server/index already exists".
  • »25.12.05 - 13:32
    Profile Visit Website
  • Moderator
    guruman
    Posts: 461 from 2003/7/22
    First of all, very nice work! It seems to be already usable and useful, therefore I made a (small) well deserved donation to the bounty! - the bounty is still open for donors - hint! hint! ;-)

    I'd have a couple of suggestions:
    - I think the client should report an up-to-date packet if the only diffs are located in the icons: for instance, you get an orange sign if you change a tooltype, and this would happen if you changed the icon with one taken from the Contrib/ dir often found in the archives. Of course you can easily check everything from MuCl, but I'd like the check to report the green signs in these cases, so that I don't have to further control.
    - is it possible to have the possibility to create a packet and a description, save it in some kind of Packet Manager Description file, and then create/update an index (.pmi) just adding new "descriptions" (say, .pmd or anything else)? This would be useful for sites like MorphZone or morphos-news, and possibly AmiNet, if it was easy it wouldn't give much work to the moderators (even better if it was semi-automatic), and with just a couple of Index we would check the majority of software. Moreover, not all the authors would need some webspace of their own to support MorphUp. Yet, by adding the "description" themselves, there wouldn't be a duplication which would be confusing: all the sites would use that one. Moreover MuCl might cross check packages on different sources to get the latest, even if sometimes not all the sites have an updated one.
    - this is more a question: if the user has a newer system file than the one that's going to be installed, is copy skipped by default?
    - is it possible to create some cross-dependencies between packets? For instance, YAM needs some MUI classes not included in the archive: I think they should be "linked" (and downloaded with YAM itself anytime they are needed and not present/obsolete).
    - I agree with the suggestion to let some scripting be executed as part of the installation process (even just simple DOS scripts). This should be carefully planned though, in order to prevent malicious exploits (although any unverified script is potentially dangerous).
    - I would add some subclasses to the Package Classes: I have subdirs in Graphics and Games, for instance... It should be possible to discriminate between Picture Viewers/Image Processors/Paint Programs and 3D, or between SDL ports/Arcade/FPS, or between Browsers/P2P/Mail/Instant Messaging. In order not to give too much hassle to the user, uspecified subclasses should "backfall" to their principal class, so, if you have a single level tree you wouldn't need to specify anything more than now. In my case, a check for ShowGirls would fail as it stands now...

    That's all, for now ;-) . I'd like to hear also Dr.Morbius and tokai opinion about this program, since they wrote a good article about Installation Procedures...

    Kind regards,
    Andrea
  • »25.12.05 - 18:03
    Profile
  • pOS
  • Order of the Butterfly
    Order of the Butterfly
    pOS
    Posts: 216 from 2003/11/14
    From: Bavaria
  • »25.12.05 - 21:52
    Profile Visit Website
  • Acolyte of the Butterfly
    Acolyte of the Butterfly
    naTmeg
    Posts: 135 from 2004/2/8
    @pOS:
    >How can I define a local directory to install the packages from instead from an internet location ? Do I have to us an URL like file://Work:Downloads/ ?
    What do you mean by this? If you want to handle .pmi files from disk, use "Add Index" button. This loads local (on your machine) indexes ie. for testing before upload.

    >Is it possible to install packages also if the index file doesn't exist (any more) ß
    No, thats not possible so far, but should be a option in the future.

    >Can I extract package files manually, too ?
    Why you should do that? I see no reason in doing this.


    @guruman:
    >I think the client should report an up-to-date packet if the only diffs are located in the icons...
    Yes, in the future there should be an alternate state of the icons, showing the install-state, not only the file-state like now.

    >Is it possible to have the possibility to create a packet and a description...
    Thats a good point, but sounds a bit complicated to implement in the current state. Such complexity was not planned in the beginning, was not in the bounty requirements.

    >I agree with the suggestion to let some scripting be executed as part of the installation process...
    This option is discussed in many ways already and i agree with you. Could be implemented after 1.0...

    >I would add some subclasses to the Package Classes...
    Ok, but then one _must_ give a path for such a subclass. There is no difference to "Install at..." then.

    Thanks for your feedback :)
  • »25.12.05 - 23:35
    Profile Visit Website
  • pOS
  • Order of the Butterfly
    Order of the Butterfly
    pOS
    Posts: 216 from 2003/11/14
    From: Bavaria
    Quote:


    naTmeg wrote:
    @pOS:
    What do you mean by this? If you want to handle .pmi files from disk, use "Add Index" button. This loads local (on your machine) indexes ie. for testing before upload.


    That was my question. Ok, will give it a try.

    Quote:


    >Can I extract package files manually, too ?
    Why you should do that? I see no reason in doing this.



    Some background:
    1.As I only have a 58K modem connection at home, I often use you another computer to downlaod archives/packages than the one they are to be installed.
    2.I often don't want to install immediately after download.
    3.Sometimes I like to have a look at the contents of an archive *before* I install it, especially if some system components might be changed.
    Now imagine, MorphUp becomes such a success that some programms are not offered as .lha archive any more but only as MorphUp package. Then it would be nice to still have the ability (at least sometimes) to extract it manually and check its contents.

    One more question/suggestion.
    If I understood right, links are meant to create dependencies between packages ? If so it would be nice to make those dependencies a bit more flexible.
    I'll give you an example:
    You have a package for MyNewMP3Player. The programm requires mpega.library. There are two implementations of this library, the original one and the one based on libmad. So MyNewMP3Player.package should have a dependency that ITHER mpegorig.package OR mpeglibmad.package must be installed before. And of course, if someone already has installed his favourite implementation it shouldn't automatically be overwritten by another one.
  • »26.12.05 - 18:52
    Profile Visit Website
  • Acolyte of the Butterfly
    Acolyte of the Butterfly
    naTmeg
    Posts: 135 from 2004/2/8
    @pOS:
    >Sometimes I like to have a look at the contents of an archive *before* I install it...
    Well, with the client you see all contents and descriptions even before downloading the package.

    >If I understood right, links are meant to create dependencies between packages ?
    No. Link-packakages are use to refer to antoher archives, ie. files on aminet. At generation, you must give the URL to the archive you want to refer to. Then this archive is
    temporary downloaded by the client and converted to a index file. So, if you install such a package it grabs from aminet instead from ie. your HP. People can use this if they have no hostspace. Its just a link to another archive of any type, like lha, lzx, zip...
  • »26.12.05 - 21:32
    Profile Visit Website
  • Butterfly
    Butterfly
    Posts: 72 from 2003/2/25
    From: Auckland New Z...
    guruman wrote:

    "- I would add some subclasses to the Package Classes: I have subdirs in Graphics and Games, for instance... It should be possible to discriminate between Picture Viewers/Image Processors/Paint Programs and 3D, or between SDL ports/Arcade/FPS, or between Browsers/P2P/Mail/Instant Messaging."

    I've made up an alternative to the old Aminet dir structure (with help from Felix Schwarz and others), that is much more user-friendly and up-to-date. Feel free to use and abuse it! :) (And it could make a good category standard for the Package Manager- mail me if you want a better formatted version):


    Amiga/AROS/MorphOS App Categories V1.3 (28/12/05)


    Audio


    Audio Utilities

    Sample Editing/Manipulation

    Midi/Mod Sequencing Editors

    Miscellaneous Audio Programs

    MP3 Grabbers

    MP3/Midi/Mod/Internet Radio Players



    Business


    Accounting Programs

    Application Service Provider Programs (ASP)

    Calendar Programs

    Database/Data Mining Programs

    E-Commerce Software

    Enterprise Resource Planning Programs (ERP)

    Miscellaneous Business Programs

    Personal Information Managers



    Communications


    Communication Utilities

    E-Mailers

    Fax Programs

    IRC/FTP/SSH/Version Control Programs

    Instant Messaging Programs/Internet Phone/Video Conferencing Software/Webcams

    Miscellaneous Communication Programs

    Peer To Peer File Sharing Programs

    IP Stacks/Firewalls

    Web Browsers



    Data Storage/File Management


    CD/DVD Burning Programs/Utilities

    File Management Programs

    Miscellaneous Data Storage Programs

    PDA Utilities

    Storage Utilities:
    Archivers/Dearchivers
    Backup Utilities
    Encryption Programs
    Optimiser/Defrag Utilities
    Miscellaneous
    Monitors



    Demos


    Intros

    Magazine

    Miscellaneous Demos

    Demo Parties

    Slideshows

    Sound



    Development Tools


    Languages:

    Arexx
    Compilers/Interpreters
    Source
    Utilities

    Assembler
    Assemblers/Disassemblers
    Source
    68k
    PPC
    x86
    Utilities

    Basic
    Compilers/Interpreters
    Source
    Utilities

    C/C++/Objective-C/C#
    Compilers
    Source
    Utilities

    E
    Compilers/Interpreters
    Source
    Utilities

    Fortran
    Compilers/Interpreters
    Source
    Utilities

    Java
    Compilers/Interpreters
    Source
    Utilities

    JavaScript
    Compilers/Interpreters
    Source
    Utilities

    LISP
    Compilers/Interpreters
    Source
    Utilities

    Pascal
    Compilers/Interpreters
    Source
    Utilities

    PHP
    Compilers/Interpreters
    Source
    Utilities

    Python
    Compilers/Interpreters
    Source
    Utilities

    Ruby
    Compilers/Interpreters
    Source
    Utilities

    Development Libraries

    Development Utilities

    Editors/Integrated Development Environments

    GUI Builders

    Miscellaneous Development Programs



    Games


    Beat-em-up Games

    Board Games

    Card Games

    Emulators (Arcade, Sega, Nintendo etc)

    First-Person Shooters

    Game Cheats and Walk-Throughs

    Game Utilities

    Kids Games

    Miscellaneous Games

    Movement/Webcam Games

    Platform Games

    Puzzle Games

    Quiz Games

    Role Playing Games (RPGs)

    Rhythm/Music Games

    Singing Games

    Shoot-em-up Games

    Sports Games

    Strategy Games

    Target (Shooting) Games

    Tetris/Block/Bubble Games

    Text Based Adventure Games

    War/Vehicle/Space Simulators



    Graphics/Video Programs


    3D Rendering/Editor Programs

    Animation/Video/DVD Players

    Backdrops

    CAD Programs

    Digital Camera/Video Recorder Utilities

    DVD Authoring Programs

    Graphic Utilities

    Paint Programs/2D Animators/Image Processors

    Personal Video Recorders/Streaming Video Players

    Fractal Programs

    Miscellaneous Graphic/Video Programs

    Multimedia Presentation Programs

    Picture Viewer/Database Programs

    Scanning Programs

    Screensavers

    Scalable Vector Graphics Programs

    TV Tuners

    Video Editing Programs

    Video Titling Software

    Video Utilities



    Scientific


    Atlases, Star Charting Programs

    Geographic Information Software

    Mathematics Programs

    Miscellaneous Scientific Programs



    System


    Classes

    Datatypes

    Drivers:
    Audio Drivers
    Bus Drivers
    Camera/Video Camera/WebCam Drivers
    CD/DVD Drivers
    Controller Drivers
    Data Storage Drivers
    Drawing Tablet Drivers
    Filesystem Drivers
    Firewire Drivers
    Graphics Drivers
    Keyboard Drivers
    Miscellaneous Drivers
    Modem Drivers
    Monitor Drivers
    Mouse Drivers
    Network Drivers
    PIPE Drivers
    Printer Drivers
    Scanner Drivers
    Serial/Parallel Drivers
    Tape Drive Drivers
    Touchscreen Drivers
    TV Tuner Drivers
    Wireless Drivers
    USB Drivers

    Fonts

    Libraries

    Handlers (L: dir)

    Keyboard Maps (Keymaps)

    Miscellaneous System Programs

    MUI Window/Gadget environment
    Reaction Window/Gadget environment



    Text/Word Processing, Desktop Publishing, Office programs


    Font Utilities

    Miscellaneous Text Programs

    Office Programs/Word Processors/Desktop Publishers/HTML Editors

    Print Programs

    Spreadsheet Programs

    Spell Checkers/Thesauruses

    Text Utilities

    Text Viewers/Editors



    Utilities


    Ambient Utilities

    Backdrops

    Boot Utilities

    Calculators

    Clocks

    Miscellaneous Utilities

    Operating System/Hardware Emulators

    Shell (CLI) Programs

    System Monitors/Utilities

    Virus/Spyware Checkers

    Workbench Utilities






    [ Edited by Ants on 2005/12/28 23:03 ]
    - Ants
  • »28.12.05 - 03:52
    Profile Visit Website
  • Acolyte of the Butterfly
    Acolyte of the Butterfly
    naTmeg
    Posts: 135 from 2004/2/8
    @Ants:

    Thanks to all involved for that nice collection :)
  • »30.12.05 - 04:10
    Profile Visit Website