Re: Opera 10.60 Download address
Ruari Ødegaard <[email protected]> Mon, 05 Jul 2010 11:56:20 +0200
| Newsgroups | gmane.comp.web.opera.linux |
|---|---|
| Organization | Opera |
| Message-ID | <[email protected]> |
On Mon, 05 Jul 2010 10:41:24 +0200, Serdar Dalgic <[email protected]> wrote: > Hi; > > I'm packaging opera for my distro Pardus. I always get used to download > new > versions of opera from > http://get.opera.com/pub/opera/linux > > Although previous versions of opera was put into an address like > > http://get.opera.com/pub/opera/linux/1011/final/en/i386/opera-10.11.gcc4-qt4.i386.tar.bz2 > > 10.60 is put into > http://get.opera.com/pub/opera/linux/1060/opera-10.60-6386.i386.linux.tar.gz > > adress. Also, the content layout of the archives are different too. > > Is this a choice or will you upload a "final" version of opera 10.60 > that is > compiled with gcc4 and qt4? This is final and yes we choose for it to be this way. The reason it that Opera is no longer dependant on Qt and as such it is no longer mentioned. As for the gcc4 reference this is gone because we only build against newer versions of gcc now. Previously the 'gcc3' packages where for distros that were too old to have libstdc++.so.6 but that did have libstdc++.so.5. These days it is almost impossible to find a vendor supported distro that does not have libstdc++.so.6 and hence we dropped support for the 'gcc3' packages. With only one version there is little point in mentioning gcc as part of the file name. If you want to know more about the new packages I would encourage you to read this blog post: http://my.opera.com/ruario/blog/new-opera-unix-packages-arrive-deb-rpm-tar If that is a little too long for you I can probably cut to the chase of with regards to the point you probably care about 'repackaging'. The biggest problem for you is likely the fat that the 'prefix'/'DESTDIR' options do not exist as part of the newly rewritten install script. This makes repacking more cumbersome, though not impossible. Indeed I do it myself for the Arch Linux distribution. You now have three options: 1. Pull part the .deb or .rpm package and use its contents as part of your repack. 2. Patch the install script so that you can install to an alternative location. 3. Without using the install shift around the contents of the tar package and patch various PREFIX and SUFFIX variables within the *.desktop, MIME and man files. Despite initially sounding a little odd, option 1 is _by far_ the easiest method and is what I personally favour for the Arch PKGBUILD (which I unofficially maintain) and also what Robby Workman is using for the Slackware Slackbuild. Both of which are repackaging scripts for their respective distros. If you want to see these in action: http://aur.archlinux.org/packages.php?ID=10333 http://slackbuilds.org/repository/13.1/network/opera/ If you do go down this route and decide to use the .deb instead of the rpm, either 'ar' or the libarchive utilities (e.g. 'bsdcpio' and 'bsdtar') can pull apart the package and you can then extract the contents of the internally contained 'data.tar.gz'. You do need to exclude the Debian specific 'usr/share/lintian' directory and 'usr/share/doc/opera/changelog.Debian.gz' files however. For example, assuming the use of '/tmp/repack' as your repackaging working directory, download a .deb appropriate for your hardware architecture and issue the following: $ ar p opera_10.51-6252_i386.deb data.tar.gz | tar xz --exclude changelog.Debian.gz --exclude lintian -C /tmp/repack You will also need to alter the package-id.ini to change the package type to be 'tar', to avoid causing a bug with our 'native' widgets implementation. $ sed -i /tmp/repack/usr/share/opera/package-id.ini -e "s|\(Package Type=\)deb|\1tar|" Alternatively the .rpm file can be opened with tools such libarchive or 'rpm2cpio' as demonstrated in the Arch PKGBUILD and Slackbuild respectively. (In this case change "s|\(Package Type=\)deb|\1tar|" to "s|\(Package Type=\)rpm|\1tar|") If you can't or won't do option 1 then here is one example of option 2: patching the install script. Again this example would place Opera in '/tmp/repack' with the Opera (start up scripts, *.desktop, MIME and man) file paths set for a later install into the top level of '/usr'. You need to patch via 3 regex, which ensure the following: (i) Files are placed in repackaging directory; (ii) Internal paths are set to '/usr'; (iii) Prevent calls to 'update-desktop-database' and 'update-mime-database' (not needed yet as this is repackaging, not a final install). Here is a simple demo: $ sed -i install -e "s|dest=\$PREFIX|dest=/tmp/repack/usr|" -e "s|\$HOME/.local|/usr|" -e "s|update-[a-z]*-database|XXpatchedXX|" Once done you can then 'Install' quietly to the repackaging directory via the following command: $ ./install --user --quiet (if you want feedback use '--unattended' instead of '--quiet') Before repackaging you also need to remove the unneeded uninstall script (since the native package manager will handle uninstall). $ rm /tmp/repack/usr/bin/uninstall-opera Finally, for completion here is option 3 (manually shifting around the contents of the tar package and patching various PREFIX and SUFFIX variables). As you can see this is the most involved, so I'll include some comments: $ mkdir -p /tmp/repack/usr/bin # Create 'opera' and 'opera-widget-manager' wrapper scripts and make them executable $ cat <<EOF > /tmp/repack/usr/bin/opera > #!/bin/shexport OPERA_DIR=\${OPERA_DIR:-/usr/share/opera}exec > /usr/lib/opera/opera "\$@" > EOF $ cat <<EOF > /tmp/repack/usr/bin/opera-widget-manager > #!/bin/shexec /usr/bin/opera --widgetmanager "\$@" > EOF $ chmod 755 /tmp/repack/usr/bin/opera* # Copy over 'lib/' and 'share/' $ cp -R lib /tmp/repack/usr/ $ cp -R share /tmp/repack/usr/ # Patch variables in the *.desktop, MIME and man files to reflect the final install location. $ sed -i /tmp/repack/usr/share/applications/opera-browser.desktop -e "s|@@{PREFIX}|/usr|" -e "s|@@{[U_]*SUFFIX}||" $ sed -i /tmp/repack/usr/share/applications/opera-widget-manager.desktop -e "s|@@{PREFIX}|/usr|" -e "s|@@{[U_]*SUFFIX}||" $ sed -i /tmp/repack/usr/share/applications/opera-widget-installer.desktop -e "s|@@{PREFIX}|/usr|" -e "s|@@{[U_]*SUFFIX}||" $ sed -i /tmp/repack/usr/share/mime/packages/opera-widget.xml -e "s|@@{[U_]*SUFFIX}||" $ sed -i /tmp/repack/usr/share/mime/packages/opera-unite-application.xml -e "s|@@{[U_]*SUFFIX}||" $ gzip -d /tmp/repack/usr/share/man/man1/opera.1.gz $ sed -i /tmp/repack/usr/share/man/man1/opera.1 -e "s|@@{PREFIX}|/usr|" -e "s|@@{[U_]*SUFFIX}||" $ gzip /tmp/repack/usr/share/man/man1/opera.1 $ gzip -d /tmp/repack/usr/share/man/man1/opera-widget-manager.1.gz $ sed -i /tmp/repack/usr/share/man/man1/opera-widget-manager.1 -e "s|@@{PREFIX}|/usr|" -e "s|@@{[U_]*SUFFIX}||" $ gzip /tmp/repack/usr/share/man/man1/opera-widget-manager.1 I hope it is clear why I favour option 1. ;) And before you ask, yes we do plan to revive the 'prefix'/'DESTDIR' options in a future release to simplify this for those those who need to repackage Opera. As someone who does this myself, I eagerly await this fix. If you have further questions please ask. > Thanks for your answer. -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ -- Opera-Linux: https://list.opera.com/mailman/listinfo/opera-linux More lists: https://list.opera.com/mailman/listinfo/ Unsubscribe: mailto:[email protected]?subject=unsubscribe