Slashdot Mirror


Ubuntu Developing Its Own Package Format, Installer

An anonymous reader writes "While complementing Debian APT/DPKG, Canonical is now developing their own package format. The new package format has promised highlights of having no dependencies between applications, each package would install to its own directory, root support wouldn't always be required, and overall a more self-contained and easier approach for developers than it stands now for Debian/Ubuntu packages. The primary users of the new packaging system would be those distributing applications built on the Ubuntu Touch/Phone SDK. The initial proof-of-concept package management system is written in Python and uses JSON representation." This quote from the post by Canonical's Colin Watson bears repeating: "We'll continue to use dpkg and apt for building the Ubuntu operating system, syncing with Debian, and so on."

14 of 466 comments (clear)

  1. troll bait headline by Anonymous Coward · · Score: 5, Insightful

    A better headline:

    Ubuntu Phone apps will use a different package format than debian/dpkg/apt

    I guess that's not really as exciting though

  2. More Flexibility? by organgtool · · Score: 5, Insightful

    each package would install to its own directory

    Would it allow users to install multiple versions of the same application from packages? One of my gripes with Linux is that it's not easy to test new or beta versions of software since there is no easy way to install from packages alongside the existing (stable) version. Yes, I know that I could build the app from source, but that can be quite a hassle sometimes.

    1. Re:More Flexibility? by interval1066 · · Score: 5, Informative

      Microsoft solved this (partially) using a centralized registry...

      Um, the MS registry is a huge pain in the butt for developers and M$ knows it, but they can't get rid of it becuase its too ingrained. Getting rid of the registry was a huge selling point for Windows 8, as it was for Vista... and so on. I dare you to ask me why... if you don't realize its a huge honey pot for virii and hackers you have no business even asking. Linux DOES INDEED have a system for library control, its called pkg_config and it works very well. Its not my problem if developers are too lazy to use it. 90% of linux apps I've ever envountered use it, so don't come whining to me there's no soluton this lib hell of which you speak. I do quite well with Linux, thank you.

      --
      Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
    2. Re:More Flexibility? by Anonymous Coward · · Score: 5, Informative
      Your ignorance of Linux is showing. Please refrain from commenting about things you do not understand.

      Can you please point out which setting in the man page allows you to set this, oh great wizard of Linux? Because I think you're just being a contrarian right now, and haven't actually read the damn page.

      You won't find that in the ldconfig man page because it's provided by the filesystem. This is a small snippet from the contents of my /usr/lib:

      libboost_python-2.7-1_49.so
      libboost_python-2.7-1_49.so.1.49.0
      libboost_python-2.7-mt-1_49.so
      libboost_python-2.7-mt-1_49.so.1.49.0
      libboost_python-2.7-mt.so
      libboost_python-2.7.so
      libboost_python-3.2-1_49.so
      libboost_python-3.2-1_49.so.1.49.0
      libboost_python-3.2-mt-1_49.so
      libboost_python-3.2-mt-1_49.so.1.49.0

      Do you see what is happening there? Have you ever actually looked inside /lib or /usr/lib of a *nix system? Did you grasp what you saw? One application may need /usr/lib/libboost_python-2.7.so while another needs /usr/lib/libboost_python-3.2-1_49.so. Both get what they need.

      In Linux the library's version is part of its filename. There is no "dll hell". DLL Hell in Windows was caused by a dll with a given filename being replaced by a different version with the *same filename* in the *same location*. I don't think you really understand the DLL Hell situation.

      There's no man page for knowing what you're talking about.

    3. Re:More Flexibility? by Anonymous Coward · · Score: 5, Insightful

      /etc is the registry, and it is no more or less centralized than the Windows registry (which consists of multiple files).

      The difference is that /etc is implemented using two of the most mature and well understood pieces of the system: a file system directory hierarchy and text files.

      The windows registry, in contrast, is implemented using a limited and clunky database, which is difficult to manage and drives even experienced users to frustration.

      And speaking of "rich access control". /etc has extremely robust access control via the filesystem. Access control that is well tested, well documented and well understood.

  3. Re:Good by buchner.johannes · · Score: 5, Insightful

    Also, this might be the dawn of malware for Linux on the PC.

    --
    NB: The message above might reflect my opinion right now, but not necessarily tomorrow or next year.
  4. Re:but... WHY? by amorsen · · Score: 5, Informative

    We need it because while current packaging systems are great for central control, they are bad for actually letting users contribute.

    a) You cannot submit a bug to a developer, get a fixed beta release, and install that in the packaging system (unless you know how to handle spec files)
    b) You cannot do parallel installations of newer (or older) versions for testing unless the package is built specifically for that
    c) It is difficult to make distribution-independent packages, so users become dependent on the distribution for all software
    d) Almost all packages require root, the packaging system cannot track software installed by users themselves

    On the other hand, switching to a Mac-style packaging system has at least these problems:

    1) Security updates to common code are unlikely to actually get applied to all packages
    2) Some libraries will not be shared, costing extra memory and cache footprint
    3) Centralized control over what software is installed suddenly becomes difficult
    4) Without dependencies you need to define the minimal environment that software can depend on. LSB tried to do that and failed.

    --
    Finally! A year of moderation! Ready for 2019?
  5. Re:Good by Jeremiah+Cornelius · · Score: 5, Informative

    Go open a mac .app sometime. Libraries and resources galore can be found. The Systme libraries and frameworks can be over-ridden. like having ~/Library on a per-app basis.

    --
    "Flyin' in just a sweet place,
    Never been known to fail..."
  6. Re:Good by Jeremiah+Cornelius · · Score: 5, Informative

    "Dunno if there's a way to specify that inside Xcode or not, but for our app we use a build script that includes some code like the following. The code uses Apple's install_name_tool utility to modify the application so that instead of pointing to /usr/lib/libsndfile.so, it points to a libsndfile.so path that is in the application's package instead.

    Note this is just a cut-down script excerpt to give you an idea; it will probably require some tweaking before it works for you (and of course you'll need to modify it to operate on other libraries besides libsndfile if that is what you want):"

    #!/bin/bash -e
     
    BINARY="MyAppFolder/MyAppName"
    FRAMEW_FOLDER="MyAppFolder/MyAppName/Contents/Frameworks/"
     
    function DoInstallNameTool {
        xLIB="$1"
        xLIB_NAME="$2"
        xBINARY="$3"
        echo install_name_tool -change \"${xLIB}\" \"@executable_path/../Frameworks/${xLIB_NAME}\" \"${xBINARY}\"
        install_name_tool -change ${xLIB} "@executable_path/../Frameworks/${xLIB_NAME}" "${xBINARY}"
    }
     
    for LIB in $(otool -L "${BINARY}"|grep libsndfile|cut -d '(' -f -1)
    do
        echo "Handling Lib: $LIB"
        LIB_NAME=$(basename "$LIB")
        echo " Adding ${LIB_NAME}"
        cp -Rf "${LIBSNDFILE_DIR}/src/.libs/${LIB_NAME}" "${FRAMEW_FOLDER}"
     
        DoInstallNameTool "$LIB" "$LIB_NAME" "$BINARY"
    done

    http://stackoverflow.com/questions/7470637/dynamic-library-in-application-bundle-mac-os-x

    --
    "Flyin' in just a sweet place,
    Never been known to fail..."
  7. Re:I never got "packaging systems" by cas2000 · · Score: 5, Insightful

    actually, it's something that Windows gets dead-wrong, because executable installer apps (setup.exe and the like) are just plain fucking stupid.

    they're an unfortunate necessity because windows doesn't have, and never has had a decent package management system. and is unlikely to ever get one because the windows software market is primarily commercial and proprietary.

    when you have 10 (or 100 or 500) packages to upgrade on a single system (and then multiply that by 100 or 1000 systems), executing hundreds of installer packages one after another is the worst possible way to do it.

    i've never understood why Windows (or Apple) users tolerate that shit. it's a tedious chore that's ripe for automation - exactly the kind of thing that computers are good at doing and users are bad at doing (due to boredom, fatigue, loss of attention, ignorance, or stupidity)

    which is precisely why linux distros (and other *nixes) don't do it that way. they have packaging systems because systems are consistent, predictable, and easily automated.

    windows users and windows developers often have just the wrong way of looking at things, the wrong mental model of how things work and how they should work.

    I ran across a program for Windows recently called Ninite. It's a multi-app installer and updater. it sounds like a good idea and is. it's a big improvement over the usual click-and-execute for each individual program.

    except the way it works is weird and clumsy:

    you go to their website and select which apps you want to install (from a bunch of internet-available apps, including free software and proprietary freeware like adobe flash), and then it builds you an installer app that you download and run, and it installs and/or upgrades the apps you selected off their website.

    WTF?

    nice starting idea, but the implementation is idiotic. Why not just have one Ninite app that fetches a list of available apps and installer URLs and whatever custom installer scripts ninite needs for them) and allow the user to select which apps whenever they run it?

    i.e. instead of a moronic implementation, actually make a smart and useful implementation that copies good ideas from linux distro installers like apt-get and yum, and re-purposes them for the Windows environment.

    (oh, and adobe are sending cease-and-desist letters and threatening to sue if the ninite developer doesn't remove the ability to install & update downloadable adobe products like flash, so his good ideas and good intentions are fucked by the corporate vermin mindset that dominates the windows software market)

    another thing windows devs don't get is shared libraries (DLLs in windows terminology). Why does every single app have to install their own copy of the MS C++ libraries? or .net? or nvidia physx? and numerous other common library packages? these things are supposed to be shared resources provided and kept up-to-date by the operating system, not bundled with every app that uses them.

  8. Nope.. by Junta · · Score: 5, Insightful

    *If* everyone picked exactly the same lib version, yes.

    In practice, people aren't going to standardize on the same library version.

    Bonus problem: Now each app provider is responsible for addressing a hypothetical libcrytpo vulnerability rather than the distro patching it in one place.

    --
    XML is like violence. If it doesn't solve the problem, use more.
  9. Re:apt by exomondo · · Score: 5, Insightful

    Ubuntu is building their own system for doing it, instead of using APT, which gets them 90% of the way there. Most likely, it will be poorly done, which is the common fate of those who are too lazy to understand existing systems.

    So you're saying Colin Watson is too lazy to understand existing systems? You've never actually looked at commits for APT have you.

  10. Re:grep: command not found by Anonymous Coward · · Score: 5, Insightful

    Anyone on this site who is stumped by grep missing need leave. Now.

  11. Re:Bloat by timbo234 · · Score: 5, Informative

    How about comparing like-with-like instead of new software with software from 10 years ago:
    Ubuntu 12.04 (released 2012): 384MB minimum
    Windows 7 (released 2009): 1GB minimum for 32-bit, 2GB for 64-bit
    Windows 8 (released 2012): 1GB minimum for 32-bit, 2GB for 64-bit

    Plus the minimum requirement for XP was 64MB, with 128MB recommended (http://support.microsoft.com/kb/314865), not 32MB.

    https://wiki.ubuntu.com/PrecisePangolin/ReleaseNotes/UbuntuDesktop#System_Requirements
    http://windows.microsoft.com/en-us/windows-8/system-requirements
    http://windows.microsoft.com/en-us/windows7/products/system-requirements

    --
    Pre-canned Evolution Links for all those Slashdot holy wars.