slackpkgplus/src
Matteo Rossini 4f8d52738f Version 1.0rc3 - 28/Oct/2013
- slackpkg+ 1.0 release candidate 3.  Last call.  :)
  - Added setupmultilib.sh in /usr/doc/slackpk+-*, an helper for configure
    multilibs in slackpkgplus.conf
2013-10-28 12:44:51 +01:00
..
ChangeLog.txt Version 1.0rc3 - 28/Oct/2013 2013-10-28 12:44:51 +01:00
doinst.sh Version 1.0rc2 - 21/Oct/2013 2013-10-21 15:42:05 +02:00
README Version 1.0rc3 - 28/Oct/2013 2013-10-28 12:44:51 +01:00
repositories.txt Version 1.0rc2 - 21/Oct/2013 2013-10-21 15:42:05 +02:00
setupmultilib.sh Version 1.0rc3 - 28/Oct/2013 2013-10-28 12:44:51 +01:00
slack-desc Version 0.9beta2 - 27/Apr/2013 2013-05-03 09:54:52 +02:00
slackpkg+.SlackBuild Version 1.0rc3 - 28/Oct/2013 2013-10-28 12:44:51 +01:00
slackpkgplus.sh Version 1.0rc1 - 16/Oct/2013 2013-10-16 13:57:13 +02:00
slackpkgplus.x86.sample Version 1.0rc2 - 21/Oct/2013 2013-10-21 15:42:05 +02:00
slackpkgplus.x86_64.sample Version 1.0rc2 - 21/Oct/2013 2013-10-21 15:42:05 +02:00
zdialogplus.sh Version 0.9.6.1 - 02/Sep/2013 2013-09-02 12:12:16 +02:00

slackpkg+ plugin for third-party repositories

Slackpkg is a package manager for Slackware. 
 
Slackpkg+ is a plugin for slackpkg
   It adds support for third-party repositories.
   You can add multiple repositories to your list

Thanks to alienbob and phenixia2003 for contributing and all other submitted suggestions and/or patches.

********************* DISCLAIMER **********************
This is NOT an official tool. Use it at your own risk.
The third party repositories are NOT official.
The authors of those repositories are not responsible
for any damage that may be caused to your computer.
*******************************************************

-----
*Configuration: 
edit slackpkgplus.conf
uncomment one or more mirrors and add it in the REPOPLUS list.
Optionally set PKGS_PRIORITY to give priority order for packages present in multiple repositories

For supported repository see repositories.txt.
but you can add other yourself.

If you configure repositories that do not support gpg, you may need to set "CHECKGPG=off" in slackpkg.conf


then launch 
slackpkg update gpg
slackpkg update


To keep slackpkg+ updated, uncomment the 'slackpkgplus' repository.
then 'slackpkg upgrade-all' will upgrade it.

-----

the MIRRORPLUS array define all mirrors. It accepts a lot of protocols:

1) http/ftp/https:
   MIRRORPLUS['slacky']=http://repository.slacky.eu/slackware64/
   the mirror must contains all metadata files (CHECKSUMS.md5 ...)
   you must run 'slackpkg update' after add/remove a repository
2) local mirror:
   MIRRORPLUS['alienlocal']=file://mirrors/alienbob/x86/14.0/
   the directory must contains all metadata files (CHECKSUMS.md5 ...)
   you must run 'slackpkg update' after add/remove a repository
3) local packages directory:
   MIRRORPLUS['mypackages']=dir://mypackages/
   all packages must to be in a single directory (subdirectory not allowed)
   'slackpkg update' ignore these repository. Every time you run slackpkg
   it read the directory contents.


-----


Usage:

see 'man slackpkg' :D

use 'slackpkg upgrade-all' to keep your system up-to-date.
This command searches for upgraded packages spanning all configured repositories.

use 'slackpkg install-new' (if you use current) to check for new packages.
This command searches new packages ONLY in official slackware repository.

the command
slackpkg {install,upgrade,remove,reinstall}
accept:
1) package-name (span all repositories)
2) part of package-name (span all repositories)
3) path of package in repository, for example slackpkg install xap - span all repositories
4a) repository-name, for example slackpkg upgrade alienbob - upgrade packages from specified repository
4b) repository-name, for example slackpkg install ktown - install all packages in ktown repository
5) repository-name:package-name, for example slackpkg install slacky:openjdk - install slacky openjdk even if that repository is not the first one in order
6) file:local-file-name (txz/tgz), for example slackpkg install file:mypackage-1.0-noarch-1my.txz - install mypackage even if not defined in slackpkgplus.con; you can optionally specify relative or absolute path
7) dir:directory, for example slackpkg {install|upgrade} dir:/root/myrepo (do not strictly require the final '/') - install or upgrade all packages in path (note: 'slackpkg install .' is an alias of 'slackpkg install dir:./', but 'slackpkg install ./' is NOT the same alias; search FILE in man slackpkg)

-----

priority configuration:

When a package is present in more than one repository the package will be searched found in the following order:

1) as listed in PKGS_PRIORITY
2) as listed in Official Slackware Repository (as configured in slackpkg.conf)
3) as listed in REPOPLUS
4) all other defined in MIRRORPLUS

PKGS_PRIORITY Syntax:

<repository name>:<package name>

example:
alienbob:openjdk

<package name> accepts regular expression, so
restricted:.* mean 'all packages in repository restricted'

-----

MULTILIB:

If you want to use a multilib system you must configure the multilib repository in slackpkgplus.conf
You can do that simply by running:
# /usr/doc/slackpkg+-1.0/setupmultilib.sh

Otherwise you can configure it manually:
Add the repository 'multilib', add "PKGS_PRIORITY=( multilib:.* )" then launch:

# slackpkg update gpg
# slackpkg update
# slackpkg upgrade-all
# slackpkg install multilib

next:
# slackpkg update
# slackpkg upgrade-all
re-run 'slackpkg install multilib' if you found that 'slackpkg install-new' has found some new package.

to remove the multilib, you must remove 'multilib:.*' from PKGS_PRIORITY and from REPOPLUS (but not delete related MIRRORPLUS line), then launch:
# slackpkg update
# slackpkg remove multilib
Note: that does NOT remove the core multilib packages becouse they affect the 64bit system, so you must remove these by launch:
# slackpkg upgrade-all
then delete or comment the related MIRRORPLUS line and launch:
# slackpkg update

-----

NEWEST KDE:

If you want to install the latest kde package from alienbob (presently 4.11.1), add "PKGS_PRIORITY=( ktown:.* )" then launch:

the first time:
# slackpkg update gpg
# slackpkg update
# slackpkg install ktown
# slackpkg upgrade-all
do not forget to read the special instruction from http://taper.alienbase.nl/mirrors/alien-kde/current/latest/ becouse you may need to remove some kde-slackware package. At the time of writing:
# slackpkg remove kdeadmin kdenetwork kdesdk kdetoys

next:
# slackpkg update
# slackpkg upgrade-all
to upgrade to 4.11.2 or more.

to restore slackware kde:
remove 'ktown:.*' from PKGS_PRIORITY and from REPOPLUS (but not delete related MIRRORPLUS line)
# slackpkg update
# slackpkg upgrade-all
# slackpkg install kde
# slackpkg remove ktown
then delete or comment the related MIRRORPLUS line and then launch:
# slackpkg update

-----

PERSONAL PACKAGES:
If you build yourself some packages, you can install these without installpkg, by using slackpkg. This operation helps you to track the installation/upgrade and reduce the error margin. You do NOT need to create a your personal repository, generating a gpg-key and all needed metadata any time you build a package; also yo do NOT need to modify your config file and launch slackpkg update.

You can:
1) install/upgrade/reinstall a single package by passing the full file name (optionally add absolute or relative path):
# slackpkg install file:package-1.0-noarch-1my.txz
or
# slackpkg upgrade file:../repo/package-2.0-noarch-1my.txz
2) install/upgrade/reinstall all file packages in a single directory (does not allow subtree) by passing a directory name (optionally absolute or relative path):
# slackpkg install dir:/myrep
# slackpkg upgrade dir:./test/package/
# slackpkg reinstall .
'.' is an alias of 'dir:./', but only that alias exists. slackpkg install ./ or /myrepo/ or ./package.txz generates an error becouse in standard slackpkg you can specify a FILE as input, so in 'slackpkg install ./list.txt' list.txt must to be a plain file containing a list of packages to install (see man slackpkg)
If a directory contains the same package with two different version, slackpkg show the 'alfabetically' highest, so pkg-9.1 will be listed instead of pkg-8, ut pkg-9 will be also listed instead pkg-10. Sorry.. is a slackpkg limit!


Tip: if you want to use dir:/myrepo to track your installations and you have lost the original txz/tgz file, you can simply create an empty file; this fools slackpkg+ that only searches for file name and not for contents (unless you do not run slackpkg reinstall on these packages ;))

by doing
# touch mypkg1-1.0-noarch-1my.tgz
# touch mysecondpkg-1.1-noarch-2my.txz
where mypkg1 and mysecondpkg are already installed packages, 'slackpkg install .' (or upgrade) does not show you that packages. 'slackpkg reinstall .' DOES show it (so do not continue the installation)

NOTE: slackpkg+ will skip the gpg and md5 check!!

-----

REMOTE PACKAGES WITHOUT METADATA:
Some users share packages on his personal site but without creating metadata files (specially if they share few packages).
To install one of these packages you should download it and install it manually.
Now you can specify a direct url for the package with slackpkg+ that will automatically download and install/upgrade the package.

You can:
1) install/upgrade/reinstall a single package by specifying the complete url:
# slackpkg install http://site/path/package-1.0-noarch-1my.txz
You may use that function to install a snapshot of slackpkg+ (that is not available with slackpkg upgrade slackpkg becouse is a beta version)
# slackpkg upgrade http://www.slakfinder.org/slackpkg+/pkg/slackpkg+-20130905.2-noarch-1mt.txz
2) install/upgrade/reinstall all file packages in a single remote directory (does not allow subtree):
With the same syntax 'slackpkg install dir:..' you can specify a url-path:
# slackpkg install http://site/path/
even if the site owner does not create metadata.
That function requires lftp and may fail if the server does not support Directory Listing or if there is a index.html in the path.


NOTE: slackpkg+ will skip the gpg and md5 check!!

------

The AlienBob article about slackpkg+:
http://alien.slackbook.org/blog/introducing-slackpkg-an-extension-to-slackpkg-for-3rd-party-repositories/


For questions, suggestions or contributes, you can email me to zerouno@slacky.it or use the linuxquestions forum:
http://www.linuxquestions.org/questions/showthread.php?p=4940074


You can find slackpkg+ on sourceforge: https://sourceforge.net/projects/slackpkgplus