Package diffs

I've seen quite a few requests by people on dial-up connections for a method to download diff packages instead of full ones.   
Since I have a high speed connection, I havent been too concerned about it, but I am about to roll-out a bunch of new machines and started thinking that downloading diff's of packages might be a good idea after all.
So I thought about it a little bit and have come up with a solution that will work on top of what is already there.  No changes would be needed with pacman.   In fact, I've messed around with it for the past couple of hours and am almost done.
Just for the proof-of-concept, I've written it in perl, but if people actually start using it, I might re-write it in C.   
Basically, this is what it does.  There are two parts to it. 
The server Part
I have a perl script on my webserver that runs ever half hour and checks the main ftp.archlinux.org/current and /extra repositories.  It keeps track of each package in there.  When a new package is updated, it downloads it.  Then it looks in one of the other mirrors for the old package that is being replaced, and downloads it.
Then it extracts each package and compares it file by file.  Any file that is new or updated is put in a new folder.  It makes a list of all the new, same, updated, and deleted files.  It then packages all this up into a diffpkg.tar.gz file and stores it on the webserver ready to download (if it is at least 10% smaller than the actual package).  This part is already done although I havent put it on a 30 minutes schedule yet.  Also note, this it is copying any updated or changed file directly.  It is not actually making a diff of each file that is different.
The client Part
The client part is another perl script that would be referenced in the XferCommand setting in /etc/pacman.conf so that it is run first when attempting to download a file.  It will get the package name from the file url, and will look in the users cache to see if there is an older version of the package there.  If so it will try to download a diffpkg from my website.  If there is no diffpkg file there, then it will use wget to download the file using the original url that was passed to it.
If it does get a diffpkg file, then it will open it up, check the pre-requisite package that it was generated from to see if that is the one in the users cache.  If it isn't then it will download the original URL (this could mean extra downloading if the packages are not installed in sequence, but I may have a solution for this).   
It then extracts the cached package into a temporary folder, extracts the diffpkg into another folder, and processes the deleted, updated and new files copying the content into the new package folder.  When it is done, it tarzips it all up and you should now have a package in your cache created from the diff set that is very similar to the package that would have been downloaded in entirety.   Pacman would then install the package as if it had been downloaded.  It shouldnt care if it was downloaded directly or if it was generated from the diffpkg.
Of course, this will only really be of benefit for those package upgrades that really only change or add a few files.   
I just tested this on the neverball package that was just updated.  The old pkg was 9mb, the new pkg was 14mb, the diffpkg was 12mb.  So it would only save you 2mb of download.   Not really a whole lot, but to some people it may be helpfull.
Thoughts?  Questions?  Anyone interested in testing it out when I'm done?

sarah31 wrote:this has come up several times and there was no satisfactory solution. it requires a bit more work on an already stressed developer core.
Right, because the thought was to change the existing system to accomodate a diff system.  My idea however, is to add-on to the existing system.  It is automatic, and does not require a developer or maintainer to produce the diff set.
sarah31 wrote:my problems with diff is that you would have to have the contents of the diff available for view. otherwise you could have difficulty convinceing people they are secure.
I'm not sure what you mean.   The files in the diffpkg.tar.gz file is on the webserver, and the contents can be viewed easily. 
sarah31 wrote:how would you do this?
sanity checks on diffs would be much more difficult on diffs i would think.
Oh, I think I see what you mean.  The files in the diff archive, are not diffs themselves.  They are the entire file, unmodified.  the difference between the package and the diffpackage is that the diffpackage is stripped of the files that were the same from the previous version of that package.
I figured that creating a package of diff files to "patch" existing files on the system, would not work because you never really know what files the user has modified unless you can't tell in advance which files are config or editable files and which ones arent... therefore putting a lot of hassle on maintainers and such.   So I figured why not create a system that compares the old package file against the new package file and just tarzip up the files that have changed or added.
so if you install widget-1.0.1-3.pkg.tar.gz and still have it in your /var/cache/pacman/pkg directory, then a new version widget-1.0.1-4.pkg.tar.gz comes along.  This application downloads widget-1.0.1-4.diffpkg.tar.gz and uses it to build widget-1.0.1.4.pkg.tar.gz locally from the old one in the cache.
There are some big limitations in this situation.
Firstly, if the new version of the package is re-compiled with different options, then all binaries in the package will likely be different.  Therefore a diff set would not be of any use, unless there are other files in the package that were not modified.
Secondly, If the user has cleared their cache, then they wont have the local file to build apon.
and Thirdly enough files need to be duplicated (and removed) to produce a savings in download size.   So I am thinking that some of the larger ones might be suitable, but certainly not all packages.
So I am guessing that this diff system would only be of benefit to some people, most likely on a slow dial-up internet connection, and it will only really be of benefit on the very slight updates to packages.   And since some people would be willing to use bzip to gain an extra little bit of compression to save download time, they might be willing to use this system which would probably only get an equivilent boost.

Similar Messages

  • Optional package versus shared library

    I quote from the WL docs...
    "Optional packages differ from Java EE libraries because optional packages can be referenced from any Java EE module (EAR, JAR, WAR, or RAR archive) or exploded archive directory. Java EE libraries can be referenced only from a valid Enterprise Application. "
    Does this mean that javaee libraries can be accessed only from EAR and WAR
    whereas optionalpackage can be accessed from ear,jar , war or rar.....
    in otherwords javaee libraries cannot be accessed from a regular jar or rar...
    if that is the case, I wish they had just said so!

    Hi,
    EAR Shared Library Cannot be referenced by A WAR Application...EAR Shared Library Should be referenced By An EAR Application Only.
    Similarly...a WAR Shared Library cannot be referenced by EAR....So rule:
    EAR Shared library--------should be reffered by EAR Applications
    WAR Shared Libraries ---should be reffered by WAR Applications
    I have developed a Simple TestCase to demonstrate it...Please download it from: http://www.4shared.com/file/219660365/de4e3636/SharedLibrary_TestCase.html
    Thanks
    Jay SenSharma
    http://jaysensharma.wordpress.com/generalweblogic/ (WebLogic Wonders Are Here)

  • Pacman error... why and how do i fix it?

    [root@myhost ~]# pacman -Syu
    :: Synchronizing package databases...
    core is up to date
    extra is up to date
    community is up to date
    :: Starting full system upgrade...
    resolving dependencies...
    looking for inter-conflicts...
    Targets (6): gnupg2-2.0.10-2 grub-gfx-0.97-10 hdparm-9.6-1
    qt-4.4.3-4 tdb-3.2.7-1 smbclient-3.2.7-1
    Total Download Size: 0.00 MB
    Total Installed Size: 105.66 MB
    Proceed with installation? [Y/n] y
    checking package integrity...
    (6/6) checking for file conflicts [###########] 100%
    error: could not prepare transaction
    error: failed to commit transaction (conflicting files)
    grub-gfx: /usr/share/info/dir exists in filesystem
    Errors occurred, no packages were upgraded.
    [root@myhost ~]#
    i have also tried pacman -Syy followed by another pacman -Syu but still nothing
    i have even rebooted and tried again but still the same error
    here is /usr/share/info/dir
    This is the file .../info/dir, which contains the
    topmost node of the Info hierarchy, called (dir)Top.
    The first time you invoke Info you start off looking at this node.
    File: dir, Node: Top This is the top of the INFO tree
    This (the Directory node) gives a menu of major topics.
    Typing "q" exits, "?" lists all Info commands, "d" returns here,
    "h" gives a primer for first-timers,
    "mEmacs<Return>" visits the Emacs manual, etc.
    In Emacs, you can click mouse button 2 on a menu item or cross reference
    to select it.
    * Menu:
    Archiving
    * Tar: (tar). Making tape (or disk) archives.
    Basics
    * Ed: (ed). The GNU line editor.
    Editors
    * nano: (nano). Small and friendly text editor.
    Emacs
    * Autotype: (autotype). Convenient features for text that you enter
    frequently in Emacs.
    * CC Mode: (ccmode). Emacs mode for editing C, C++, Objective-C,
    Java, Pike, AWK, and CORBA IDL code.
    * CL: (cl). Partial Common Lisp support for Emacs Lisp.
    * Calc: (calc). Advanced desk calculator and mathematical tool.
    * Dired-X: (dired-x). Dired Extra Features.
    * ERC: (erc). Powerful, modular, and extensible IRC client
    for Emacs.
    * EUDC: (eudc). An Emacs client for directory servers (LDAP,
    PH).
    * Ebrowse: (ebrowse). A C++ class browser for Emacs.
    * Ediff: (ediff). A visual interface for comparing and merging
    programs.
    * Elisp: (elisp). The Emacs Lisp Reference Manual.
    * Emacs: (emacs). The extensible self-documenting text editor.
    * Emacs FAQ: (efaq). Frequently Asked Questions about Emacs.
    * Emacs Lisp Intro: (eintr). A simple introduction to Emacs Lisp
    programming.
    * Emacs MIME: (emacs-mime). Emacs MIME de/composition library.
    * Eshell: (eshell). A command shell implemented in Emacs Lisp.
    * Flymake: (flymake). A universal on-the-fly syntax checker.
    * Forms: (forms). Emacs package for editing data bases by
    filling in forms.
    * Gnus: (gnus). The newsreader Gnus.
    * IDLWAVE: (idlwave). Major mode and shell for IDL files.
    * IDN Library: (libidn)Emacs API.
    Emacs API for IDN functions.
    * MH-E: (mh-e). Emacs interface to the MH mail system.
    * Message: (message). Mail and news composition mode that goes with
    Gnus.
    * Newsticker: (newsticker). A Newsticker for Emacs.
    * Org Mode: (org). Outline-based notes management and organizer
    * PCL-CVS: (pcl-cvs). Emacs front-end to CVS.
    * PGG: (pgg). Emacs interface to various PGP implementations.
    * Rcirc: (rcirc). Internet Relay Chat (IRC) client.
    * RefTeX: (reftex). Emacs support for LaTeX cross-references and
    citations.
    * SC: (sc). Supercite lets you cite parts of messages
    you're replying to, in flexible ways.
    * SES: (ses). Simple Emacs Spreadsheet
    * SMTP: (smtpmail). Emacs library for sending mail via SMTP.
    * Sieve: (sieve). Managing Sieve scripts in Emacs.
    * Speedbar: (speedbar). File/Tag summarizing utility.
    * VIP: (vip). An older VI-emulation for Emacs.
    * VIPER: (viper). The newest Emacs VI-emulation mode. (also, A
    VI Plan for Emacs Rescue or the VI PERil.)
    * Widget: (widget). The "widget" package used by the Emacs
    Customization facility.
    * WoMan: (woman). Browse UN*X Manual Pages "W.O. (without) Man".
    GNU admin
    * configure: (configure). The GNU configure and build system
    GNU Emacs
    * TRAMP: (tramp). Transparent Remote Access, Multiple Protocol
    GNU Emacs remote file access via rsh and rcp.
    GNU Libraries
    * GPGME: (gpgme). Adding support for cryptography to your
    program.
    * libgnutls: (gnutls). A Transport Layer Security Library.
    * libidn: (libidn). Internationalized string processing library.
    * libtasn1: (libtasn1). Library for Abstract Syntax Notation One
    (ASN.1).
    GNU organization
    * Standards: (standards). GNU coding standards.
    GNU Packages
    * Aspell: (aspell). GNU Aspell spelling checker
    * Aspell-dev: (aspell-dev). For Aspell developers
    GNU packages
    * Diff: (diff). Comparing and merging files.
    GNU programming tools
    * Libtool: (libtool). Generic shared library support script.
    GNU utilities
    * idn: (libidn)Invoking idn. Command line interface to GNU Libidn.
    Libraries
    * libIDL2: (libIDL2). Interface Definition Language parsing library.
    Libraries:
    * LibGTop2: (libgtop2). Library to get system specific data such as
    cpu and memory usage, active processes
    Network Applications
    * GnuTLS: (gnutls). Package for Transport Layer Security.
    * certtool: (gnutls)Invoking certtool.
    Manipulate certificates and keys.
    * gnutls-cli: (gnutls)Invoking gnutls-cli.
    GNU TLS test client.
    * gnutls-cli-debug: (gnutls)Invoking gnutls-cli-debug.
    GNU TLS debug client.
    * gnutls-serv: (gnutls)Invoking gnutls-serv.
    GNU TLS test server.
    * psktool: (gnutls)Invoking psktool.
    Simple TLS-Pre-Shared-Keys manager.
    * srptool: (gnutls)Invoking srptool.
    Simple SRP password tool.
    Security
    * Heimdal: (heimdal). The Kerberos 5 distribution from KTH
    * hx509: (hx509). The X.509 distribution from KTH
    System administration
    * Which: (which). Show full path of commands.
    Texinfo documentation system
    * Info: (info). How to use the documentation browsing system.
    The Algorithmic Language Scheme
    * GOOPS: (goops). The GOOPS reference manual.
    * Guile Reference: (guile). The Guile reference manual.
    * Guile Tutorial: (guile-tut). The Guile tutorial.
    * R5RS: (r5rs). The Revised(5) Report on Scheme.
    This is libtool.info, produced by makeinfo version 4.11 from /Users/gary/Devo/libtool/doc/libtool.texi.
    This is libtool.info, produced by makeinfo version 4.11 from /Users/gary/Devo/libtool/doc/libtool.texi.
    This is libtool.info, produced by makeinfo version 4.11 from /Users/gary/Devo/libtool/doc/libtool.texi.
    Individual utilities
    * aclocal: (automake)Invoking aclocal. Generating aclocal.m4.
    * addr2line: (binutils)addr2line. Convert addresses to file and
    line.
    * ar: (binutils)ar. Create, modify, and extract
    from archives.
    * autoconf-invocation: (autoconf)autoconf Invocation.
    How to create configuration
    scripts
    * autoheader: (autoconf)autoheader Invocation. How to create configuration
    templates
    * autom4te: (autoconf)autom4te Invocation. The Autoconf executables
    backbone
    * automake: (automake)Invoking Automake. Generating Makefile.in.
    * autoreconf: (autoconf)autoreconf Invocation. Remaking multiple `configure'
    scripts
    * autoscan: (autoconf)autoscan Invocation. Semi-automatic `configure.ac'
    writing
    * autoupdate: (autoconf)autoupdate Invocation. Automatic update of
    `configure.ac'
    * c++filt: (binutils)c++filt. Filter to demangle encoded C++
    symbols.
    * cmp: (diff)Invoking cmp. Compare 2 files byte by byte.
    * config.status: (autoconf)config.status Invocation.
    Recreating configurations.
    * configure: (autoconf)configure Invocation. Configuring a package.
    * cxxfilt: (binutils)c++filt. MS-DOS name for c++filt.
    * diff: (diff)Invoking diff. Compare 2 files line by line.
    * diff3: (diff)Invoking diff3. Compare 3 files line by line.
    * dlltool: (binutils)dlltool. Create files needed to build
    and use DLLs.
    * ifnames: (autoconf)ifnames Invocation. Listing conditionals in source.
    * libtoolize: (libtool)Invoking libtoolize. Adding libtool support.
    * nlmconv: (binutils)nlmconv. Converts object code into an
    NLM.
    * nm: (binutils)nm. List symbols from object files.
    * objcopy: (binutils)objcopy. Copy and translate object
    files.
    * objdump: (binutils)objdump. Display information from
    object files.
    * patch: (diff)Invoking patch. Apply a patch to a file.
    * ranlib: (binutils)ranlib. Generate index to archive
    contents.
    * readelf: (binutils)readelf. Display the contents of ELF
    format files.
    * sdiff: (diff)Invoking sdiff. Merge 2 files side-by-side.
    * size: (binutils)size. List section sizes and total
    size.
    * strings: (binutils)strings. List printable strings from
    files.
    * strip: (binutils)strip. Discard symbols.
    * tar: (tar)tar invocation. Invoking GNU `tar'.
    * testsuite: (autoconf)testsuite Invocation. Running an Autotest test suite.
    * windmc: (binutils)windmc. Generator for Windows message
    resources.
    * windres: (binutils)windres. Manipulate Windows resources.
    Miscellaneous
    * As: (as). The GNU assembler.
    * Bfd: (bfd). The Binary File Descriptor library.
    * Gas: (as). The GNU assembler.
    * Ld: (ld). The GNU linker.
    * gprof: (gprof). Profiling your program's execution
    Software development
    * Autoconf: (autoconf). Create source code configuration scripts.
    * Automake: (automake). Making GNU standards-compliant Makefiles.
    * Binutils: (binutils). The GNU binary utilities.
    * Cpp: (cpp). The GNU C preprocessor.
    * Cpplib: (cppinternals). Cpplib internals.
    * bison: (bison). GNU parser generator (Yacc replacement).
    * g++: (gcc). The GNU C++ compiler.
    * gcc: (gcc). The GNU Compiler Collection.
    * gccinstall: (gccinstall). Installing the GNU Compiler Collection.
    * gccint: (gccint). Internals of the GNU Compiler Collection.
    * gfortran: (gfortran). The GNU Fortran Compiler.
    * treelang: (treelang). The GNU Treelang compiler.
    Text creation and manipulation
    * M4: (m4). A powerful macro processor.
    World Wide WebINFO-DIR-SECTION GNU Emacs Lisp
    * URL: (url). URL loading package.
    Last edited by tjwoosta (2009-01-14 15:35:51)

    http://bbs.archlinux.org/viewtopic.php?id=56373
    http://wiki.archlinux.org/index.php/Pac … ement_FAQs

  • Access Protection

    Sir i was trying to check the access rights given in the complete reference. The book says that we can access the protected variables in a different package and within a subclass. But i was not able to access the protected variable from a different package though i extended the package. i was able to access the public variable. I am also attaching my code below.
    //This is the code where i am importing the package and extending the class within the package.
    import PackagePPP.*;
    public class PPP extends inpack
    public int i=10;
    protected int j=20;
    private int k=30;
    int l=40;
    public static void main(String args[])
         inpack p = new inpack();
         System.out.println("diff package diff class-->"+p.i);
         //System.out.println("diff package diff class-->"+p.j);
         //System.out.println("diff package diff class-->"+diff.k);
         //System.out.println("diff package diff class-->"+p.l);
    //This is how i have created the package.
    package PackagePPP;
    public class inpack
         public int i=10;
         protected int j=20;
         private int k=30;
         int l=40;
    }

    Hi,
    The book says that we can
    access the protected variables in a different package
    and within a subclass. That's wrong. You can access protected attributes of classes that are in the same package, or if you are subclassing.
    /Kaj

  • Learning Logic Pro 9 - Anyone Read this Book?

    Hey everyone:
    Wanting to get into learning Logic Pro 9.  I've been looking at this book: Logic Pro 9 by Mark Cousins and Russ Hepworth.
    Anyone read it or use it?  I've looked through it and read some of it from the preview on Amazon.  It looks good and everthing, but I'm curious about how much the packages differ between Logic Studio and Logic Express.  I just bought Logic Pro from the App Store.
    I know that there are a million YouTube videos and stuff out there, but I kinda like having a structured flow to work through.  If I just try to pick up bits and pieces here and there, I'll probably never really get where I need to be. 
    I have a small blues/rock band and do some live recording and some basement recording.  Not a lot of MIDI and stuff initially, but I may want to program some drums and stuff, maybe add some keyboard loops.
    Think this would be a good fit?  Other good spots to learn from?
    Thanks!

    +1 on KCstudio's suggestion along with the 'first' book in the series...
    Apple Pro Training Series: Logic Pro 9 and Logic Express
    by David Nahami
    Which is, in my opinion, the best book for learning the basics (and more) of Logic Pro....
    Both Books can be found on Amazon at good prices these days....

  • Figtree - an experimental AIF module

    figtree is still in testing, this is an announcement for feedback. Clone/fork and test if interested. README on github has usage details.
    https://github.com/altercation/figtree
    figtree is an AIF module I've been working on with some useful (?) features:
    Can be run from a remote path. Boot from a standard Arch Linux installation image and remotely access your custom installation profile with no customization of the ISO.
    Remote source for both the procedure and profiles can be a version control system. Currently only github has been tested, but figtree has been designed to support git (github/other), mercurial (bitbucket/other), svn (google-code/other), and wget as a fallback option.
    Intelligent sourcing of files (if you've already specified a remote path for the procedure, you can use a relative path for the profile). Procedures and profiles can be local, remote, both, and from different remote locations.
    Supports automatic AUR package installation (see issues)
    Loads both remote and local profiles.
    Profiles can be standard AIF profiles or "figtree profiles" which support more complex system configuration at install time.
    Profiles can link to other profiles, creating a config tree of profiles.
    Profiles can use custom commands to add to:
    add to the install package list
    customize system variables in arbitrary config files
    add overlay files
    add kernel parameters
    add custom system commands to be run at the end of the install
    An example:
    From a clean Arch Linux ISO boot:
    # aif -p partial-configure-network
    # aif -p http://github.com/altercation/figtree/raw/master/procedures/automatic \
    -c profiles/generic
    The above should actually work, but it's just the same as the generic AIF example, you can see other profile examples include profiles which link other profiles in the github /profiles directory.
    More command line examples are in the github readme here https://github.com/altercation/figtree ).
    Profiles, Scope, Linking
    One of the key motivations behind figtree was to enable the "stacking" of configuration profiles. It is common to have different hardware but similar desktop environments, application sets and user configurations. Thus one might have a configuration tree like this:
    Specific-System
    |
    +--Systems/Manufacturer/Model
    |
    +--Environments/Type/Variant
    |
    +--Applicatons/Category/Set
    |
    +--Users/You
    A desktop and laptop might thus look like this:
    profiles/es/es-laptop profiles/es/es-desktop
    | |
    +--systems/lenovo/x220 +--systems/generic/pc
    | |
    +--environments/xmonad/es +--environments/xmonad/es
    | |
    +--applicatons/cli/basics +--applications/cli/basics
    +--applicatons/cli/media +--applications/cli/media
    | +--applicatoins/gui/video
    | |
    +--users/es +--users/es
    Status:
    Alpha.
    Installs from github or local (other dvcs not yet tested)
    AUR works-ish. Seeing I/O problems. Why? makepkg paths? Who knows. I have to figure that out.
    automatic and partial-update-overlay procedure work but partial-conform-system is in progress
    Last edited by altercation (2011-09-02 07:19:26)

    Dieter@be wrote:
    On my Arch systems, I like to try out new software, and often change which sofware I use (window manager, mail client, browsers, ..)
    I also used to create aif profiles to make my setup exactly how I wanted it, but what's the point if you're changing all the time?
    The way I see it, there should be a way to allow me to manually change the state of my machine (add/remove packages, change configs, home directory layout), and then to transfer that system state into a high level aif profile (update package list, update configs in version control, etc)
    I do the same. The partial-update-overlay (and other partials which I haven't completed) are designed to allow the user to quickly snapshot their current system state.
    There is a stub partial-package-diff, the purpose of which is to list out the diff between what a figtree config-tree set would install and what is currently installed (diff both ways, what's missing and what's extra).
    By adding in a scan of the /etc/rc.conf state and comparing to the values in the profile, pretty much the entire system state can be captured.
    I focused on support github specifically for the same reason, so that the system state can be version controlled.
    It's possible that the whole state is just one profile, of course. But I find that when I set up my arch systems, about 90% of the initial setup is really just minor (though sometimes tedious) hardware tweaks. That's one of the reasons I wanted to break out the configs into a tree, so that the hardware specific configuration can be kept somewhat separate if desired (again, it can all be bundled up into one profile as well).

  • PackageMaker 3.0.3: diff between metapackage and distribution package?

    Hello,
    I'm trying to build an installer that does the following:
    1) install an application in /Applications
    2) modify the installed application (adding custom plugins)
    3) install extra files somewhere else
    I've built 3 packages for these items each with their own preflight and postflight scripts (when relevant). Each can be selected by the user to be installed or not. (3) can be installed in a different place than preset.
    I've found info in the PackageMaker User Guide that there are metapackages and distribution packages and they differ in the order of the scripts being executed and the possibility of installing some or all packages in custom locations.
    But I can't find how to configure a package to be either a metapackage or a distribution package in the PackageMaker interface.
    Any clues?
    Thanks.

    I wouldn't recommend that. You should really play by PackageMaker's rules. Of course, those rules aren't written down anywhere
    What you can do is set your destination to be just / - nothing else. Then, the files that you install need to have their own, correct, hierarchy. You start with a temp folder. In that temp folder and create the following hierarchcy (for example): /tmp/packagemaker/Library/QuickTime/Perian. Then, you build your package using /tmp/packagemaker. I have scripts that build my temp directories just so before I ever start PackageMaker. Next, apply the appropriate (usually root) permissions to your temp files. (This way, you can keep non-root files in your own SCM repository). Finally, build the package using those temp files. Depending on how you structure your hierarchy, you may need to check/uncheck "Include root in package".
    I've made it sound easier than it is. There is some trial an error involved.
    Let me know if this doesn't make sense. I know it is confusing.

  • Database Diff - Identical package bodies are reported as different

    SQLDeveloper - Version 3.2.10.09
    Package bodies (DDL) on both source and destination database are identical but package body on the source database is marked as "invalid" and package body on destination database is marked as "valid" - then Database Diff reports that package bodies different. (but on panel showing DDL for both compared package bodies there is visible no difference).
    After compiling package body on the source database (no changes in DDL) and when status of that package body changed to "valid" - now Database Diff correctly shows no difference.
    Is that intentional behavior or bug?

    >
    According to the CM team, in the previous (pre-MDAPI) incarnation of CM, status was not compared, and got complaints about that.
    >
    Point taken. Though it seems these days whichever path you take you will get complaints. ;)
    >
    It would be possible to provide the option whether to compare status of objects that have status (PL/SQL objects, triggers, views, indexes) provided MDAPI reports the status, but it's a fairly hefty enhancement.
    >
    I take that to mean that the results do now, and will continue to, take status into account.
    Perhaps my experience is using the functionality differently than what your team is working with.
    I make heavy use of the DBMS_METADATA and DBMS_METADATA_DIFF packages. Much of that functionality operates on CLOBS containing data in either the raw XML or the SXML format.
    So, to me, an XML in a CLOB has no status. So in comparing XML1 in CLOB1 to XML2 in CLOB2 the status that MIGHT have existed on the real object in the real database is irrelevant. I do comparisons between what is in version control and what is from some other source. That other source might have been, or might still be, an object in a database but status is meaningless since DDL in version control has no status. That is why, for my use cases, I wouldn't want to see a comparison fail due to a status issue.
    Oracle® Database PL/SQL Packages and Types Reference
    http://docs.oracle.com/cd/E14072_01/appdev.112/e10577/d_metadiff.htm
    >
    85 DBMS_METADATA_DIFF
    The DBMS_METADATA_DIFF package contains the interfaces for comparing two metadata documents in SXML format. The result of the comparison is an SXML difference document. This document can be converted to other formats using the DBMS_METADATA submit interface and the CONVERT API.
    >
    That is the basis for the comments I was making; that METADATA doesn't necessarily represent an actual object in an actual database.
    Thanks for the links; I will add my vote there.

  • Diff between ides and original package

    can any one tell me what are main diff between ides and original package
    thanks
    with regards,
    phani

    HI.,
                  IDES saytem is like a play ground in which we do all the transcations,But in Real time systme we dont have as many reference clients as IDES systme have,We have one reference client 0001 In real time systme as their land scape is laid as development,Testing & Production systems
              Important thing is all the screens & T.codes are sames in both
    REWARD if helpfull
    Thanks & Regards
    Narayana

  • Diff between function,procedure/packages  and Diff bet delete,truncate,drop

    Dear all
    I am your pal ranga from IT capital bangalore india. I would like have detail discussion with respect to subject. Pls discuss
    Thanks and Regards
    B.Rangarajan

    Justin gave good advise but here is the short version of the answer just for the heck of it
    Function => stored code suitable for use in the select list of a query and in the where clause conditions that generally accepts one parameter and returns one value. Allows user to extend list of Oracle provided row queries.
    Procedure => stored code designed to return one or more values to the caller. Procedures are generally called from other stored code routines or directly from the user application and not as part of a query or DML statement.
    Package => a collection of stored procedures and functions
    Delete => DML row operation to remove rows from a table
    Truncate => DDL operation to quicky and with minimum overhead mark a table and its associated indexes as empty
    Drop => DDL operation to remove a table or other object from the database
    Maybe these definitions will help until you cover the reading. You can also learn this from the Concepts manual. If you are a DBA this manual is where you should start. For a Developer I would start with the Application Developers - Fundamentals.
    HTH -- Mark D Powell --

  • CHARM - diff between packages in file system vs sol man

    Hi Experts,
    We use CHARM to transport our Portal packages (e.g. EPA, KMC packages). My understanding is that these packages can be downloaded from the file system or through STMS in Solution manager.  However, we noticed that for the same transport requests, it contains different packages in file system than in solution manager, which is perplexing. E.g. PD3K90009X has 1 EPA file in Solution manager while we see 3 different EPA files in file system. 1 of the EPA file matches the 1 seen in solution manager, the other 2 we found, belong to other transport requests. Any idea why for the same transport, it would contain different packages in the file system than solution manager?
    Thanks,
    ZM

    The problem was resolved and it was largely due to missing prerequisites although the system met the required SPS17 requirement.  The lesson learned here is that for newly built Sol Man 700 systems, it's best to do the basic configurations to get Maintenance Optimizer going so it can be used to select and download EHP1 packages.  The traditional SMP SWDC packages selector via identification of source and target releases didn't give the complete prerequisite packages for EHP1 SAINT import.
    Cheers
    Ben Trinh

  • Eclipse - how to share a package/class with 3 diff projects

    Hi all,
    I have 3 projects that are customized diffrently but one package is same for everyone (sharedClass). The problem is when I add/delete/update the SharedClass I have to do it 3 times (for each project)
    Question: How can I share the package/Class with the 3 projects? I mean, I want to change it once and the effect will take place to all 3 PROJECTS.
    Thanks
    Ppr

    This is an Eclipse question and doesn't really belong here, but:
    I would put the shared package into its own project. Then for the three projects (after removing the shared package) I would use the Project menu and choose properties. Choose Java Build Path snd select Projects. Choose Add and select the project containing the shared package.

  • Diff Between Best Practices  &  Business Packages

    Dear Master
                    Can u give a brief difference between
                           Best Practices  &  Business Packages?
    thankx

    Hi,
    Best Practices : SAP Best Practices provide a toolset that helps IT and functional project team members to quickly deploy functionality in SAP solutions - from SAP NetWeaver, to core SAP applications. This toolset comprises a mix of step-by-step instructions, preconfiguration, sample master data, code samples (where applicable) and end-user training - organized by technical or business scenarios that you might want to implement in your landscape.
    http://help.sap.com/content/bestpractices/crossindustry/bestp_based_netweaver.htm
    Business Packages : The SAP NetWeaver Portal offers a state-of-the-art portal solution. However, to make a portal useful to all the people it seeks to serve, it must not only provide general portal capabilities, but also content designed specifically to serve users in various industries and business areas.
    SAP provides such pre-assembled content bundled as business packages for completing business tasks. In essence, the business packages provide out-of-the-box portal applications that can be easily modified to suit a customer's needs.
    http://www.sdn.sap.com/irj/sdn/contentportfolio
    Hope this helps.
    Cheers!
    Sandeep Tudumu

  • HT1349 Package and product number differ iPhone 5

    I bought the iPhone 5 from  Star One Mobile in Sim Lim Square Singpore recently. After reaching my place , just found that the  serial number and IMEI number in my iPhone 5 product and the packaging box are different.
    When I check on the website the packaging number shows the product is replaced but the number in product shows valid.
    Can some one explain the difference?
    I did not anticipate an Apple product having a difference in serial and IMEI number  from the packaging --- probable that the Star one mobile could have changed the package?

    It sounds like Star One repackaged a used or demo iPhone, though I can't be certain. Since Star One does not appear to be an authorized dealer for the iPhone in Singapore, there's no knowing where they might have gotten this iPhone. You'll need to take this up with them.
    Regards.

  • What's the diff betw combining to single pdf vs to a pdf package?

    Howdy. I'm using Acrobat 8.1.4  I want to combine 12 pdf's into one pdf with 12 "pages."  I'm at the Combine Files window.  It offers option to merge into a single pdf or to assemble into a pdf package.  What's a pdf package, what's the difference?  Ultimately I'm going to place this pdf on a web page and I want the visitor to be able to page through the 12 images.  I haven't figured out how I'll achieve that yet....

    A PDF is like a book. A package (portfolio in 9) is like a box filled with books.
    You do not want a package for your purposes. If you want others to see your finished combined document as a book, go to File: Properties: Initial View, then under Page Layout select "Two Up Cover Page". Save and close, the next time you open the document it should look like a book as you go through the pages.

Maybe you are looking for

  • How do I call an object written in Plugin from Javascript in Acrobat 9.0?

    Hi, Since Acrobat 9.0 has no longer support  GetNumAVDocs() called in Javascript, it does not return number counter of opened pdf documents. I am looking for a way to write method GetNumAVDocs() or similar one in Plug-in. My questions are that 1. Can

  • Blackberry Signature

    Any advice on how to remove the blackberry signature when sending e-mails from my blackberry device? I can see it but can't edit it in the e-mail setup area. Don't see an on/off in any options... Solved! Go to Solution.

  • Issue in adding not null constraint on 250 G  table with 50 million rows.

    Guys, I need to add not null constraint on 2 column of a table with 50 million rows and ~250 GB in size, These 2 columns are newly added and I have also update the value for each of these columns to not null for each row. After that I am adding not n

  • Selecting Pantone in InDesign with script

    I selecting a specific color of my document Hey all ! I'm trying using Script: var myDoc = app.activeDocument; var midPage = myDoc.pages.middleItem(); var color = PANTONE 7490C; to see if I can give Script code to get the result. thank you very much

  • The object array comes under which class

    hi there, can anybody tell me an array is defined in which class . for ex: when we give int a[ ]=new int[ ] wen "new "is used an object of array is created. and i studied somewhere that array is an object. then wen an array is an object it must b def