Tue Jun 19 22:35:25 UTC 2018

a/acl-2.2.53-x86_64-1.txz:  Upgraded.
a/attr-2.4.48-x86_64-1.txz:  Upgraded.
n/gnupg-1.4.23-x86_64-1.txz:  Upgraded.
  Sanitize the diagnostic output of the original file name in verbose mode.
  By using a made up file name in the message it was possible to fake status
  messages. Using this technique it was for example possible to fake the
  verification status of a signed mail.
  For more information, see:
    https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-12020
  (* Security fix *)
x/libXaw3d-1.6.3-x86_64-1.txz:  Upgraded.
x/libinput-1.11.1-x86_64-1.txz:  Upgraded.
x/xf86-input-mouse-1.9.3-x86_64-1.txz:  Upgraded.
testing/packages/pkgtools-15.0-noarch-20.txz:  Rebuilt.
  This update is a bit scarier than usual, so we're going to test it here
  first and then move it into the main tree in a couple of days if there
  are no serious bug reports. It's well-tested here, and works with the
  slackpkg that's in -current now, but I don't know about slackpkg+ so that's
  another reason to let it cool down here first. The purpose of this update
  is to migrate the package database and directories from /var/log to
  /var/lib/pkgtools. /var/log was never a good place for this data, as it is
  considered by many to be a directory that could be wiped to free up some
  space. Originally the package database was in /var/adm, but the FSSTND
  (later FHS) group decided that directory should be a symlink to /var/log,
  and I went along with that since it was years ago and I was a n00b and didn't
  know any better. /var/lib/pkgtools will be a better and safer location.
  The removed_packages and removed_scripts directories are really just logs
  that aren't actually used for anything - those will remain under /var/log,
  but moved into /var/log/pkgtools. Everything under /var/log will be
  considered potentially non-permanent by the pkgtools - if any directories or
  symlinks disappear from there, the pkgtools will automatically recreate them
  as needed. In fact, the migration process will create symlinks from all the
  old directory locations to the new ones, so anything that expects the old
  locations (including slackpkg, for now) should continue to work. Once this
  moves into the main tree, the plan is to fix other packages to use the new
  installer script directory (/var/lib/pkgtools/setup) and change the installer
  and slackpkg to use the new native locations for everything. When slackpkg
  is changed over to use the new native locations, I'll also make sure to float
  that in testing/ for a few days before moving it to the main tree to avoid
  more unintentional disruption to slackpkg+ users.
  Be aware that the package database migration is a one-way operation, but even
  so if you later downgrade to an older version of the pkgtools it will still
  work through the compatibility symlinks.
This commit is contained in:
Patrick J Volkerding 2018-06-19 22:35:25 +00:00 committed by Eric Hameleers
parent a27618d0d0
commit 7e5ee73de9
38 changed files with 5310 additions and 173 deletions

View file

@ -11,9 +11,62 @@
<description>Tracking Slackware development in git.</description>
<language>en-us</language>
<id xmlns="http://www.w3.org/2005/Atom">urn:uuid:c964f45e-6732-11e8-bbe5-107b4450212f</id>
<pubDate>Tue, 19 Jun 2018 05:47:22 GMT</pubDate>
<lastBuildDate>Tue, 19 Jun 2018 19:00:30 GMT</lastBuildDate>
<pubDate>Tue, 19 Jun 2018 22:35:25 GMT</pubDate>
<lastBuildDate>Wed, 20 Jun 2018 07:00:28 GMT</lastBuildDate>
<generator>maintain_current_git.sh v 1.10</generator>
<item>
<title>Tue, 19 Jun 2018 22:35:25 GMT</title>
<pubDate>Tue, 19 Jun 2018 22:35:25 GMT</pubDate>
<link>https://git.slackware.nl/current/tag/?h=20180619223525</link>
<guid isPermaLink="false">20180619223525</guid>
<description>
<![CDATA[<pre>
a/acl-2.2.53-x86_64-1.txz: Upgraded.
a/attr-2.4.48-x86_64-1.txz: Upgraded.
n/gnupg-1.4.23-x86_64-1.txz: Upgraded.
Sanitize the diagnostic output of the original file name in verbose mode.
By using a made up file name in the message it was possible to fake status
messages. Using this technique it was for example possible to fake the
verification status of a signed mail.
For more information, see:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-12020
(* Security fix *)
x/libXaw3d-1.6.3-x86_64-1.txz: Upgraded.
x/libinput-1.11.1-x86_64-1.txz: Upgraded.
x/xf86-input-mouse-1.9.3-x86_64-1.txz: Upgraded.
testing/packages/pkgtools-15.0-noarch-20.txz: Rebuilt.
This update is a bit scarier than usual, so we're going to test it here
first and then move it into the main tree in a couple of days if there
are no serious bug reports. It's well-tested here, and works with the
slackpkg that's in -current now, but I don't know about slackpkg+ so that's
another reason to let it cool down here first. The purpose of this update
is to migrate the package database and directories from /var/log to
/var/lib/pkgtools. /var/log was never a good place for this data, as it is
considered by many to be a directory that could be wiped to free up some
space. Originally the package database was in /var/adm, but the FSSTND
(later FHS) group decided that directory should be a symlink to /var/log,
and I went along with that since it was years ago and I was a n00b and didn't
know any better. /var/lib/pkgtools will be a better and safer location.
The removed_packages and removed_scripts directories are really just logs
that aren't actually used for anything - those will remain under /var/log,
but moved into /var/log/pkgtools. Everything under /var/log will be
considered potentially non-permanent by the pkgtools - if any directories or
symlinks disappear from there, the pkgtools will automatically recreate them
as needed. In fact, the migration process will create symlinks from all the
old directory locations to the new ones, so anything that expects the old
locations (including slackpkg, for now) should continue to work. Once this
moves into the main tree, the plan is to fix other packages to use the new
installer script directory (/var/lib/pkgtools/setup) and change the installer
and slackpkg to use the new native locations for everything. When slackpkg
is changed over to use the new native locations, I'll also make sure to float
that in testing/ for a few days before moving it to the main tree to avoid
more unintentional disruption to slackpkg+ users.
Be aware that the package database migration is a one-way operation, but even
so if you later downgrade to an older version of the pkgtools it will still
work through the compatibility symlinks.
</pre>]]>
</description>
</item>
<item>
<title>Tue, 19 Jun 2018 05:47:22 GMT</title>
<pubDate>Tue, 19 Jun 2018 05:47:22 GMT</pubDate>

View file

@ -1,3 +1,48 @@
Tue Jun 19 22:35:25 UTC 2018
a/acl-2.2.53-x86_64-1.txz: Upgraded.
a/attr-2.4.48-x86_64-1.txz: Upgraded.
n/gnupg-1.4.23-x86_64-1.txz: Upgraded.
Sanitize the diagnostic output of the original file name in verbose mode.
By using a made up file name in the message it was possible to fake status
messages. Using this technique it was for example possible to fake the
verification status of a signed mail.
For more information, see:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-12020
(* Security fix *)
x/libXaw3d-1.6.3-x86_64-1.txz: Upgraded.
x/libinput-1.11.1-x86_64-1.txz: Upgraded.
x/xf86-input-mouse-1.9.3-x86_64-1.txz: Upgraded.
testing/packages/pkgtools-15.0-noarch-20.txz: Rebuilt.
This update is a bit scarier than usual, so we're going to test it here
first and then move it into the main tree in a couple of days if there
are no serious bug reports. It's well-tested here, and works with the
slackpkg that's in -current now, but I don't know about slackpkg+ so that's
another reason to let it cool down here first. The purpose of this update
is to migrate the package database and directories from /var/log to
/var/lib/pkgtools. /var/log was never a good place for this data, as it is
considered by many to be a directory that could be wiped to free up some
space. Originally the package database was in /var/adm, but the FSSTND
(later FHS) group decided that directory should be a symlink to /var/log,
and I went along with that since it was years ago and I was a n00b and didn't
know any better. /var/lib/pkgtools will be a better and safer location.
The removed_packages and removed_scripts directories are really just logs
that aren't actually used for anything - those will remain under /var/log,
but moved into /var/log/pkgtools. Everything under /var/log will be
considered potentially non-permanent by the pkgtools - if any directories or
symlinks disappear from there, the pkgtools will automatically recreate them
as needed. In fact, the migration process will create symlinks from all the
old directory locations to the new ones, so anything that expects the old
locations (including slackpkg, for now) should continue to work. Once this
moves into the main tree, the plan is to fix other packages to use the new
installer script directory (/var/lib/pkgtools/setup) and change the installer
and slackpkg to use the new native locations for everything. When slackpkg
is changed over to use the new native locations, I'll also make sure to float
that in testing/ for a few days before moving it to the main tree to avoid
more unintentional disruption to slackpkg+ users.
Be aware that the package database migration is a one-way operation, but even
so if you later downgrade to an older version of the pkgtools it will still
work through the compatibility symlinks.
+--------------------------+
Tue Jun 19 05:47:22 UTC 2018
a/btrfs-progs-v4.17-x86_64-1.txz: Upgraded.
a/lvm2-2.02.179-x86_64-1.txz: Upgraded.

View file

@ -1,20 +1,20 @@
Tue Jun 19 05:57:13 UTC 2018
Tue Jun 19 23:07:14 UTC 2018
Here is the file list for this directory. If you are using a
mirror site and find missing or extra files in the disk
subdirectories, please have the archive administrator refresh
the mirror.
drwxr-xr-x 12 root root 4096 2018-06-19 05:47 .
drwxr-xr-x 12 root root 4096 2018-06-19 22:35 .
-rw-r--r-- 1 root root 10064 2016-06-30 18:39 ./ANNOUNCE.14_2
-rw-r--r-- 1 root root 13424 2018-06-13 05:25 ./CHANGES_AND_HINTS.TXT
-rw-r--r-- 1 root root 896128 2018-06-18 18:38 ./CHECKSUMS.md5
-rw-r--r-- 1 root root 163 2018-06-18 18:38 ./CHECKSUMS.md5.asc
-rw-r--r-- 1 root root 896152 2018-06-19 05:57 ./CHECKSUMS.md5
-rw-r--r-- 1 root root 163 2018-06-19 05:57 ./CHECKSUMS.md5.asc
-rw-r--r-- 1 root root 17976 1994-06-10 02:28 ./COPYING
-rw-r--r-- 1 root root 35147 2007-06-30 04:21 ./COPYING3
-rw-r--r-- 1 root root 19573 2016-06-23 20:08 ./COPYRIGHT.TXT
-rw-r--r-- 1 root root 616 2006-10-02 04:37 ./CRYPTO_NOTICE.TXT
-rw-r--r-- 1 root root 419378 2018-06-19 05:47 ./ChangeLog.txt
-rw-r--r-- 1 root root 422280 2018-06-19 22:35 ./ChangeLog.txt
drwxr-xr-x 3 root root 4096 2013-03-20 22:17 ./EFI
drwxr-xr-x 2 root root 4096 2018-06-18 18:15 ./EFI/BOOT
-rw-r--r-- 1 root root 1253376 2018-02-24 20:49 ./EFI/BOOT/bootx64.efi
@ -25,9 +25,9 @@ drwxr-xr-x 2 root root 4096 2018-06-18 18:15 ./EFI/BOOT
-rwxr-xr-x 1 root root 2494 2018-02-24 20:49 ./EFI/BOOT/make-grub.sh
-rw-r--r-- 1 root root 10722 2013-09-21 19:02 ./EFI/BOOT/osdetect.cfg
-rw-r--r-- 1 root root 1273 2013-08-12 21:08 ./EFI/BOOT/tools.cfg
-rw-r--r-- 1 root root 1179810 2018-06-18 18:37 ./FILELIST.TXT
-rw-r--r-- 1 root root 1179831 2018-06-19 05:57 ./FILELIST.TXT
-rw-r--r-- 1 root root 1572 2012-08-29 18:27 ./GPG-KEY
-rw-r--r-- 1 root root 725984 2018-06-19 05:55 ./PACKAGES.TXT
-rw-r--r-- 1 root root 725984 2018-06-19 23:05 ./PACKAGES.TXT
-rw-r--r-- 1 root root 8564 2016-06-28 21:33 ./README.TXT
-rw-r--r-- 1 root root 3634 2018-06-18 05:56 ./README.initrd
-rw-r--r-- 1 root root 34412 2017-12-01 17:44 ./README_CRYPT.TXT
@ -748,13 +748,13 @@ drwxr-xr-x 2 root root 4096 2012-09-20 18:06 ./patches
-rw-r--r-- 1 root root 575 2012-09-20 18:06 ./patches/FILE_LIST
-rw-r--r-- 1 root root 14 2012-09-20 18:06 ./patches/MANIFEST.bz2
-rw-r--r-- 1 root root 224 2012-09-20 18:06 ./patches/PACKAGES.TXT
drwxr-xr-x 18 root root 4096 2018-06-19 05:56 ./slackware64
-rw-r--r-- 1 root root 288390 2018-06-19 05:56 ./slackware64/CHECKSUMS.md5
-rw-r--r-- 1 root root 163 2018-06-19 05:56 ./slackware64/CHECKSUMS.md5.asc
-rw-r--r-- 1 root root 359305 2018-06-19 05:53 ./slackware64/FILE_LIST
-rw-r--r-- 1 root root 3611845 2018-06-19 05:54 ./slackware64/MANIFEST.bz2
drwxr-xr-x 18 root root 4096 2018-06-19 23:05 ./slackware64
-rw-r--r-- 1 root root 288390 2018-06-19 23:05 ./slackware64/CHECKSUMS.md5
-rw-r--r-- 1 root root 163 2018-06-19 23:05 ./slackware64/CHECKSUMS.md5.asc
-rw-r--r-- 1 root root 359305 2018-06-19 23:03 ./slackware64/FILE_LIST
-rw-r--r-- 1 root root 3609920 2018-06-19 23:04 ./slackware64/MANIFEST.bz2
lrwxrwxrwx 1 root root 15 2009-08-23 23:34 ./slackware64/PACKAGES.TXT -> ../PACKAGES.TXT
drwxr-xr-x 2 root root 20480 2018-06-19 05:53 ./slackware64/a
drwxr-xr-x 2 root root 20480 2018-06-19 23:03 ./slackware64/a
-rw-r--r-- 1 root root 327 2018-04-14 20:33 ./slackware64/a/aaa_base-14.2-x86_64-4.txt
-rw-r--r-- 1 root root 10972 2018-04-14 20:33 ./slackware64/a/aaa_base-14.2-x86_64-4.txz
-rw-r--r-- 1 root root 163 2018-04-14 20:33 ./slackware64/a/aaa_base-14.2-x86_64-4.txz.asc
@ -764,15 +764,15 @@ drwxr-xr-x 2 root root 20480 2018-06-19 05:53 ./slackware64/a
-rw-r--r-- 1 root root 503 2018-04-16 17:32 ./slackware64/a/aaa_terminfo-6.1_20180324-x86_64-4.txt
-rw-r--r-- 1 root root 50276 2018-04-16 17:32 ./slackware64/a/aaa_terminfo-6.1_20180324-x86_64-4.txz
-rw-r--r-- 1 root root 163 2018-04-16 17:32 ./slackware64/a/aaa_terminfo-6.1_20180324-x86_64-4.txz.asc
-rw-r--r-- 1 root root 414 2018-04-13 13:00 ./slackware64/a/acl-2.2.52-x86_64-2.txt
-rw-r--r-- 1 root root 138096 2018-04-13 13:00 ./slackware64/a/acl-2.2.52-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 13:00 ./slackware64/a/acl-2.2.52-x86_64-2.txz.asc
-rw-r--r-- 1 root root 414 2018-06-19 20:04 ./slackware64/a/acl-2.2.53-x86_64-1.txt
-rw-r--r-- 1 root root 128832 2018-06-19 20:04 ./slackware64/a/acl-2.2.53-x86_64-1.txz
-rw-r--r-- 1 root root 163 2018-06-19 20:04 ./slackware64/a/acl-2.2.53-x86_64-1.txz.asc
-rw-r--r-- 1 root root 462 2018-04-18 18:18 ./slackware64/a/acpid-2.0.29-x86_64-1.txt
-rw-r--r-- 1 root root 47480 2018-04-18 18:18 ./slackware64/a/acpid-2.0.29-x86_64-1.txz
-rw-r--r-- 1 root root 163 2018-04-18 18:18 ./slackware64/a/acpid-2.0.29-x86_64-1.txz.asc
-rw-r--r-- 1 root root 606 2018-04-13 13:00 ./slackware64/a/attr-2.4.47-x86_64-2.txt
-rw-r--r-- 1 root root 74984 2018-04-13 13:00 ./slackware64/a/attr-2.4.47-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 13:00 ./slackware64/a/attr-2.4.47-x86_64-2.txz.asc
-rw-r--r-- 1 root root 606 2018-06-19 20:02 ./slackware64/a/attr-2.4.48-x86_64-1.txt
-rw-r--r-- 1 root root 63636 2018-06-19 20:02 ./slackware64/a/attr-2.4.48-x86_64-1.txz
-rw-r--r-- 1 root root 163 2018-06-19 20:02 ./slackware64/a/attr-2.4.48-x86_64-1.txz.asc
-rw-r--r-- 1 root root 507 2018-06-05 18:56 ./slackware64/a/bash-4.4.023-x86_64-1.txt
-rw-r--r-- 1 root root 1526328 2018-06-05 18:56 ./slackware64/a/bash-4.4.023-x86_64-1.txz
-rw-r--r-- 1 root root 163 2018-06-05 18:56 ./slackware64/a/bash-4.4.023-x86_64-1.txz.asc
@ -3355,7 +3355,7 @@ drwxr-xr-x 2 root root 69632 2018-06-19 05:53 ./slackware64/l
-rw-r--r-- 1 root root 388 2018-04-13 15:26 ./slackware64/l/zlib-1.2.11-x86_64-2.txt
-rw-r--r-- 1 root root 103500 2018-04-13 15:26 ./slackware64/l/zlib-1.2.11-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 15:26 ./slackware64/l/zlib-1.2.11-x86_64-2.txz.asc
drwxr-xr-x 2 root root 32768 2018-06-19 05:53 ./slackware64/n
drwxr-xr-x 2 root root 32768 2018-06-19 23:03 ./slackware64/n
-rw-r--r-- 1 root root 368 2018-06-05 04:17 ./slackware64/n/ModemManager-1.8.0-x86_64-1.txt
-rw-r--r-- 1 root root 1510328 2018-06-05 04:17 ./slackware64/n/ModemManager-1.8.0-x86_64-1.txz
-rw-r--r-- 1 root root 163 2018-06-05 04:17 ./slackware64/n/ModemManager-1.8.0-x86_64-1.txz.asc
@ -3437,9 +3437,9 @@ drwxr-xr-x 2 root root 32768 2018-06-19 05:53 ./slackware64/n
-rw-r--r-- 1 root root 362 2018-04-13 15:35 ./slackware64/n/getmail-5.6-x86_64-2.txt
-rw-r--r-- 1 root root 176848 2018-04-13 15:35 ./slackware64/n/getmail-5.6-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 15:35 ./slackware64/n/getmail-5.6-x86_64-2.txz.asc
-rw-r--r-- 1 root root 369 2018-04-13 15:35 ./slackware64/n/gnupg-1.4.22-x86_64-2.txt
-rw-r--r-- 1 root root 1175556 2018-04-13 15:35 ./slackware64/n/gnupg-1.4.22-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 15:35 ./slackware64/n/gnupg-1.4.22-x86_64-2.txz.asc
-rw-r--r-- 1 root root 369 2018-06-19 19:00 ./slackware64/n/gnupg-1.4.23-x86_64-1.txt
-rw-r--r-- 1 root root 1175208 2018-06-19 19:00 ./slackware64/n/gnupg-1.4.23-x86_64-1.txz
-rw-r--r-- 1 root root 163 2018-06-19 19:00 ./slackware64/n/gnupg-1.4.23-x86_64-1.txz.asc
-rw-r--r-- 1 root root 598 2018-06-08 18:58 ./slackware64/n/gnupg2-2.2.8-x86_64-1.txt
-rw-r--r-- 1 root root 2176680 2018-06-08 18:58 ./slackware64/n/gnupg2-2.2.8-x86_64-1.txz
-rw-r--r-- 1 root root 163 2018-06-08 18:58 ./slackware64/n/gnupg2-2.2.8-x86_64-1.txz.asc
@ -3835,7 +3835,7 @@ drwxr-xr-x 2 root root 4096 2018-04-18 08:32 ./slackware64/tcl
-rw-r--r-- 1 root root 198 2018-04-13 16:03 ./slackware64/tcl/tk-8.6.8-x86_64-2.txt
-rw-r--r-- 1 root root 1762804 2018-04-13 16:03 ./slackware64/tcl/tk-8.6.8-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 16:03 ./slackware64/tcl/tk-8.6.8-x86_64-2.txz.asc
drwxr-xr-x 2 root root 65536 2018-06-19 05:53 ./slackware64/x
drwxr-xr-x 2 root root 65536 2018-06-19 23:03 ./slackware64/x
-rw-r--r-- 1 root root 257 2018-04-13 16:03 ./slackware64/x/anthy-9100h-x86_64-2.txt
-rw-r--r-- 1 root root 5074404 2018-04-13 16:03 ./slackware64/x/anthy-9100h-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 16:03 ./slackware64/x/anthy-9100h-x86_64-2.txz.asc
@ -4036,9 +4036,9 @@ drwxr-xr-x 2 root root 65536 2018-06-19 05:53 ./slackware64/x
-rw-r--r-- 1 root root 208 2018-04-13 05:55 ./slackware64/x/libXaw-1.0.13-x86_64-2.txt
-rw-r--r-- 1 root root 378328 2018-04-13 05:55 ./slackware64/x/libXaw-1.0.13-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 05:55 ./slackware64/x/libXaw-1.0.13-x86_64-2.txz.asc
-rw-r--r-- 1 root root 511 2018-04-13 05:55 ./slackware64/x/libXaw3d-1.6.2-x86_64-4.txt
-rw-r--r-- 1 root root 183520 2018-04-13 05:55 ./slackware64/x/libXaw3d-1.6.2-x86_64-4.txz
-rw-r--r-- 1 root root 163 2018-04-13 05:55 ./slackware64/x/libXaw3d-1.6.2-x86_64-4.txz.asc
-rw-r--r-- 1 root root 511 2018-06-19 18:00 ./slackware64/x/libXaw3d-1.6.3-x86_64-1.txt
-rw-r--r-- 1 root root 185804 2018-06-19 18:00 ./slackware64/x/libXaw3d-1.6.3-x86_64-1.txz
-rw-r--r-- 1 root root 163 2018-06-19 18:00 ./slackware64/x/libXaw3d-1.6.3-x86_64-1.txz.asc
-rw-r--r-- 1 root root 556 2018-04-13 16:06 ./slackware64/x/libXaw3dXft-1.6.2d-x86_64-3.txt
-rw-r--r-- 1 root root 181236 2018-04-13 16:06 ./slackware64/x/libXaw3dXft-1.6.2d-x86_64-3.txz
-rw-r--r-- 1 root root 163 2018-04-13 16:06 ./slackware64/x/libXaw3dXft-1.6.2d-x86_64-3.txz.asc
@ -4144,9 +4144,9 @@ drwxr-xr-x 2 root root 65536 2018-06-19 05:53 ./slackware64/x
-rw-r--r-- 1 root root 378 2018-04-13 16:07 ./slackware64/x/libhangul-0.1.0-x86_64-2.txt
-rw-r--r-- 1 root root 1865468 2018-04-13 16:07 ./slackware64/x/libhangul-0.1.0-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 16:07 ./slackware64/x/libhangul-0.1.0-x86_64-2.txz.asc
-rw-r--r-- 1 root root 534 2018-06-05 18:59 ./slackware64/x/libinput-1.11.0-x86_64-1.txt
-rw-r--r-- 1 root root 180960 2018-06-05 18:59 ./slackware64/x/libinput-1.11.0-x86_64-1.txz
-rw-r--r-- 1 root root 163 2018-06-05 18:59 ./slackware64/x/libinput-1.11.0-x86_64-1.txz.asc
-rw-r--r-- 1 root root 534 2018-06-19 17:43 ./slackware64/x/libinput-1.11.1-x86_64-1.txt
-rw-r--r-- 1 root root 181144 2018-06-19 17:43 ./slackware64/x/libinput-1.11.1-x86_64-1.txz
-rw-r--r-- 1 root root 163 2018-06-19 17:43 ./slackware64/x/libinput-1.11.1-x86_64-1.txz.asc
-rw-r--r-- 1 root root 322 2018-05-01 18:36 ./slackware64/x/libmypaint-1.3.0-x86_64-1.txt
-rw-r--r-- 1 root root 117120 2018-05-01 18:36 ./slackware64/x/libmypaint-1.3.0-x86_64-1.txz
-rw-r--r-- 1 root root 163 2018-05-01 18:36 ./slackware64/x/libmypaint-1.3.0-x86_64-1.txz.asc
@ -4411,9 +4411,9 @@ drwxr-xr-x 2 root root 65536 2018-06-19 05:53 ./slackware64/x
-rw-r--r-- 1 root root 468 2018-05-11 23:28 ./slackware64/x/xf86-input-libinput-0.27.1-x86_64-3.txt
-rw-r--r-- 1 root root 50192 2018-05-11 23:28 ./slackware64/x/xf86-input-libinput-0.27.1-x86_64-3.txz
-rw-r--r-- 1 root root 163 2018-05-11 23:28 ./slackware64/x/xf86-input-libinput-0.27.1-x86_64-3.txz.asc
-rw-r--r-- 1 root root 428 2018-05-11 23:28 ./slackware64/x/xf86-input-mouse-1.9.2-x86_64-3.txt
-rw-r--r-- 1 root root 49556 2018-05-11 23:28 ./slackware64/x/xf86-input-mouse-1.9.2-x86_64-3.txz
-rw-r--r-- 1 root root 163 2018-05-11 23:28 ./slackware64/x/xf86-input-mouse-1.9.2-x86_64-3.txz.asc
-rw-r--r-- 1 root root 428 2018-06-19 18:00 ./slackware64/x/xf86-input-mouse-1.9.3-x86_64-1.txt
-rw-r--r-- 1 root root 49684 2018-06-19 18:00 ./slackware64/x/xf86-input-mouse-1.9.3-x86_64-1.txz
-rw-r--r-- 1 root root 163 2018-06-19 18:00 ./slackware64/x/xf86-input-mouse-1.9.3-x86_64-1.txz.asc
-rw-r--r-- 1 root root 485 2018-05-11 23:29 ./slackware64/x/xf86-input-penmount-1.5.0-x86_64-12.txt
-rw-r--r-- 1 root root 18160 2018-05-11 23:29 ./slackware64/x/xf86-input-penmount-1.5.0-x86_64-12.txz
-rw-r--r-- 1 root root 163 2018-05-11 23:29 ./slackware64/x/xf86-input-penmount-1.5.0-x86_64-12.txz.asc
@ -4933,11 +4933,11 @@ drwxr-xr-x 2 root root 4096 2018-04-18 08:35 ./slackware64/y
-rw-r--r-- 1 root root 1147 2018-03-01 07:55 ./slackware64/y/maketag
-rw-r--r-- 1 root root 1147 2018-03-01 07:55 ./slackware64/y/maketag.ez
-rw-r--r-- 1 root root 14 2018-03-01 07:55 ./slackware64/y/tagfile
drwxr-xr-x 19 root root 4096 2018-06-19 05:57 ./source
-rw-r--r-- 1 root root 452852 2018-06-19 05:57 ./source/CHECKSUMS.md5
-rw-r--r-- 1 root root 163 2018-06-19 05:57 ./source/CHECKSUMS.md5.asc
-rw-r--r-- 1 root root 641000 2018-06-19 05:56 ./source/FILE_LIST
-rw-r--r-- 1 root root 14766616 2018-06-19 05:56 ./source/MANIFEST.bz2
drwxr-xr-x 19 root root 4096 2018-06-19 23:07 ./source
-rw-r--r-- 1 root root 452816 2018-06-19 23:07 ./source/CHECKSUMS.md5
-rw-r--r-- 1 root root 163 2018-06-19 23:07 ./source/CHECKSUMS.md5.asc
-rw-r--r-- 1 root root 640899 2018-06-19 23:06 ./source/FILE_LIST
-rw-r--r-- 1 root root 14763377 2018-06-19 23:06 ./source/MANIFEST.bz2
-rw-r--r-- 1 root root 1314 2006-10-02 04:40 ./source/README.TXT
drwxr-xr-x 110 root root 4096 2018-06-14 19:02 ./source/a
-rw-r--r-- 1 root root 567 2018-03-13 18:43 ./source/a/FTBFSlog
@ -4957,10 +4957,11 @@ drwxr-xr-x 2 root root 4096 2018-05-06 19:33 ./source/a/aaa_elflibs
-rw-r--r-- 1 root root 288 2015-08-29 17:08 ./source/a/aaa_elflibs/tracked-files
-rw-r--r-- 1 root root 213 2015-04-20 04:40 ./source/a/aaa_elflibs/tracked-files-tmp
lrwxrwxrwx 1 root root 12 2018-04-16 17:31 ./source/a/aaa_terminfo -> ../l/ncurses
drwxr-xr-x 2 root root 4096 2018-04-23 17:20 ./source/a/acl
-rw-r--r-- 1 root root 274060 2013-05-19 06:10 ./source/a/acl/acl-2.2.52.src.tar.xz
-rwxr-xr-x 1 root root 4119 2018-04-23 17:20 ./source/a/acl/acl.SlackBuild
-rw-r--r-- 1 root root 865 2018-02-27 06:13 ./source/a/acl/slack-desc
drwxr-xr-x 2 root root 4096 2018-06-19 18:12 ./source/a/acl
-rw-r--r-- 1 root root 355672 2018-06-19 03:34 ./source/a/acl/acl-2.2.53.tar.lz
-rwxr-xr-x 1 root root 3972 2018-06-19 20:04 ./source/a/acl/acl.SlackBuild
-rw-r--r-- 1 root root 49 2018-06-19 18:12 ./source/a/acl/acl.url
-rw-r--r-- 1 root root 865 2018-06-19 18:00 ./source/a/acl/slack-desc
drwxr-xr-x 2 root root 4096 2018-04-23 17:20 ./source/a/acpid
-rw-r--r-- 1 root root 224 2004-02-05 01:54 ./source/a/acpid/acpi_handler.sh.gz
-rw-r--r-- 1 root root 155568 2018-04-17 01:29 ./source/a/acpid/acpid-2.0.29.tar.xz
@ -4970,10 +4971,12 @@ drwxr-xr-x 2 root root 4096 2018-04-23 17:20 ./source/a/acpid
-rw-r--r-- 1 root root 271 2010-01-16 00:00 ./source/a/acpid/doinst.sh.gz
-rw-r--r-- 1 root root 285 2010-02-16 22:57 ./source/a/acpid/rc.acpid.gz
-rw-r--r-- 1 root root 915 2018-02-27 06:13 ./source/a/acpid/slack-desc
drwxr-xr-x 2 root root 4096 2018-04-23 17:20 ./source/a/attr
-rw-r--r-- 1 root root 242700 2013-05-19 14:16 ./source/a/attr/attr-2.4.47.src.tar.xz
-rwxr-xr-x 1 root root 4056 2018-04-23 17:20 ./source/a/attr/attr.SlackBuild
drwxr-xr-x 2 root root 4096 2018-06-19 18:09 ./source/a/attr
-rw-r--r-- 1 root root 317239 2018-06-19 02:52 ./source/a/attr/attr-2.4.48.tar.lz
-rwxr-xr-x 1 root root 4181 2018-06-19 20:02 ./source/a/attr/attr.SlackBuild
-rw-r--r-- 1 root root 50 2018-06-19 18:02 ./source/a/attr/attr.url
-rw-r--r-- 1 root root 88 2006-02-28 00:02 ./source/a/attr/build
-rw-r--r-- 1 root root 270 2018-06-19 18:09 ./source/a/attr/doinst.sh.gz
-rw-r--r-- 1 root root 1058 2018-02-27 06:13 ./source/a/attr/slack-desc
drwxr-xr-x 3 root root 4096 2018-04-23 17:20 ./source/a/bash
drwxr-xr-x 2 root root 4096 2018-06-05 18:55 ./source/a/bash/bash-4.4-patches
@ -5694,7 +5697,7 @@ drwxr-xr-x 2 root root 4096 2017-11-03 00:51 ./source/a/sysvinit-scripts/s
-rw-r--r-- 1 root root 1654 2015-11-23 22:22 ./source/a/sysvinit-scripts/scripts/rc.sysvinit
-rw-r--r-- 1 root root 22473 2012-09-07 17:51 ./source/a/sysvinit-scripts/scripts/rescan-scsi-bus.sh
-rw-r--r-- 1 root root 645 2012-09-07 17:52 ./source/a/sysvinit-scripts/scripts/rescan-scsi-bus.sh.diff
-rw-r--r-- 1 root root 842 2018-02-27 06:13 ./source/a/sysvinit-scripts/slack-desc
-rw-r--r-- 1 root root 842 2018-02-27 06:13 ./source/a/sysvinit-scripts/slack-desc
-rwxr-xr-x 1 root root 2558 2018-06-14 23:29 ./source/a/sysvinit-scripts/sysvinit-scripts.SlackBuild
-rw-r--r-- 1 root root 23 2015-08-06 22:54 ./source/a/sysvinit/CHANGES
-rw-r--r-- 1 root root 668 2015-08-06 22:54 ./source/a/sysvinit/doinst.sh.gz
@ -9838,9 +9841,9 @@ drwxr-xr-x 2 root root 4096 2018-04-23 17:20 ./source/n/getmail
-rwxr-xr-x 1 root root 2544 2018-04-23 17:20 ./source/n/getmail/getmail.SlackBuild
-rw-r--r-- 1 root root 35 2018-04-03 18:20 ./source/n/getmail/getmail.url
-rw-r--r-- 1 root root 817 2018-02-27 06:13 ./source/n/getmail/slack-desc
drwxr-xr-x 2 root root 4096 2018-04-23 17:20 ./source/n/gnupg
-rw-r--r-- 1 root root 2660120 2017-07-19 09:24 ./source/n/gnupg/gnupg-1.4.22.tar.xz
-rwxr-xr-x 1 root root 3720 2018-04-23 17:20 ./source/n/gnupg/gnupg.SlackBuild
drwxr-xr-x 2 root root 4096 2018-06-19 18:59 ./source/n/gnupg
-rw-r--r-- 1 root root 2663136 2018-06-11 08:48 ./source/n/gnupg/gnupg-1.4.23.tar.xz
-rwxr-xr-x 1 root root 3720 2018-06-19 18:59 ./source/n/gnupg/gnupg.SlackBuild
-rw-r--r-- 1 root root 822 2018-02-27 06:13 ./source/n/gnupg/slack-desc.gnupg
drwxr-xr-x 2 root root 4096 2018-06-08 18:57 ./source/n/gnupg2
-rw-r--r-- 1 root root 4694045 2018-06-08 10:11 ./source/n/gnupg2/gnupg-2.2.8.tar.lz
@ -10772,9 +10775,9 @@ drwxr-xr-x 2 root root 4096 2018-04-23 17:20 ./source/x/libhangul
-rw-r--r-- 1 root root 2148068 2011-10-30 11:43 ./source/x/libhangul/libhangul-0.1.0.tar.xz
-rwxr-xr-x 1 root root 4852 2018-04-23 17:20 ./source/x/libhangul/libhangul.SlackBuild
-rw-r--r-- 1 root root 835 2018-02-27 06:13 ./source/x/libhangul/slack-desc
drwxr-xr-x 2 root root 4096 2018-06-05 18:59 ./source/x/libinput
-rw-r--r-- 1 root root 485976 2018-06-05 00:27 ./source/x/libinput/libinput-1.11.0.tar.xz
-rw-r--r-- 1 root root 95 2018-06-05 00:27 ./source/x/libinput/libinput-1.11.0.tar.xz.sig
drwxr-xr-x 2 root root 4096 2018-06-19 17:43 ./source/x/libinput
-rw-r--r-- 1 root root 485064 2018-06-19 05:01 ./source/x/libinput/libinput-1.11.1.tar.xz
-rw-r--r-- 1 root root 95 2018-06-19 05:01 ./source/x/libinput/libinput-1.11.1.tar.xz.sig
-rwxr-xr-x 1 root root 3729 2018-04-23 17:20 ./source/x/libinput/libinput.SlackBuild
-rw-r--r-- 1 root root 46 2015-04-21 01:23 ./source/x/libinput/libinput.url
-rw-r--r-- 1 root root 1022 2018-02-27 06:13 ./source/x/libinput/slack-desc
@ -11015,7 +11018,7 @@ drwxr-xr-x 2 root root 12288 2018-04-15 22:31 ./source/x/x11/build
-rw-r--r-- 1 root root 2 2018-04-13 02:44 ./source/x/x11/build/libXScrnSaver
-rw-r--r-- 1 root root 2 2018-04-13 02:44 ./source/x/x11/build/libXau
-rw-r--r-- 1 root root 2 2018-04-13 02:44 ./source/x/x11/build/libXaw
-rw-r--r-- 1 root root 2 2018-04-13 02:44 ./source/x/x11/build/libXaw3d
-rw-r--r-- 1 root root 2 2018-06-19 17:45 ./source/x/x11/build/libXaw3d
-rw-r--r-- 1 root root 2 2018-04-13 02:44 ./source/x/x11/build/libXaw3dXft
-rw-r--r-- 1 root root 2 2018-04-13 02:44 ./source/x/x11/build/libXcm
-rw-r--r-- 1 root root 2 2018-04-13 02:44 ./source/x/x11/build/libXcomposite
@ -11148,7 +11151,7 @@ drwxr-xr-x 2 root root 12288 2018-04-15 22:31 ./source/x/x11/build
-rw-r--r-- 1 root root 2 2018-05-11 12:33 ./source/x/x11/build/xf86-input-joystick
-rw-r--r-- 1 root root 2 2018-05-11 12:33 ./source/x/x11/build/xf86-input-keyboard
-rw-r--r-- 1 root root 2 2018-05-11 12:33 ./source/x/x11/build/xf86-input-libinput
-rw-r--r-- 1 root root 2 2018-05-11 12:33 ./source/x/x11/build/xf86-input-mouse
-rw-r--r-- 1 root root 2 2018-06-19 17:44 ./source/x/x11/build/xf86-input-mouse
-rw-r--r-- 1 root root 3 2018-05-11 12:33 ./source/x/x11/build/xf86-input-penmount
-rw-r--r-- 1 root root 2 2018-06-01 05:18 ./source/x/x11/build/xf86-input-synaptics
-rw-r--r-- 1 root root 2 2018-05-11 12:33 ./source/x/x11/build/xf86-input-vmmouse
@ -11325,7 +11328,7 @@ drwxr-xr-x 2 root root 4096 2015-04-21 02:59 ./source/x/x11/makepkg
-rw-r--r-- 1 root root 3528 2018-03-12 18:09 ./source/x/x11/modularize
-rw-r--r-- 1 root root 1189 2018-05-03 12:16 ./source/x/x11/noarch
-rw-r--r-- 1 root root 856 2016-01-12 23:39 ./source/x/x11/package-blacklist
drwxr-xr-x 13 root root 4096 2018-05-17 19:24 ./source/x/x11/patch
drwxr-xr-x 12 root root 4096 2018-06-19 17:59 ./source/x/x11/patch
-rw-r--r-- 1 root root 326 2010-11-13 18:39 ./source/x/x11/patch/README
drwxr-xr-x 2 root root 4096 2014-07-14 23:09 ./source/x/x11/patch/luit
-rw-r--r-- 1 root root 170 2014-07-14 23:09 ./source/x/x11/patch/luit.patch
@ -11340,9 +11343,6 @@ drwxr-xr-x 2 root root 4096 2014-12-07 08:09 ./source/x/x11/patch/xdm
-rw-r--r-- 1 root root 419 2014-12-07 08:06 ./source/x/x11/patch/xdm/xdm-1.1.11-setproctitle-include.patch.gz
-rw-r--r-- 1 root root 2309 2014-12-07 08:07 ./source/x/x11/patch/xdm/xdm-consolekit.patch.gz
-rw-r--r-- 1 root root 830 2013-07-07 06:42 ./source/x/x11/patch/xdm/xdm.glibc.crypt.diff.gz
drwxr-xr-x 2 root root 4096 2018-05-11 12:39 ./source/x/x11/patch/xf86-input-mouse
-rw-r--r-- 1 root root 174 2018-05-11 12:40 ./source/x/x11/patch/xf86-input-mouse.patch
-rw-r--r-- 1 root root 632 2018-05-11 12:38 ./source/x/x11/patch/xf86-input-mouse/3c8f243b750a92d5837a449d344ff884dbd02b57.patch.gz
-rw-r--r-- 1 root root 319 2015-08-20 06:44 ./source/x/x11/patch/xf86-video-apm.patch
-rw-r--r-- 1 root root 319 2015-08-20 06:44 ./source/x/x11/patch/xf86-video-ark.patch
-rw-r--r-- 1 root root 319 2015-08-20 06:44 ./source/x/x11/patch/xf86-video-ast.patch
@ -11756,7 +11756,7 @@ drwxr-xr-x 2 root root 12288 2018-03-12 18:05 ./source/x/x11/slack-desc
-rw-r--r-- 1 root root 716 2012-04-08 02:21 ./source/x/x11/slack-desc/xwd
-rw-r--r-- 1 root root 702 2012-04-08 02:21 ./source/x/x11/slack-desc/xwininfo
-rw-r--r-- 1 root root 668 2012-04-07 23:42 ./source/x/x11/slack-desc/xwud
drwxr-xr-x 12 root root 4096 2018-05-18 17:19 ./source/x/x11/src
drwxr-xr-x 12 root root 4096 2018-06-19 17:44 ./source/x/x11/src
drwxr-xr-x 2 root root 4096 2018-06-11 18:01 ./source/x/x11/src/app
-rw-r--r-- 1 root root 115464 2018-03-05 03:32 ./source/x/x11/src/app/appres-1.0.5.tar.xz
-rw-r--r-- 1 root root 139452 2017-11-07 19:12 ./source/x/x11/src/app/bdftopcf-1.1.tar.xz
@ -11853,13 +11853,13 @@ drwxr-xr-x 2 root root 4096 2018-03-11 20:42 ./source/x/x11/src/data
drwxr-xr-x 2 root root 4096 2015-05-04 05:55 ./source/x/x11/src/doc
-rw-r--r-- 1 root root 333452 2015-05-01 06:18 ./source/x/x11/src/doc/xorg-docs-1.7.1.tar.xz
-rw-r--r-- 1 root root 110976 2012-06-06 02:42 ./source/x/x11/src/doc/xorg-sgml-doctools-1.11.tar.xz
drwxr-xr-x 2 root root 4096 2018-06-01 05:18 ./source/x/x11/src/driver
drwxr-xr-x 2 root root 4096 2018-06-19 17:44 ./source/x/x11/src/driver
-rw-r--r-- 1 root root 236544 2011-05-04 23:02 ./source/x/x11/src/driver/xf86-input-acecad-1.5.0.tar.xz
-rw-r--r-- 1 root root 345048 2018-05-29 02:33 ./source/x/x11/src/driver/xf86-input-evdev-2.10.6.tar.xz
-rw-r--r-- 1 root root 291860 2016-11-17 23:02 ./source/x/x11/src/driver/xf86-input-joystick-1.6.3.tar.xz
-rw-r--r-- 1 root root 290104 2016-11-17 04:29 ./source/x/x11/src/driver/xf86-input-keyboard-1.9.0.tar.xz
-rw-r--r-- 1 root root 305292 2018-04-09 23:27 ./source/x/x11/src/driver/xf86-input-libinput-0.27.1.tar.xz
-rw-r--r-- 1 root root 318096 2016-11-17 04:39 ./source/x/x11/src/driver/xf86-input-mouse-1.9.2.tar.xz
-rw-r--r-- 1 root root 318204 2018-06-19 04:36 ./source/x/x11/src/driver/xf86-input-mouse-1.9.3.tar.xz
-rw-r--r-- 1 root root 229120 2011-06-28 00:52 ./source/x/x11/src/driver/xf86-input-penmount-1.5.0.tar.xz
-rw-r--r-- 1 root root 427964 2018-05-29 03:19 ./source/x/x11/src/driver/xf86-input-synaptics-1.9.1.tar.xz
-rw-r--r-- 1 root root 258876 2015-06-25 10:30 ./source/x/x11/src/driver/xf86-input-vmmouse-13.1.0.tar.xz
@ -11945,7 +11945,7 @@ drwxr-xr-x 2 root root 4096 2015-03-15 21:33 ./source/x/x11/src/font
-rwxr-xr-x 1 root root 2052 2016-04-13 17:16 ./source/x/x11/src/get-xf86-video-intel.sh
-rwxr-xr-x 1 root root 2080 2016-04-13 17:16 ./source/x/x11/src/get-xf86-video-nouveau.sh
-rwxr-xr-x 1 root root 2125 2016-04-13 17:16 ./source/x/x11/src/get-xf86-video-openchrome.sh
drwxr-xr-x 2 root root 4096 2018-05-14 18:23 ./source/x/x11/src/lib
drwxr-xr-x 2 root root 4096 2018-06-19 17:44 ./source/x/x11/src/lib
-rw-r--r-- 1 root root 266224 2015-05-01 04:35 ./source/x/x11/src/lib/libFS-1.0.7.tar.xz
-rw-r--r-- 1 root root 309088 2014-06-07 01:31 ./source/x/x11/src/lib/libICE-1.0.9.tar.xz
-rw-r--r-- 1 root root 283276 2013-09-08 06:08 ./source/x/x11/src/lib/libSM-1.2.2.tar.xz
@ -11953,7 +11953,7 @@ drwxr-xr-x 2 root root 4096 2018-05-14 18:23 ./source/x/x11/src/lib
-rw-r--r-- 1 root root 235904 2012-03-08 05:08 ./source/x/x11/src/lib/libXScrnSaver-1.2.2.tar.xz
-rw-r--r-- 1 root root 247936 2013-05-24 22:18 ./source/x/x11/src/lib/libXau-1.0.8.tar.xz
-rw-r--r-- 1 root root 565164 2015-05-01 05:18 ./source/x/x11/src/lib/libXaw-1.0.13.tar.xz
-rw-r--r-- 1 root root 454428 2012-03-29 22:44 ./source/x/x11/src/lib/libXaw3d-1.6.2.tar.xz
-rw-r--r-- 1 root root 475672 2018-06-19 05:01 ./source/x/x11/src/lib/libXaw3d-1.6.3.tar.xz
-rw-r--r-- 1 root root 250328 2013-01-04 09:14 ./source/x/x11/src/lib/libXcm-0.5.2.tar.xz
-rw-r--r-- 1 root root 239876 2013-01-03 07:30 ./source/x/x11/src/lib/libXcomposite-0.4.4.tar.xz
-rw-r--r-- 1 root root 273708 2017-11-28 14:26 ./source/x/x11/src/lib/libXcursor-1.1.15.tar.xz
@ -12237,7 +12237,7 @@ drwxr-xr-x 2 root root 4096 2018-05-06 19:33 ./source/xap/sane
-rw-r--r-- 1 root root 3581624 2017-05-23 13:08 ./source/xap/sane/sane-backends-1.0.27.tar.xz
-rw-r--r-- 1 root root 341 2010-01-20 01:54 ./source/xap/sane/sane-frontends-1.0.14-sane_cap_always_settable.diff.gz
-rw-r--r-- 1 root root 172596 2005-09-18 07:21 ./source/xap/sane/sane-frontends-1.0.14.tar.xz
-rwxr-xr-x 1 root root 5677 2018-05-06 19:33 ./source/xap/sane/sane.SlackBuild
-rwxr-xr-x 1 root root 5718 2018-06-19 21:38 ./source/xap/sane/sane.SlackBuild
-rw-r--r-- 1 root root 773 2018-02-27 06:13 ./source/xap/sane/slack-desc
drwxr-xr-x 5 root root 4096 2018-05-03 19:20 ./source/xap/seamonkey
drwxr-xr-x 2 root root 4096 2016-07-03 18:05 ./source/xap/seamonkey/autoconf
@ -12455,11 +12455,11 @@ drwxr-xr-x 2 root root 4096 2018-04-23 17:20 ./source/xfce/libxfce4ui
drwxr-xr-x 2 root root 4096 2018-04-23 17:20 ./source/xfce/libxfce4util
-rw-r--r-- 1 root root 386632 2015-02-28 16:06 ./source/xfce/libxfce4util/libxfce4util-4.12.1.tar.xz
-rwxr-xr-x 1 root root 4750 2018-04-23 17:20 ./source/xfce/libxfce4util/libxfce4util.SlackBuild
-rw-r--r-- 1 root root 776 2018-02-27 06:13 ./source/xfce/libxfce4util/slack-desc
drwxr-xr-x 2 root root 4096 2018-04-23 17:20 ./source/xfce/orage
-rw-r--r-- 1 root root 2165672 2015-04-10 10:30 ./source/xfce/orage/orage-4.12.1.tar.xz
-rwxr-xr-x 1 root root 4085 2018-04-23 17:20 ./source/xfce/orage/orage.SlackBuild
-rw-r--r-- 1 root root 723 2017-11-14 22:05 ./source/xfce/orage/orage.libical3.diff.gz
-rw-r--r-- 1 root root 776 2018-02-27 06:13 ./source/xfce/libxfce4util/slack-desc
drwxr-xr-x 2 root root 4096 2018-04-23 17:20 ./source/xfce/orage
-rw-r--r-- 1 root root 2165672 2015-04-10 10:30 ./source/xfce/orage/orage-4.12.1.tar.xz
-rwxr-xr-x 1 root root 4085 2018-04-23 17:20 ./source/xfce/orage/orage.SlackBuild
-rw-r--r-- 1 root root 723 2017-11-14 22:05 ./source/xfce/orage/orage.libical3.diff.gz
-rw-r--r-- 1 root root 625 2018-02-27 06:13 ./source/xfce/orage/slack-desc
drwxr-xr-x 2 root root 4096 2018-04-23 17:20 ./source/xfce/thunar-volman
-rw-r--r-- 1 root root 835 2015-03-22 04:39 ./source/xfce/thunar-volman/0001-Fix-return-with-no-value-in-function-returning-non-v.patch
@ -12585,14 +12585,43 @@ drwxr-xr-x 2 root root 4096 2012-03-02 16:01 ./source/y/bsd-games/fortune-fi
-rw-r--r-- 1 root root 364407 2002-03-10 05:09 ./source/y/bsd-games/fortunes-o.tar.gz
-rw-r--r-- 1 root root 104848 1993-10-25 00:02 ./source/y/bsd-games/hangman-words.gz
-rw-r--r-- 1 root root 1048 2018-02-27 06:13 ./source/y/bsd-games/slack-desc
drwxr-xr-x 4 root root 4096 2018-06-13 05:57 ./testing
-rw-r--r-- 1 root root 552 2018-06-13 05:57 ./testing/CHECKSUMS.md5
-rw-r--r-- 1 root root 163 2018-06-13 05:57 ./testing/CHECKSUMS.md5.asc
-rw-r--r-- 1 root root 685 2018-06-13 05:57 ./testing/FILE_LIST
-rw-r--r-- 1 root root 14 2018-06-13 05:57 ./testing/MANIFEST.bz2
-rw-r--r-- 1 root root 224 2018-06-13 05:57 ./testing/PACKAGES.TXT
drwxr-xr-x 2 root root 4096 2018-06-12 19:55 ./testing/packages
drwxr-xr-x 2 root root 4096 2018-06-12 19:55 ./testing/source
drwxr-xr-x 4 root root 4096 2018-06-19 23:07 ./testing
-rw-r--r-- 1 root root 2433 2018-06-19 23:07 ./testing/CHECKSUMS.md5
-rw-r--r-- 1 root root 163 2018-06-19 23:07 ./testing/CHECKSUMS.md5.asc
-rw-r--r-- 1 root root 3132 2018-06-19 23:07 ./testing/FILE_LIST
-rw-r--r-- 1 root root 1640 2018-06-19 23:07 ./testing/MANIFEST.bz2
-rw-r--r-- 1 root root 1079 2018-06-19 23:07 ./testing/PACKAGES.TXT
drwxr-xr-x 2 root root 4096 2018-06-19 23:07 ./testing/packages
-rw-r--r-- 1 root root 672 2018-06-19 21:13 ./testing/packages/pkgtools-15.0-noarch-20.txt
-rw-r--r-- 1 root root 195204 2018-06-19 21:13 ./testing/packages/pkgtools-15.0-noarch-20.txz
-rw-r--r-- 1 root root 163 2018-06-19 21:13 ./testing/packages/pkgtools-15.0-noarch-20.txz.asc
drwxr-xr-x 3 root root 4096 2018-06-19 21:12 ./testing/source
drwxr-xr-x 4 root root 4096 2018-06-19 21:12 ./testing/source/pkgtools
-rw-r--r-- 1 root root 984 2018-06-19 19:28 ./testing/source/pkgtools/doinst.sh.gz
drwxr-xr-x 2 root root 4096 2018-06-19 19:42 ./testing/source/pkgtools/manpages
-rw-r--r-- 1 root root 76636 2016-06-15 01:08 ./testing/source/pkgtools/manpages-l10n.tar.xz
-rw-r--r-- 1 root root 1265 2018-06-19 19:28 ./testing/source/pkgtools/manpages/explodepkg.8
-rw-r--r-- 1 root root 3554 2018-06-19 19:28 ./testing/source/pkgtools/manpages/installpkg.8
-rw-r--r-- 1 root root 5441 2018-06-19 19:28 ./testing/source/pkgtools/manpages/makepkg.8
-rw-r--r-- 1 root root 1401 2018-04-11 19:48 ./testing/source/pkgtools/manpages/pkgdiff.8
-rw-r--r-- 1 root root 2518 2009-04-11 21:11 ./testing/source/pkgtools/manpages/pkgtool.8
-rw-r--r-- 1 root root 3251 2018-06-19 19:28 ./testing/source/pkgtools/manpages/removepkg.8
-rw-r--r-- 1 root root 2962 2018-06-08 19:56 ./testing/source/pkgtools/manpages/upgradepkg.8
-rwxr-xr-x 1 root root 3742 2018-06-19 21:13 ./testing/source/pkgtools/pkgtools.SlackBuild
drwxr-xr-x 2 root root 4096 2018-06-19 19:42 ./testing/source/pkgtools/scripts
-rw-r--r-- 1 root root 3608 2018-06-19 19:28 ./testing/source/pkgtools/scripts/explodepkg
-rw-r--r-- 1 root root 27106 2018-06-19 19:31 ./testing/source/pkgtools/scripts/installpkg
-rw-r--r-- 1 root root 13672 2018-06-19 19:28 ./testing/source/pkgtools/scripts/makebootdisk
-rw-r--r-- 1 root root 15923 2018-05-22 00:23 ./testing/source/pkgtools/scripts/makepkg
-rw-r--r-- 1 root root 4712 2018-04-11 20:28 ./testing/source/pkgtools/scripts/pkgdiff
-rw-r--r-- 1 root root 21938 2018-06-19 19:28 ./testing/source/pkgtools/scripts/pkgtool
-rw-r--r-- 1 root root 15611 2018-06-19 19:39 ./testing/source/pkgtools/scripts/removepkg
-rw-r--r-- 1 root root 170 2003-02-16 00:56 ./testing/source/pkgtools/scripts/setup.70.install-kernel
-rw-r--r-- 1 root root 9164 2018-06-19 19:28 ./testing/source/pkgtools/scripts/setup.80.make-bootdisk
-rw-r--r-- 1 root root 1062 2018-04-28 19:12 ./testing/source/pkgtools/scripts/setup.htmlview
-rw-r--r-- 1 root root 8875 2018-06-19 19:28 ./testing/source/pkgtools/scripts/setup.services
-rw-r--r-- 1 root root 14138 2018-06-19 19:41 ./testing/source/pkgtools/scripts/upgradepkg
-rw-r--r-- 1 root root 1128 2018-04-11 19:51 ./testing/source/pkgtools/slack-desc
drwxr-xr-x 2 root root 4096 2018-06-18 18:15 ./usb-and-pxe-installers
-rw-r--r-- 1 root root 31203 2011-03-21 21:21 ./usb-and-pxe-installers/README_PXE.TXT
-rw-r--r-- 1 root root 9197 2013-09-25 04:33 ./usb-and-pxe-installers/README_USB.TXT

View file

@ -33,7 +33,6 @@ gzip ./source/x/motif/motif-2.3.4-mwmrc_dir.patch
gzip ./source/x/motif/motif-2.3.4-bindings.patch
gzip ./source/x/motif/motif.rgbtxt.patch
gzip ./source/x/ttf-indic-fonts/doinst.sh
gzip ./source/x/x11/patch/xf86-input-mouse/3c8f243b750a92d5837a449d344ff884dbd02b57.patch
gzip ./source/x/x11/patch/xpyb/xpyb-1.3.1-xcbproto-1.13.patch
gzip ./source/x/x11/patch/xorg-server/fix-nouveau-segfault.diff
gzip ./source/x/x11/patch/xorg-server/xorg-server.combo.mouse.keyboard.layout.patch
@ -923,6 +922,7 @@ gzip ./source/a/logrotate/logrotate.conf
gzip ./source/a/sysvinit-scripts/doinst.sh
gzip ./source/a/dialog/dialog.smaller.min.height.diff
gzip ./source/a/glibc-zoneinfo/doinst.sh
gzip ./source/a/attr/doinst.sh
gzip ./source/a/lvm2/doinst.sh
gzip ./source/a/lvm2/create-dm-run-dir.diff
gzip ./source/a/tcsh/doinst.sh
@ -1066,6 +1066,7 @@ gzip ./source/ap/linuxdoc-tools/doinst.sh
gzip ./source/t/texlive/doinst.sh
gzip ./source/t/xfig/xfig.fig.ad.diff
gzip ./source/t/xfig/xfig.no.pdf.ref.diff
gzip ./testing/source/pkgtools/doinst.sh
gzip ./pasture/source/php/php-fpm.conf.diff
gzip ./pasture/source/php/PHP-5.6.31-OpenSSL-1.1.0-compatibility-20170801.patch
gzip ./pasture/source/php/doinst.sh

View file

@ -23,8 +23,8 @@
cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=acl
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 4- -d . | rev | cut -f 2 -d -)}
BUILD=${BUILD:-2}
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
@ -53,13 +53,15 @@ else
LIBDIRSUFFIX=""
fi
NUMJOBS=${NUMJOBS:-" -j7 "}
rm -rf $PKG
mkdir -p $TMP $PKG
mkdir -p $TMP $PKG/usr/lib${LIBDIRSUFFIX}
cd $TMP
rm -rf acl-$(echo $VERSION | cut -f 1 -d '-')
tar xvf $CWD/acl-$VERSION.src.tar.?z || exit 1
tar xvf $CWD/acl-$VERSION.tar.?z || exit 1
cd acl-$(echo $VERSION | cut -f 1 -d '-') || exit 1
chown -R root:root .
@ -70,22 +72,19 @@ find . \
-exec chmod 644 {} \;
./configure \
--prefix=/ \
--exec-prefix=/ \
--sbindir=/bin \
--bindir=/usr/bin \
--libdir=/lib${LIBDIRSUFFIX} \
--libexecdir=/usr/lib${LIBDIRSUFFIX} \
--includedir=/usr/include \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc \
--localstatedir=/var \
--docdir=/usr/doc/$PKGNAM-$VERSION \
--mandir=/usr/man \
--datadir=/usr/share \
--infodir=/usr/info \
--disable-static \
--docdir=/usr/doc/acl-$VERSION \
--build=$ARCH-slackware-linux || exit 1
make PKG_DOC_DIR=/usr/doc/acl-$VERSION || exit 1
make install PKG_DOC_DIR=/usr/doc/acl-$VERSION DESTDIR=$PKG || exit 1
make install-dev PKG_DOC_DIR=/usr/doc/acl-$VERSION DESTDIR=$PKG || exit 1
make install-lib PKG_DOC_DIR=/usr/doc/acl-$VERSION DESTDIR=$PKG || exit 1
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
#It would be nice to keep the same timestamps that the files have in the source:
cp -a \
@ -96,17 +95,23 @@ cp -a \
find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
)
strip -g $PKG/usr/lib${LIBDIRSUFFIX}/*.a
# Remove bogus files:
rm -f $PKG/lib${LIBDIRSUFFIX}/*.a $PKG/lib${LIBDIRSUFFIX}/libacl.so $PKG/lib${LIBDIRSUFFIX}/*.la $PKG/usr/lib${LIBDIRSUFFIX}/*.la
# Make /usr/lib${LIBDIRSUFFIX}/libacl.so a symlink to /lib${LIBDIRSUFFIX}:
# Don't ship static libraries:
rm -f $PKG/usr/lib${LIBDIRSUFFIX}/*.a
# Don't ship .la files:
rm -f $PKG/usr/lib${LIBDIRSUFFIX}/*.la
# Move libraries, as they might be needed by programs that bring a network
# mounted /usr online:
mkdir $PKG/lib${LIBDIRSUFFIX}
( cd $PKG/usr/lib${LIBDIRSUFFIX}
rm -f libacl.so
ln -sf /lib${LIBDIRSUFFIX}/libacl.so.1 libacl.so
for file in lib*.so.?.* ; do
mv $file ../../lib${LIBDIRSUFFIX}
ln -sf ../../lib${LIBDIRSUFFIX}/$file .
done
cp -a lib*.so.? ../../lib${LIBDIRSUFFIX}
)
# Fix shared library perms:
chmod 755 $PKG/lib${LIBDIRSUFFIX}/*
# Gzip the man pages:
( cd $PKG/usr/man

1
source/a/acl/acl.url Normal file
View file

@ -0,0 +1 @@
http://download.savannah.nongnu.org/releases/acl

View file

@ -13,7 +13,7 @@ acl: POSIX Access Control Lists. POSIX Access Control Lists (defined in
acl: POSIX 1003.1e draft standard 17) are used to define more fine-grained
acl: discretionary access rights for files and directories.
acl:
acl:
acl:
acl: Homepage: http://savannah.nongnu.org/projects/acl
acl:
acl:
acl:

View file

@ -23,8 +23,8 @@
cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=attr
VERSION=2.4.47
BUILD=${BUILD:-2}
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
@ -53,12 +53,14 @@ else
LIBDIRSUFFIX=""
fi
NUMJOBS=${NUMJOBS:-" -j7 "}
rm -rf $PKG
mkdir -p $TMP $PKG
cd $TMP
rm -rf attr-$(echo $VERSION | cut -f 1 -d '-')
tar xvf $CWD/attr-$VERSION.src.tar.?z || exit 1
tar xvf $CWD/attr-$VERSION.tar.?z || exit 1
cd attr-$(echo $VERSION | cut -f 1 -d '-') || exit 1
chown -R root:root .
find . \
@ -68,22 +70,39 @@ find . \
-exec chmod 644 {} \;
./configure \
--prefix=/ \
--exec-prefix=/ \
--sbindir=/bin \
--bindir=/usr/bin \
--libdir=/lib${LIBDIRSUFFIX} \
--libexecdir=/usr/lib${LIBDIRSUFFIX} \
--includedir=/usr/include \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc \
--localstatedir=/var \
--docdir=/usr/doc/$PKGNAM-$VERSION \
--mandir=/usr/man \
--datadir=/usr/share \
--infodir=/usr/info \
--docdir=/usr/doc/attr-$VERSION \
--disable-static \
--build=$ARCH-slackware-linux || exit 1
make PKG_DOC_DIR=/usr/doc/attr-$VERSION || exit 1
make install PKG_DOC_DIR=/usr/doc/attr-$VERSION DESTDIR=$PKG || exit 1
make install-dev PKG_DOC_DIR=/usr/doc/attr-$VERSION DESTDIR=$PKG || exit 1
make install-lib PKG_DOC_DIR=/usr/doc/attr-$VERSION DESTDIR=$PKG || exit 1
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1
# Install xattr.conf as a .new file:
mv $PKG/etc/xattr.conf $PKG/etc/xattr.conf.new
# Don't ship static library:
rm -f $PKG/usr/lib${LIBDIRSUFFIX}/*.a
# Don't ship .la files:
rm -f $PKG/usr/lib${LIBDIRSUFFIX}/*.la
# Move libraries, as they might be needed by programs that bring a network
# mounted /usr online:
mkdir $PKG/lib${LIBDIRSUFFIX}
( cd $PKG/usr/lib${LIBDIRSUFFIX}
for file in lib*.so.?.* ; do
mv $file ../../lib${LIBDIRSUFFIX}
ln -sf ../../lib${LIBDIRSUFFIX}/$file .
done
cp -a lib*.so.? ../../lib${LIBDIRSUFFIX}
)
#It would be nice to keep the same timestamps that the files have in the source:
rm -rf $PKG/usr/doc/attr-$VERSION/ea-conv
@ -95,11 +114,6 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" \
| grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
strip -g $PKG/usr/lib${LIBDIRSUFFIX}/*.a
# Remove bogus files:
rm -f $PKG/lib${LIBDIRSUFFIX}/*.a $PKG/lib${LIBDIRSUFFIX}/libattr.so $PKG/lib${LIBDIRSUFFIX}/*.la $PKG/usr/lib${LIBDIRSUFFIX}/*.la
# Make /usr/lib${LIBDIRSUFFIX}/libattr.so a symlink to /lib${LIBDIRSUFFIX}:
mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}
ln -sf /lib${LIBDIRSUFFIX}/libattr.so.1 $PKG/usr/lib${LIBDIRSUFFIX}/libattr.so
# Fix shared library perms:
chmod 755 $PKG/lib${LIBDIRSUFFIX}/*
@ -111,6 +125,7 @@ chmod 755 $PKG/lib${LIBDIRSUFFIX}/*
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $TMP/attr-$(echo $VERSION | tr - _ )-$ARCH-$BUILD.txz

1
source/a/attr/attr.url Normal file
View file

@ -0,0 +1 @@
http://download.savannah.nongnu.org/releases/attr

14
source/a/attr/doinst.sh Normal file
View file

@ -0,0 +1,14 @@
#!/bin/sh
config() {
NEW="$1"
OLD="`dirname $NEW`/`basename $NEW .new`"
# If there's no config file by that name, mv it over:
if [ ! -r $OLD ]; then
mv $NEW $OLD
elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
rm $NEW
fi
# Otherwise, we leave the .new copy for the admin to consider...
}
config etc/xattr.conf.new

View file

@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=gnupg
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-2}
BUILD=${BUILD:-1}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then

View file

@ -1 +1 @@
4
1

View file

@ -1 +1 @@
3
1

View file

@ -1,2 +0,0 @@
zcat $CWD/patch/xf86-input-mouse/3c8f243b750a92d5837a449d344ff884dbd02b57.patch.gz \
| patch -p1 --verbose || { touch ${SLACK_X_BUILD_DIR}/${PKGNAME}.failed ; continue ; }

View file

@ -1,42 +0,0 @@
From 3c8f243b750a92d5837a449d344ff884dbd02b57 Mon Sep 17 00:00:00 2001
From: Adam Jackson <ajax@redhat.com>
Date: Thu, 16 Feb 2017 09:21:21 -0500
Subject: Adapt to removal of xf86GetOS
Signed-off-by: Adam Jackson <ajax@redhat.com>
---
src/mouse.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/src/mouse.c b/src/mouse.c
index dae98aa..40d97a9 100644
--- a/src/mouse.c
+++ b/src/mouse.c
@@ -794,7 +794,6 @@ InitProtocols(void)
{
int classes;
int i;
- const char *osname = NULL;
if (osInfo)
return TRUE;
@@ -821,11 +820,11 @@ InitProtocols(void)
mouseProtocols[i].id = PROT_UNSUP;
/* NetBSD uses PROT_BM for "PS/2". */
- xf86GetOS(&osname, NULL, NULL, NULL);
- if (osname && xf86NameCmp(osname, "netbsd") == 0)
- for (i = 0; mouseProtocols[i].name; i++)
- if (mouseProtocols[i].id == PROT_PS2)
- mouseProtocols[i].id = PROT_BM;
+#if defined(__NetBSD__)
+ for (i = 0; mouseProtocols[i].name; i++)
+ if (mouseProtocols[i].id == PROT_PS2)
+ mouseProtocols[i].id = PROT_BM;
+#endif
return TRUE;
}
--
cgit v1.1

View file

@ -152,6 +152,7 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
# Don't ship .la files:
rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
rm -f /usr/lib${LIBDIRSUFFIX}/libsane.la
# List additional backends in /etc/sane.d/dll.conf.
# I don't think it will hurt anything to do this, even

View file

@ -0,0 +1,69 @@
#!/bin/bash
# Migrate the package database and related directories from the long-time
# (stupid) directory /var/log to /var/lib/pkgtools.
#
# The removed_* directories will remain under /var/log (but moved to
# /var/log/pkgtools) as they contain log files of previous operations,
# not anything that's actively used for package management. Also, the
# removed_* directories can become quite large compared with the database.
#
# First, if it's just a case of missing symlinks, make them. Don't make them
# if the directories exist in /var/log - we'll do a proper migration in that
# case.
for directory in packages scripts setup ; do
if [ ! -L var/log/$directory -a ! -d var/log/$directory ]; then
if [ -d var/lib/pkgtools/$directory ]; then
# Make the symlink:
( cd var/log ; ln -sf ../lib/pkgtools/$directory . )
fi
fi
done
for directory in removed_packages removed_scripts ; do
if [ ! -L var/log/$directory -a ! -d var/log/$directory ]; then
mkdir -p var/log/pkgtools/$directory
( cd var/log ; ln -sf pkgtools/$directory . )
fi
if [ ! -L var/lib/pkgtools/$directory -a ! -d var/lib/pkgtools/$directory ]; then
mkdir -p var/lib/pkgtools
( cd var/lib/pkgtools ; ln -sf ../../log/pkgtools/$directory . )
fi
done
# If at this point /var/log/packages is not a symlink, we need to do the
# migration. We should already have a lock on being the only install script
# that's currently running, but also get a lock on ldconfig to freeze any
# other package operations that are happening now until after the migration
# is complete.
if [ ! -L var/log/packages ]; then
if [ ! -d run/lock/pkgtools ]; then
mkdir -p run/lock/pkgtools
fi
( flock 9 || exit 11
# Don't migrate if tar is running, as there may still be package operations
# going on in another process:
while pidof tar 1> /dev/null 2> /dev/null ; do
sleep 15
done
# Just to be a bit safer from race conditions:
sleep 5
# First, move the removed_* directories into a pkgtools subdirectory:
mkdir -p var/log/pkgtools
for directory in removed_packages removed_scripts ; do
if [ ! -d var/log/pkgtools/$directory ]; then
mkdir -p var/log/pkgtools/$directory
# Move anything found in the old location, then remove it:
mv var/log/$directory/* var/log/pkgtools/$directory 2> /dev/null
rm -rf var/log/$directory
# Make a symlink:
( cd var/log ; ln -sf pkgtools/$directory . )
fi
done
for directory in packages scripts setup ; do
mkdir -p var/lib/pkgtools/$directory
mv var/log/$directory/* var/lib/pkgtools/$directory 2> /dev/null
rm -rf var/log/$directory
( cd var/log
ln -sf ../lib/pkgtools/$directory .
)
done
) 9> run/lock/pkgtools/ldconfig.lock
fi

View file

@ -0,0 +1,41 @@
.\" -*- nroff -*-
.ds g \" empty
.ds G \" empty
.\" Like TP, but if specified indent is more than half
.\" the current line-length - indent, use the default indent.
.de Tp
.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
.el .TP "\\$1"
..
.TH EXPLODEPKG 8 "21 May 1994" "Slackware Version 2.0.0"
.SH NAME
explodepkg \- Extract the contents of a tar+compression package (such as a Slackware
software package) in the current directory.
.SH SYNOPSIS
.B explodepkg
.BI package
.BI [
.BI package2,
.BI package3,
.BI ...
.BI ]
.SH DESCRIPTION
.B explodepkg
uncompresses and untars Slackware *.tgz (or .tbz, .tlz, .txz) packages (or any archive
that was created by
compressing a tarfile with one of the supported compression utilities) in the current directory. It is not usually
used to install packages, since it doesn't execute the installation scripts
in ./install or ./var/lib/pkgtools/setup. The primary use for
.B explodepkg
is in package maintenance - exploding a package in a subdirectory, making fixes
to it or upgrading the software, and then building the updated package with
.B makepkg.
.SH AUTHOR
Patrick J. Volkerding <volkerdi@slackware.com>
.SH "SEE ALSO"
.BR tar(1),
.BR gzip(1),
.BR installpkg(8),
.BR makepkg(8),
.BR pkgtool(8),
.BR upgradepkg(8)

View file

@ -0,0 +1,126 @@
.\" -*- nroff -*-
.ds g \" empty
.ds G \" empty
.\" Like TP, but if specified indent is more than half
.\" the current line-length - indent, use the default indent.
.de Tp
.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
.el .TP "\\$1"
..
.TH INSTALLPKG 8 "22 Nov 2001" "Slackware Version 8.1.0"
.SH NAME
installpkg \- install Slackware packages.
.SH SYNOPSIS
.B installpkg
[
.B \--warn
]
[
.B \--md5sum
]
[
.B \--root /otherroot
]
[
.B \--infobox
]
[
.B \--menu
]
[
.B \--terse
]
[
.B \--terselength <length>
]
[
.B \--ask
]
[
.B \--priority ADD|REC|OPT|SKP
]
[
.B \--tagfile /somedir/tagfile
]
[
.B \--threads <number>
]
.BI packagename
[
.B packagename2 ...
]
.SH DESCRIPTION
.B installpkg
installs single or multiple *.txz (or .tbz, .tgz, .tlz) binary packages designed
for use with the Slackware Linux distribution onto your system.
.SH OPTIONS
.TP
.B \--warn packagename
Generate a list of files that would be overwritten to the standard output, but do
not actually install the package. The list is formatted in a suitable fashion to
use as a list of files to backup.
.TP
.B \--md5sum packagename
Record the package md5sum in the metadata written in /var/lib/pkgtools/packages.
.TP
.B \--root /otherroot
Install using a location other than / (the default) as the root of the
filesystem to install on. In the example given, use /otherroot instead. Setting
the ROOT environment variable does the same thing.
.TP
.B \--infobox
Use /bin/dialog to display an informational dialog as the package is installed.
Primarily used when installpkg is called from other scripts.
.TP
.B \--menu
Use /bin/dialog to display a menu asking the user if they would like to install the
package(s) or not. Generally used when installpkg is called from other scripts.
.TP
.B \--terse
Install the package displaying only a single description line to stdout.
.TP
.B \--terselength <length>
Maximum line length of --terse mode output. Default is the number of terminal columns.
.TP
.B \--ask
Used with -menu mode. When selected, always ask if a package should be
installed regardless of what the package's priority is.
.TP
.B \--priority ADD|REC|OPT|SKP
When installing with the \-menu option, package priority levels (found in the file
"tagfile" in the package directory) are used to automatically install (ADD) or
skip (SKP) a package, or to suggest recommended (REC) or optional (OPT) to the user
if a menu is displayed. If a priority is set on the command line, it will override
the values set in the tagfile for the entire package list.
.TP
.B \--tagfile /somedir/tagfile
Specify a different file to use for package priorities (in this example, /somedir/tagfile
will be used). The default is "tagfile" in the package's directory.
.TP
.B \--threads <number>
For xz/plzip compressed packages, set the maximum number of threads to be used for
decompression. Only has an effect if a multithreaded compressor was used, and then
only on large packages. The default for plzip is the number of CPU threads available.
The default for xz is 2.
.SH EXAMPLES
.TP
.B Install a font package for X:
.P
installpkg font-bh-ttf-1.0.3-noarch-1.txz
.P
Note that if a package is already installed, upgradepkg(8) should be used instead.
.TP
.B Create a backup of the files that would be overwritten if the package is installed:
.P
.nf
tar czvf /tmp/backup.tar.gz \\
$(installpkg --warn font-bh-ttf-1.0.3-noarch-1.txz)
.fi
.SH AUTHOR
Patrick J. Volkerding <volkerdi@slackware.com>
.SH "SEE ALSO"
.BR makepkg(8),
.BR removepkg(8),
.BR explodepkg(8),
.BR pkgtool(8),
.BR upgradepkg(8)

View file

@ -0,0 +1,164 @@
.\" -*- nroff -*-
.ds g \" empty
.ds G \" empty
.\" Like TP, but if specified indent is more than half
.\" the current line-length - indent, use the default indent.
.de Tp
.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
.el .TP "\\$1"
..
.TH MAKEPKG 8 "21 May 1994" "Slackware Version 2.0.0"
.SH NAME
makepkg \- make Slackware packages.
.SH SYNOPSIS
.B makepkg
[
.B -l, --linkadd y|n
]
[
.B -c, --chown y|n
]
[
.B --threads <number>
]
[
.B --compress <option>
]
[
.B --acls
]
[
.B --xattrs
]
.BI packagename
.SH DESCRIPTION
.B makepkg
creates a new Slackware compatible package.
The package is constructed using the contents of the current directory and
all subdirectories. If symbolic links exist, they will be converted to script
code to recreate them when the package is installed. This code will be
appended to the primary installation script
.B ( install/doinst.sh )
, or, if that script does not exist it will be created with those contents.
The package will be written out to the file
.BI packagename
which should be the full name, including the extension. This is usually .txz,
but .tgz, .tbz, and .tlz are also accepted. The proper compression utility
(xz, gzip, bzip2, or lzip) needs to be installed on the machine.
.SH OPTIONS
.TP
.B \-l, --linkadd y|n
If y, add any symbolic links found to the install script (doinst.sh) and
delete them. This is the recommended action. If this option is not used,
makepkg will prompt if symbolic links are found.
.TP
.B \-p, --prepend
If this option is given, then any symbolic links added to doinst.sh will be
prepended to the existing script. This is useful for packages that contain
shared libraries that need to be linked first because programs will use them
later in the doinst.sh script.
.TP
.B \-c, --chown y|n
If y, makepkg will reset all directory permissions to 755 and ownership to root:root.
In general, you should have the permissions and ownerships worked out yourself, so
relying on setting this option to y is somewhat sloppy. It is not the default. If an
option is not provided, makepkg will prompt.
.TP
.B --threads <number>
For xz/plzip compressed packages, set the maximum number of threads to be used for
compression. Only has an effect on large packages. For plzip, the default is the number
of CPU threads available. For xz, the default is 2 (due to commonly occuring memory
related failures on 32-bit with too many threads and multithreaded xz compression).
.TP
.B --compress <option>
Supply a custom option to the compressor. This will be used in place of the default, which is: -9
.TP
.B --acls
Support storing POSIX ACLs in the package. The resulting package will not be compatible
with pkgtools version < 15.0.
.TP
.B --xattrs
Support storing extended attributes in the package. The resulting package will not be
compatible with pkgtools version < 15.0.
.SH INSTALLATION SCRIPTS
There are 3 types of installation scripts supported in the Slackware package
system.
.TP
The first is the
.B primary
installation script. This is found in the subdirectory
.B ./install
and must have the name
.B doinst.sh
in order to be recognized. This ( and other install scripts ) should be written
using the basic Bourne shell syntax recognized by the
.B ash
shell, since this is the shell that will be used to execute the script when
installing from a Slackware install floppy. This is a common trap - beware of
using
.B bash
syntax extensions, because the script will work fine when installed from the
hard drive, but will bomb out when installed from floppy. If the package is
for personal use, this isn't a problem. Be careful, though, if you plan to
share your package with other users. The
.B primary installation script
is executed immediately after the package is installed with
.B installpkg, pkgtool,
or
.B setup.
.TP
The second type of script is the
.B configuration
script. This is found in the subdirectory
.B ./var/lib/pkgtools/setup
and must have a name that starts with
.B setup.
in order to be recongnized. An example is the timezone script:
.B /var/lib/pkgtools/setup/setup.timeconfig.
These scripts are executed during the
.B CONFIGURE
phase of
.B setup,
and are re-executed each time the user runs the
.B CONFIGURE
option from
.B setup
from then on.
Typically, the user will go through this phase of setup following the
installation of all the packages. Anything that needs to be interactive
should go in one of these scripts to avoid halting the package installation
process during
.B setup.
.TP
The third type of script is the
.B onlyonce
script. Like the name suggests, these are executed only once after the package
is installed, in contrast to the standard
.B configuration
script. These scripts are also found in the
.B ./var/lib/pkgtools/setup
directory and must have a name that starts with
.B setup.,
but in addition the name must contain the string
.B onlyonce.
An example might be a script with the name
.B /var/lib/pkgtools/setup/setup.onlyonce.testscript
.SH PACKAGE FORMAT
.B makepkg
uses GNU tar plus GNU gzip to create its packages. A simple way to
extract the contents of a package (without executing the installation
scripts, of course) is to use a command like this:
.TP
explodepkg package.tgz
.TP
Or, something like this:
.TP
gzip -dc package.tgz | tar xvvf -
.SH AUTHOR
Patrick J. Volkerding <volkerdi@slackware.com>
.SH "SEE ALSO"
.BR installpkg(8),
.BR explodepkg(8),
.BR removepkg(8),
.BR pkgtool(8),
.BR upgradepkg(8)

View file

@ -0,0 +1,57 @@
.\" -*- nroff -*-
.ds g \" empty
.ds G \" empty
.\" Like TP, but if specified indent is more than half
.\" the current line-length - indent, use the default indent.
.de Tp
.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
.el .TP "\\$1"
..
.TH PKGDIFF 8 "11 Apr 2018" "Slackware Version 15.0
.SH NAME
pkgdiff \- compare the file contents of two packages.
.SH SYNOPSIS
.B pkgdiff
[
.B \--help
]
[
.B \-c
]
[
.B \-a
]
.BI packagename
.BI packagename2
.SH DESCRIPTION
.B pkgdiff
Displays the differences in the files contained in two packages. This works with
plain .tar, Slackware packages (.tgz, .tbz, .tlz, .txz), .rpm, and .deb. By default,
the results will be displayed in a tree-style unified diff format.
.SH OPTIONS
.TP
.B \--help
Display help for using the pkgdiff utility.
.TP
.B \-c
Colorize the tree-style output a-la DIR_COLORS. If piping to a pager such as
less, you'll need to enable displaying raw data. For example:
.P
pkgdiff -c package-1.0-i586-1.txz package-2.0-i586-1.txz | less -r
.TP
.B \-a
Instead of a tree-style output format, generate a simple unified diff of the
package file lists.
.SH EXAMPLES
.TP
.B Compare two packages and pipe the result to less:
.P
pkgdiff package-1.0-i586-1.txz package-2.0-i586-1.txz | less
.SH AUTHOR
Patrick J. Volkerding <volkerdi@slackware.com>
.SH "SEE ALSO"
.BR makepkg(8),
.BR removepkg(8),
.BR explodepkg(8),
.BR pkgtool(8),
.BR upgradepkg(8)

View file

@ -0,0 +1,95 @@
.\" -*- nroff -*-
.ds g \" empty
.ds G \" empty
.\" Like TP, but if specified indent is more than half
.\" the current line-length - indent, use the default indent.
.de Tp
.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
.el .TP "\\$1"
..
.TH PKGTOOL 8 "24 Nov 1995" "Slackware Version 3.1.0"
.SH NAME
pkgtool \- software package maintenance tool.
.SH SYNOPSIS
.B pkgtool
.LP
.B pkgtool
[
.B --sets #a#b#c#
]
[
.B --source_mounted
]
[
.B --ignore_tagfiles
]
[
.B --tagfile tagfile
]
[
.B --source_dir directory
]
[
.B --target_dir directory
]
[
.B --source_device device
]
.SH DESCRIPTION
.B pkgtool
is a menu-driven package maintenance tool provided with the Slackware Linux
distribution. It allows the user to install, remove, or view
software packages through an interactive
system. Pkgtool can also be used to re-run the menu-driven scripts normally
executed at the end of a Slackware installation. This is useful for doing
basic reconfiguration (like changing the mouse type).
.SH OPTIONS
Most users will not want to use any options when running
.B pkgtool.
These are generally used only when
.B pkgtool
is run during the initial system installation.
Feel free to try them, but be careful.
.TP
.B \--sets #A#B#C#
Install the disk sets A, B, C. Seperate the disk set names by '#' symbols.
.TP
.B \--source_mounted
When this flag is present,
.B pkgtool
will not attempt to unmount and remount the source device with each disk.
.TP
.B \--ignore_tagfiles
When this flag is present,
.B pkgtool
will install every package encountered no matter what the tagfiles say.
.TP
.B \--tagfile tagfile
This flag is used to specify from the command line which tagfile should be
used for the installation.
.TP
.B \--source_dir directory
Used when installing multiple packages from disk sets. This is the directory
in which the subdirectories for each disk are found. This isn't used when
installing from floppy.
.TP
.B \--target_dir directory
The directory where the target root directory is located. This is '/' when
installing on the hard drive, or typically '/mnt' when installing from an
install disk.
.TP
.B \--source_device device
The source device to install from. This is not used if you've provided the
.B \--source_mounted
flag. It's usually used when installing from floppy, as in:
\--source_device /dev/fd0u1440
or
\--source_device /dev/fd1h1200.
.SH AUTHOR
Patrick J. Volkerding <volkerdi@slackware.com>
.SH "SEE ALSO"
.BR makepkg(8),
.BR explodepkg(8),
.BR installpkg(8),
.BR removepkg(8),
.BR upgradepkg(8)

View file

@ -0,0 +1,114 @@
.\" -*- nroff -*-
.ds g \" empty
.ds G \" empty
.\" Like TP, but if specified indent is more than half
.\" the current line-length - indent, use the default indent.
.de Tp
.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
.el .TP "\\$1"
..
.TH REMOVEPKG 8 "23 Nov 2001" "Slackware Version 8.1.0"
.SH NAME
removepkg \- remove Slackware packages.
.SH SYNOPSIS
.B removepkg
.BI packagename
.LP
[
.B ROOT=/mnt
]
.B removepkg
[
.B \--copy
]
[
.B \--keep
]
[
.B \--preserve
]
[
.B \--terse
]
[
.B \--warn
]
.BI packagename
.SH DESCRIPTION
.B removepkg
removes a previously installed Slackware package, while writing a progress
report to the standard output. A package may be specified either by the
full package name (as you'd see listed in /var/lib/pkgtools/packages/), or by the
base package name. For example, the package foo-1.0-i586-1.txz may be removed
with any of the following commands:
removepkg foo-1.0-i586-1.txz (also recognized: .tgz, .tbz, .tlz)
removepkg foo-1.0-i586-1
removepkg foo.txz
removepkg foo
When deleting files,
.B removepkg
will analyze the contents of the other packages installed on your system, and
will only delete the files that are unique to the package being removed.
Similarly, the installation scripts for all the other packages will be
considered when deciding whether or not to delete symbolic links from the
package.
.LP
Removing a package (as well as installing one) can be a dangerous undertaking.
For this reason, there is the
.B \-warn
option available. When you use this,
.B removepkg
will not actually remove any files or links, but will output a detailed report
of what it would do if you actually did remove the package. It's suggested that
you do this (and maybe pipe the output to
.B less
) before removing packages to make sure you've backed up anything that might
be important.
.LP
When removing a package, it's original file index will be moved from
/var/lib/pkgtools/packages to /var/log/pkgtools/removed_packages. Likewise, its installation
script will be moved from /var/lib/pkgtools/scripts to /var/log/pkgtools/removed_scripts.
.SH OPTIONS
.TP
.B \--copy packagename
Construct a copy of the package under /var/lib/pkgtools/setup/tmp/preserved_packages/packagename,
but don't remove it. (same effect as \-warn \-preserve)
.TP
.B \--keep
Save the intermediate files created by removepkg (delete_list,
required_files, uniq_list, del_link_list, required_links,
required_list). Mostly useful for debugging purposes.
.TP
.B \--preserve packagename
If specified, the complete package subtree is reconstructed in
/var/lib/pkgtools/setup/tmp/preserved_packages/packagename.
.TP
.B \--terse
Remove the package displaying only a single description line to stdout.
.TP
.B \--warn packagename
Generate a report to the standard output about which files and directories
would be removed, but does not actually remove the package.
.SH " "
It's possible to remove a package from a filesystem
other than / by supplying
.B removepkg
with a
.B ROOT
environment variable:
.TP
.B ROOT=/mnt removepkg package
.SH AUTHORS
Patrick J. Volkerding <volkerdi@slackware.com>,
with enhancements by Christian Franke <c.franke@acm.org>
.SH "SEE ALSO"
.BR installpkg(8),
.BR makepkg(8),
.BR pkgtool(8),
.BR upgradepkg(8)

View file

@ -0,0 +1,116 @@
.\" -*- nroff -*-
.ds g \" empty
.ds G \" empty
.\" Like TP, but if specified indent is more than half
.\" the current line-length - indent, use the default indent.
.de Tp
.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
.el .TP "\\$1"
..
.TH UPGRADEPKG 8 "31 May 2002" "Slackware Version 8.1.0"
.SH NAME
upgradepkg \- upgrade Slackware packages.
.SH SYNOPSIS
.B upgradepkg
[
.B --dry-run
]
[
.B --install-new
]
[
.B --reinstall
]
[
.B \--terse
]
[
.B \--terselength <length>
]
[
.B --verbose
]
.BI newpackagename
.BI [ newpackagename2 ]
.LP
.B upgradepkg
[
.B --dry-run
]
[
.B --install-new
]
[
.B --reinstall
]
[
.B \--terse
]
[
.B \--terselength <length>
]
[
.B --verbose
]
.BI oldpackagename%newpackagename
.BI [ old2%new2 ]
.SH DESCRIPTION
.B upgradepkg
upgrades a Slackware package from an older version to a
newer one. It does this by
.B INSTALLING
the new package onto the system, and then
.B REMOVING
any files from the old package that aren't in the new package.
If the old and new packages have the same name, a single argument is all that
is required. If the packages have different names, supply the name of the
old package followed by a percent symbol (%), then the name of the new package.
Do not add any extra whitespace between pairs of old/new package names.
.P
Before upgrading a package, save any configuration files (such as in /etc)
that you wish to keep. Sometimes these will be preserved, but it depends on
the package structure. If you want to force new versions of the config files
to be installed, remove the old ones manually prior to running upgradepkg.
.P
If upgradepkg finds more than one installed package matching the old package's
name, it will remove them all.
.TP
To upgrade in a directory other than / (such as /mnt):
.TP
ROOT=/mnt upgradepkg package.txz (or .tbz, .tgz, .tlz)
.SH OPTIONS
.TP
.B \--dry-run
Output a report about which packages would be installed or upgraded
but don't actually perform the upgrades.
.TP
.B \--install-new
Normally upgradepkg only upgrades packages that are already installed on the system, and
will skip any packages that do not already have a version installed.
If
.B --install-new
is specified, the behavior is modified to install new packages in addition to upgrading
existing ones.
.TP
.B \--reinstall
Upgradepkg usually skips packages if the exact same package
(matching name, version, arch, and build number) is already installed on the system.
Use the --reinstall option if you want to upgrade all packages even if the same
version is already installed.
.TP
.B \--terse
Upgrade the package displaying only a single description line to stdout.
.TP
.B \--terselength <length>
Maximum line length of --terse mode output. Default is the number of terminal columns.
.TP
.B \--verbose
Show all the gory details of the upgrade.
.SH AUTHOR
Patrick J. Volkerding <volkerdi@slackware.com>
.SH "SEE ALSO"
.BR makepkg(8),
.BR installpkg(8),
.BR removepkg(8),
.BR explodepkg(8),
.BR pkgtool(8)

View file

@ -0,0 +1,109 @@
#!/bin/bash
# Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2018 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# Set initial variables:
cd $(dirname $0) ; CWD=$(pwd)
if [ "$TMP" = "" ]; then
TMP=/tmp
fi
PKG=$TMP/package-pkgtools
PKGNAM=pkgtools
# *** UPDATE THESE WITH EACH BUILD:
VERSION=15.0
ARCH=${ARCH:-noarch}
BUILD=${BUILD:-20}
# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
# the name of the created package would be, and then exit. This information
# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz"
exit 0
fi
if [ ! -d $TMP ]; then
mkdir -p $TMP # location to build the source
fi
rm -rf $PKG
mkdir -p $PKG
# Install Slackware script manpages:
( cd $CWD/manpages
mkdir -p $PKG/usr/man/man8
for page in explodepkg.8 installpkg.8 makepkg.8 upgradepkg.8 pkgdiff.8 \
pkgtool.8 removepkg.8 ; do
cat $page | gzip -9c > $PKG/usr/man/man8/$page.gz
done
)
# Install internationalized manpages from
# http://slint.fr/forSlackware/man_l10n/pkgtools/
( cd $PKG/usr/man
tar xf $CWD/manpages-l10n.tar.xz
for page in manpages-l10n/* ; do
manpage=$(basename $page)
mkdir -p ${manpage%%.*}/man8
mv $page ${manpage%%.*}/man8/${page#*.}.8
done
gzip -9 */man8/*.8
rmdir manpages-l10n
)
# Install Slackware scripts:
( cd $CWD/scripts
# Install the core Slackware package tools:
mkdir -p $PKG/sbin
# Don't include makebootdisk... it's useless since a kernel won't fit on a
# floppy disk, and nobody uses floppies any more anyway.
for file in explodepkg installpkg makepkg pkgdiff pkgtool removepkg upgradepkg ; do
cp -a $CWD/scripts/$file $PKG/sbin
done
chown root:root $PKG/sbin/*
chmod 755 $PKG/sbin/*
# These scripts are used during the installation:
mkdir -p $PKG/var/lib/pkgtools/setup/tmp
chmod 700 $PKG/var/lib/pkgtools/setup/tmp
for file in setup.* ; do
cp -a $file $PKG/var/lib/pkgtools/setup
done
chown root:root $PKG/var/lib/pkgtools/setup/setup.*
chmod 755 $PKG/var/lib/pkgtools/setup/setup.*
# Add a link for makebootstick:
( cd $PKG/sbin ; ln -sf ../var/lib/pkgtools/setup/setup.80.make-bootdisk makebootstick )
)
# Create the base directories (not really necessary, but doesn't hurt):
mkdir -p $PKG/var/lib/pkgtools/{packages,scripts}
mkdir -p $PKG/var/log/pkgtools/{removed_packages,removed_scripts}
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
# Build the package:
cd $PKG
makepkg -l y -c n $TMP/pkgtools-$VERSION-$ARCH-$BUILD.txz
echo
echo "HEY -- did you remember to update the version numbers in the setup scripts?"
echo

View file

@ -0,0 +1,109 @@
#!/bin/sh
# Copyright 1994, 1998, 2000 Patrick Volkerding, Concord, CA, USA
# Copyright 2001, 2003 Slackware Linux, Inc., Concord, CA, USA
# Copyright 2007, 2009, 2017, 2018 Patrick Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
if [ $# = 0 ]; then
cat << EOF
Usage: explodepkg package_name [package_name2, ...]
Explodes a Slackware compatible software package
(or any tar+{gzip,bzip2,lz,xz archive) in the current directory.
Equivalent to (for each package listed):
( umask 000 ; cat package_name | COMPRESSOR -dc | tar xpvf package_name )
Note: This should only be used for debugging or examining packages, not for
installing them. It doesn't execute installation scripts or update the package
indexes in /var/lib/pkgtools/packages and /var/lib/pkgtools/scripts.
EOF
fi
# Set maximum number of threads to use. By default, this will be the number
# of CPU threads:
THREADS="$(nproc)"
# Main loop:
for PKG in $* ; do
echo "Exploding package $PKG in current directory:"
# Determine extension:
packageext="$( echo $PKG | rev | cut -f 1 -d . | rev)"
# Determine compression utility:
case $packageext in
'tgz' )
packagecompression=gzip
;;
'gz' )
packagecompression=gzip
;;
'tbz' )
if which lbzip2 1> /dev/null 2> /dev/null ; then
packagecompression=lbzip2
else
packagecompression=bzip2
fi
;;
'bz2' )
if which lbzip2 1> /dev/null 2> /dev/null ; then
packagecompression=lbzip2
else
packagecompression=bzip2
fi
;;
'tlz' )
if which plzip 1> /dev/null 2> /dev/null ; then
packagecompression="plzip --threads=${THREADS}"
elif which lzip 1> /dev/null 2> /dev/null ; then
packagecompression=lzip
else
echo "ERROR: lzip compression utility not found in \$PATH."
exit 3
fi
;;
'lz' )
if which plzip 1> /dev/null 2> /dev/null ; then
packagecompression="plzip --threads=${THREADS}"
elif which lzip 1> /dev/null 2> /dev/null ; then
packagecompression=lzip
else
echo "ERROR: lzip compression utility not found in \$PATH."
exit 3
fi
;;
'lzma' )
packagecompression=lzma
;;
'txz' )
packagecompression="xz --threads=${THREADS}"
;;
'xz' )
packagecompression="xz --threads=${THREADS}"
;;
esac
( umask 000 ; cat $PKG | $packagecompression -dc | tar --xattrs --xattrs-include='*' --keep-directory-symlink -xpvf - 2> /dev/null )
if [ -r install/doinst.sh ]; then
echo
echo "An installation script was detected in ./install/doinst.sh, but"
echo "was not executed."
fi
done

View file

@ -0,0 +1,713 @@
#!/bin/sh
# Copyright 1994, 1998, 2000 Patrick Volkerding, Concord, CA, USA
# Copyright 2001, 2003 Slackware Linux, Inc., Concord, CA, USA
# Copyright 2007, 2009, 2011, 2017, 2018 Patrick Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Mon Jun 4 21:17:58 UTC 2018
# Migrate the package database and directories from /var/log to
# /var/lib/pkgtools. /var/log was never a good place for this data, as it is
# considered by many to be a directory that could be wiped to free up some
# space. Originally the package database was in /var/adm, but the FSSTND
# (later FHS) group decided that directory should be a symlink to /var/log,
# and I went along with that since it was years ago and I was a n00b and didn't
# know any better. /var/lib/pkgtools will be a better and safer location.
#
# Thu May 24 20:23:55 UTC 2018
# Added --terselength option to set the line length in --terse mode.
# Allow adding NOLOCK in an install script to allow it to run without locking.
#
# Sat May 19 22:42:03 UTC 2018
# Implement locking to prevent screen output or install script collisions if
# multiple copies of installpkg are running simultaneously.
# Use ${MCOOKIE} instead of $$ (might as well, since we already generated it).
#
# Tue Apr 17 17:26:44 UTC 2018
# Quit with the funny business in /install. Note however that /install still
# isn't a safe directory to use in a package for anything other than package
# metadata. Other files placed there are going to be left on the system in
# /installpkg-$(mcookie). That could be worked around, but we'll wait until
# someone reports there is a need. The main reason to do this is that /install
# was a collision point if more than one copy of installpkg was running at
# once. With this change, the pkgtools are (more or less) thread-safe.
#
# Tue Feb 13 01:19:46 UTC 2018
# Use recent tar, and support restoring POSIX ACLs and extended attributes.
#
# Tue Dec 12 21:49:48 UTC 2017
# If possible, use multiple decompression threads.
#
# Thu Dec 7 04:09:17 UTC 2017
# Change meaning of .tlz to tar.lz (lzip)
#
# Sun Sep 6 21:58:36 BST 2009
# Replaced usage of "cat" with STDIN redirection or file name parameters
# to speed up execution on ARM.
# Replaced pkgbase & package_name code with 'sed' script by Jim Hawkins.
#
# Sat Apr 25 21:18:53 UTC 2009
# Converted to use new pkgbase() function to remove pathname and
# valid package extensions.
#
# Sat Apr 4 22:58:06 CDT 2009
# Support additional compression formats if the supporting utilities exist:
# .tbz - bzip2
# .tlz - lzma
# .txz - xz (also LZMA)
# And of course, .tgz (gzip) is not going anywhere. :-) <volkerdi>
# Add command switches to determine the uncompressed package size even if
# that will slow things down, and to add the package's md5sum to the
# metadata stored in /var/log/packages/.
#
# Fri Dec 21 17:21:35 CST 2007
# Added a patch from Johnny Morano to work around package removal issues
# caused by packages that do not comply with FHS combined with a grep
# regex error in installpkg. Any package with a single-letter top-
# level directory could not be removed.
#
# Shortened some of the top-line dialog output to avoid overflowing the
# textbox (needed as some of the packages, especially in X, have very
# long base package names now). <pjv>
#
# Sun Nov 26 12:38:25 CST 1995
# Added patch from Glenn Moloney <glenn@physics.unimelb.edu.au> to allow
# packages to be installed to directories other than /.
#
# Wed Mar 18 15:15:51 CST 1998
# Changed $TMP directory to /var/log/setup/tmp, and chmod'ed it 700 to close
# some security holes.
# Return a package name that has been stripped of the dirname portion
# and any of the valid extensions (only):
pkgbase() {
# basename + strip extensions .tbz, .tgz, .tlz and .txz
echo "$1" | sed 's?.*/??;s/\.t[bglx]z$//'
}
# If installpkg encounters a problem, it will return a non-zero error code.
# If it finds more than one problem (i.e. with a list of packages) you'll only
# hear about the most recent one. :)
# 1 = tar returned error code
# 2 = corrupt compression envelope
# 3 = does not end in .tgz
# 4 = no such file
# 5 = external compression utility missing
# 99 = user abort from menu mode
EXITSTATUS=0
# Do not store md5sums by default:
MD5SUM=0
# So that we know what to expect...
umask 022
# If we have mcookie and a tar that is recent enough to support --transform,
# then we can stop needlessly erasing files in the /install directory while
# also making installpkg thread-safe. Don't check for recent tar - we'll
# already break from --attrs and --xattrs anyway if the wrong tar is used.
if which mcookie 1> /dev/null 2> /dev/null ; then
MCOOKIE=$(mcookie)
INSTDIR=installpkg-${MCOOKIE}
else
# Well, we will make due with this:
MCOOKIE=$$
INSTDIR=installpkg-${MCOOKIE}
fi
# Create a lockfile directory if it doesn't exist. We can use it to prevent
# screen corruption (from multiple dialogs) and install script collisions
# (from multiple scripts trying to work on the same files) in the case of
# parallel instances of installpkg.
INSTLOCKDIR=${INSTLOCKDIR:-/run/lock/pkgtools}
if [ ! -d $INSTLOCKDIR ]; then
mkdir -p $INSTLOCKDIR
fi
usage() {
cat << EOF
Usage: installpkg [options] <package_filename>
Installpkg is used to install a .t{gz,bz,lz,xz} package like this:
installpkg slackware-package-1.0.0-i486-1.tgz (or .tbz, .tlz, .txz)
options: --warn (warn if files will be overwritten, but do not install)
--root /mnt (install someplace else, like /mnt)
--infobox (use dialog to draw an info box)
--terse (display a one-line short description for install)
--terselength <length> (line length in terse mode - default is
the number of columns available)
--menu (confirm package installation with a menu, unless
the priority is [required] or ADD)
--ask (used with menu mode: always ask if a package should be
installed regardless of what the package's priority is)
--priority ADD|REC|OPT|SKP (provide a priority for the entire
package list to use instead of the priority in the
tagfile)
--tagfile /somedir/tagfile (specify a different file to use
for package priorities. The default is "tagfile" in
the package's directory)
--threads <number> For xz/plzip compressed packages, set the max
number of threads to be used for decompression. Only has
an effect if a multithreaded compressor was used, and then
only on large packages. For plzip, the default is equal to
the number of CPU threads available on the machine. For xz,
the default is equal to 2.
--md5sum (record the package's md5sum in the metadata file)
EOF
}
# Eliminate whitespace function:
crunch() {
while read FOO ; do
echo $FOO
done
}
# Strip version, architecture and build from the end of the name
package_name() {
pkgbase $1 | sed 's?-[^-]*-[^-]*-[^-]*$??'
}
# Set maximum number of threads to use. By default, this will be the number
# of CPU threads:
THREADS="$(nproc)"
# Set default line length for terse mode:
if tty -s && which tput 1> /dev/null 2> /dev/null ; then
TERSELENGTH=$(tput cols)
else
TERSELENGTH=80
fi
# Default install mode is standard text mode:
MODE=install
# If $TERSE is set to 0 in the environment, then use terse mode:
if [ "$TERSE" = "0" ]; then
MODE=terse
fi
# Parse options:
while [ 0 ]; do
if [ "$1" = "-warn" -o "$1" = "--warn" ]; then
MODE=warn
shift 1
elif [ "$1" = "-md5sum" -o "$1" = "--md5sum" ]; then
MD5SUM=1
shift 1
elif [ "$1" = "-infobox" -o "$1" = "--infobox" ]; then
MODE=infobox
shift 1
elif [ "$1" = "-terse" -o "$1" = "--terse" ]; then
MODE=terse
shift 1
elif [ "$1" = "-terselength" -o "$1" = "--terselength" ]; then
TERSELENGTH=$2
shift 2
elif [ "$1" = "-menu" -o "$1" = "--menu" ]; then
MODE=menu
shift 1
elif [ "$1" = "-ask" -o "$1" = "--ask" ]; then
ALWAYSASK="yes"
shift 1
elif [ "$1" = "-tagfile" -o "$1" = "--tagfile" ]; then
if [ -r "$2" ]; then
USERTAGFILE="$2"
elif [ -r "$(pwd)/$2" ]; then
USERTAGFILE="$(pwd)/$2"
else
usage
exit
fi
shift 2
elif [ "$1" = "-threads" -o "$1" = "--threads" ]; then
THREADS="$2"
shift 2
# xz has not yet implemented multi-threaded decompression.
# Who knows if or how well it will work...
XZ_THREADS_FORCED=yes
elif [ "$1" = "-priority" -o "$1" = "--priority" ]; then
if [ "$2" = "" ]; then
usage
exit
fi
USERPRIORITY="$2"
shift 2
elif [ "$1" = "-root" -o "$1" = "--root" ]; then
if [ "$2" = "" ]; then
usage
exit
fi
ROOT="$2"
shift 2
else
break
fi
done
# Set the prefix for the package database directories (packages, scripts).
ADM_DIR="$ROOT/var/lib/pkgtools"
# Set the prefix for the removed packages/scripts log files:
LOG_DIR="$ROOT/var/log/pkgtools"
# If the directories don't exist, "initialize" the package database:
for PKGDBDIR in packages scripts setup ; do
if [ ! -d $ADM_DIR/$PKGDBDIR ]; then
mkdir -p $ADM_DIR/$PKGDBDIR
chmod 755 $ADM_DIR/$PKGDBDIR
fi
done
for PKGLOGDIR in removed_packages removed_scripts ; do
if [ ! -d $LOG_DIR/$PKGLOGDIR ]; then
rm -rf $LOG_DIR/$PKGLOGDIR # make sure it's not a symlink or something stupid
mkdir -p $LOG_DIR/$PKGLOGDIR
chmod 755 $LOG_DIR/$PKGLOGDIR
fi
done
# Likewise, make sure that the symlinks in /var/log exist. We no longer
# trust anything to remain in /var/log. Let the admin wipe it if that's
# what they like.
for symlink in packages scripts setup ; do
if [ ! -L $LOG_DIR/../$symlink -a ! -d $LOG_DIR/../$symlink ]; then
( cd $LOG_DIR/.. ; ln -sf ../lib/pkgtools/$symlink . )
fi
done
# Make sure there's a proper temp directory:
TMP=$ADM_DIR/setup/tmp
# If the $TMP directory doesn't exist, create it:
if [ ! -d $TMP ]; then
mkdir -p $TMP
chmod 700 $TMP # no need to leave it open
fi
# usage(), exit if called with no arguments:
if [ $# = 0 ]; then
usage;
exit
fi
# If -warn mode was requested, produce the output and then exit:
if [ "$MODE" = "warn" ]; then
while [ -f "$1" ]; do
mkdir -p $TMP/scan${MCOOKIE}
# Determine extension:
packageext="$( echo $1 | rev | cut -f 1 -d . | rev)"
# Determine decompressor utility:
case $packageext in
'tgz' )
packagecompression=gzip
;;
'tbz' )
if which lbzip2 1> /dev/null 2> /dev/null ; then
packagecompression=lbzip2
else
packagecompression=bzip2
fi
;;
'tlz' )
if which plzip 1> /dev/null 2> /dev/null ; then
packagecompression="plzip --threads=${THREADS}"
elif which lzip 1> /dev/null 2> /dev/null ; then
packagecompression=lzip
else
echo "ERROR: lzip compression utility not found in \$PATH."
exit 3
fi
;;
'txz' )
if [ ! "$XZ_THREADS_FORCED" = "yes" ]; then
packagecompression="xz --threads=${THREADS}"
else
packagecompression="xz --threads=2"
fi
;;
esac
( cd $TMP/scan${MCOOKIE} ; $packagecompression -dc | tar xf - install ) < $1 2> /dev/null
if [ -r $TMP/scan${MCOOKIE}/install/doinst.sh ]; then
if grep ' rm -rf ' $TMP/scan${MCOOKIE}/install/doinst.sh 1>/dev/null 2>/dev/null ; then
grep ' rm -rf ' $TMP/scan${MCOOKIE}/install/doinst.sh > $TMP/scan${MCOOKIE}/install/delete
for f in `cat $TMP/scan${MCOOKIE}/install/delete | cut -f 3,7 -d ' ' | tr ' ' '/'`; do
f="/$f"
if [ -f "$f" -o -L "$f" ]; then
echo "$f"
fi
done
fi
if [ -d $TMP/scan${MCOOKIE} ]; then
( cd $TMP/scan${MCOOKIE} ; rm -rf install ) 2> /dev/null
( cd $TMP ; rmdir scan${MCOOKIE} ) 2> /dev/null
fi
fi
for f in `( $packagecompression -dc | tar tf - ) < $1 | grep -v 'drwx'`; do
f="/$f"
if [ -f "$f" -o -L "$f" ]; then
echo "$f"
fi
done
shift 1
done
exit
fi
# Main loop:
for package in $* ; do
# Simple package integrity check:
if [ ! -f $package ]; then
EXITSTATUS=4
if [ "$MODE" = "install" ]; then
echo "Cannot install $package: file not found"
fi
continue;
fi
# "shortname" isn't really THAT short...
# it's just the full name without ".t{gz,bz,lz,xz}"
shortname="$(pkgbase $package)"
packagedir="$(dirname $package)"
# This is the base package name, used for grepping tagfiles and descriptions:
packagebase="$(package_name $shortname)"
# Reject package if it does not end in '.t{gz,bz,lz,xz}':
if [ "$shortname" = "$(basename $package)" ]; then
EXITSTATUS=3
if [ "$MODE" = "install" ]; then
echo "Cannot install $package: file does not end in .tgz, .tbz, .tlz, or .txz"
fi
continue;
fi
# Determine extension:
packageext="$(echo $package | rev | cut -f 1 -d . | rev)"
# Determine compressor utility:
case $packageext in
'tgz' )
packagecompression=gzip
;;
'tbz' )
if which lbzip2 1> /dev/null 2> /dev/null ; then
packagecompression=lbzip2
else
packagecompression=bzip2
fi
;;
'tlz' )
if which plzip 1> /dev/null 2> /dev/null ; then
packagecompression="plzip --threads=${THREADS}"
elif which lzip 1> /dev/null 2> /dev/null ; then
packagecompression=lzip
else
echo "ERROR: lzip compression utility not found in \$PATH."
exit 3
fi
;;
'txz' )
if [ ! "$XZ_THREADS_FORCED" = "yes" ]; then
packagecompression="xz --threads=${THREADS}"
else
packagecompression="xz --threads=2"
fi
;;
esac
# Test presence of external compression utility:
if ! $(echo $packagecompression | cut -f 1 -d ' ') --help 1> /dev/null 2> /dev/null ; then
EXITSTATUS=5
if [ "$MODE" = "install" ]; then
echo "Cannot install $package: external compression utility $packagecompression missing"
fi
continue;
fi
# Determine package's priority:
unset PRIORITY
if [ "$USERTAGFILE" = "" ]; then
TAGFILE="$packagedir/tagfile"
else
TAGFILE="$USERTAGFILE"
fi
if [ ! -r "$TAGFILE" ]; then
TAGFILE=/dev/null
fi
if grep "^$packagebase:" "$TAGFILE" | grep ADD > /dev/null 2> /dev/null ; then
PRIORITY="ADD"
elif grep "^$packagebase:" "$TAGFILE" | grep REC > /dev/null 2> /dev/null ; then
PRIORITY="REC"
elif grep "^$packagebase:" "$TAGFILE" | grep OPT > /dev/null 2> /dev/null ; then
PRIORITY="OPT"
elif grep "^$packagebase:" "$TAGFILE" | grep SKP > /dev/null 2> /dev/null ; then
PRIORITY="SKP"
fi
if [ "$PRIORITY" = "ADD" ]; then
PMSG="[ADD]"
elif [ "$PRIORITY" = "REC" ]; then
PMSG="[REC]"
elif [ "$PRIORITY" = "OPT" ]; then
PMSG="[OPT]"
elif [ "$PRIORITY" = "SKP" ]; then
PMSG="[SKP]"
else
PMSG=""
fi
# If a tagfile wants this package to be skipped, do that now before
# wasting any more CPU on it:
if [ "$PRIORITY" = "SKP" -a ! "$ALWAYSASK" = "yes" ]; then
continue # next package
fi
# Figure out some package information, like the compressed and uncompressed
# sizes, and where to find the package description:
COMPRESSED="$(/bin/du -sh "$(readlink -f $package)" | cut -f 1)"
DESCRIPTION=""
# First check for .txt file next to the package, since this is faster:
if grep "^$packagebase:" "$packagedir/$shortname.txt" 1> /dev/null 2> /dev/null ; then
DESCRIPTION="$packagedir/$shortname.txt"
elif grep "^$shortname:" "$packagedir/$shortname.txt" 1> /dev/null 2> /dev/null ; then
DESCRIPTION="$packagedir/$shortname.txt"
fi
# Test tarball integrity and get uncompressed package size:
if [ "$MODE" = "install" ]; then
echo "Verifying package $(basename $package)."
fi
# The stray cat reduces the frequency of the lack of reported size.
# If it still fails, we hit it with a bigger hammer down below.
cat $package | $packagecompression -dc | LC_ALL=C dd 2> $TMP/tmpsize${MCOOKIE} | cat | tar tf - 2> /dev/null 1> $TMP/tmplist${MCOOKIE}
TARERROR=$?
if [ ! "$TARERROR" = "0" ]; then
EXITSTATUS=1 # tar file corrupt
if [ "$MODE" = "install" ]; then
echo "Unable to install $package: tar archive is corrupt (tar returned error code $TARERROR)"
fi
rm -f $TMP/tmplist${MCOOKIE} $TMP/tmpsize${MCOOKIE}
continue
fi
UNCOMPRESSED="$(cat $TMP/tmpsize${MCOOKIE} | tail -n 1 | cut -f 1 -d ' ' | numfmt --to=iec)"
# Weird bug "fix". Sometimes we get no uncompressed size (this started when we
# moved away from tar-1.13, but I don't see what that could have to do with
# it). So, if we have no uncompressed size here, demand it in this loop.
# Hopefully the bug is not weird enough to make this an infinite loop. :/
while [ "$UNCOMPRESSED" = "" ]; do
cat $package | $packagecompression -dc | LC_ALL=C dd 1> /dev/null 2> $TMP/tmpsize${MCOOKIE}
UNCOMPRESSED="$(cat $TMP/tmpsize${MCOOKIE} | tail -n 1 | cut -f 1 -d ' ' | numfmt --to=iec)"
done
rm -f $TMP/tmpsize${MCOOKIE}
# If we still don't have a package description, look inside the package.
# This requires a costly untar.
if [ "$DESCRIPTION" = "" ]; then
mkdir -p $TMP/scan${MCOOKIE}
( cd $TMP/scan${MCOOKIE} ; $packagecompression -dc | tar xf - install ) < $package 2> /dev/null
if grep "^$packagebase:" "$TMP/scan${MCOOKIE}/install/slack-desc" 1> /dev/null 2> /dev/null ; then
DESCRIPTION="$TMP/scan${MCOOKIE}/install/slack-desc"
elif grep "^$shortname:" "$TMP/scan${MCOOKIE}/install/slack-desc" 1> /dev/null 2> /dev/null ; then
DESCRIPTION="$TMP/scan${MCOOKIE}/install/slack-desc"
fi
fi
if [ "$DESCRIPTION" = "" ]; then
#echo "WARNING NO SLACK-DESC"
DESCRIPTION="/dev/null"
fi
# Gather package infomation into a temporary file:
grep "^$packagebase:" $DESCRIPTION | cut -f 2- -d : | cut -b2- 1> $TMP/tmpmsg${MCOOKIE} 2> /dev/null
if [ "$shortname" != "$packagebase" ]; then
grep "^$shortname:" $DESCRIPTION | cut -f 2- -d : | cut -b2- 1>> $TMP/tmpmsg${MCOOKIE} 2> /dev/null
fi
# Adjust the length here. This allows a slack-desc to be any size up to 13 lines instead of fixed at 11.
LENGTH=$(wc -l < $TMP/tmpmsg${MCOOKIE} )
while [ $LENGTH -lt 12 ]; do
echo >> $TMP/tmpmsg${MCOOKIE}
LENGTH=$(expr $LENGTH + 1)
done
echo "Size: Compressed: ${COMPRESSED}, uncompressed: ${UNCOMPRESSED}." >> $TMP/tmpmsg${MCOOKIE}
# For recent versions of dialog it is necessary to add \n to the end of each line
# or it will remove repeating spaces and mess up our careful formatting:
cat << EOF > $TMP/controlns${MCOOKIE}
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
EOF
paste -d "" $TMP/tmpmsg${MCOOKIE} $TMP/controlns${MCOOKIE} > $TMP/pasted${MCOOKIE}
rm -f $TMP/controlns${MCOOKIE}
mv $TMP/pasted${MCOOKIE} $TMP/tmpmsg${MCOOKIE}
# Emit information to the console:
if [ "$MODE" = "install" ]; then
if [ "$PMSG" = "" ]; then
echo "Installing package $(basename $package):"
else
echo "Installing package $(basename $package) $PMSG:"
fi
echo "PACKAGE DESCRIPTION:"
grep "^$packagebase:" $DESCRIPTION | uniq | sed "s/^$packagebase:/#/g"
if [ "$shortname" != "$packagebase" ]; then
grep "^$shortname:" $DESCRIPTION | uniq | sed "s/^$shortname:/#/g"
fi
elif [ "$MODE" = "terse" ]; then # emit a single description line
( flock 9 || exit 11
printf "%-$(expr $TERSELENGTH - 7)s %-6s\n" "$(echo $shortname: $(echo $(cat $DESCRIPTION | grep "^$packagebase:" | sed "s/^$packagebase: //g" | head -n 1 | tr -d '()' | sed "s/^$packagebase //g" ) $(echo " $(printf '.%.0s' {1..256})")) | cut -b1-$(expr $TERSELENGTH - 7))" "$(printf "[%4s]" $UNCOMPRESSED)" | cut -b 1-${TERSELENGTH}
) 9> $INSTLOCKDIR/dialog.lock
elif [ "$MODE" = "infobox" ]; then # install infobox package
( flock 9 || exit 11
dialog --title "Installing package $shortname $PMSG" --infobox "$(cat $TMP/tmpmsg${MCOOKIE})" 0 0
) 9> $INSTLOCKDIR/dialog.lock
elif [ "$MODE" = "menu" -a "$PRIORITY" = "ADD" -a ! "$ALWAYSASK" = "yes" ]; then # ADD overrides menu mode unless -ask was used
( flock 9 || exit 11
dialog --title "Installing package $shortname $PMSG" --infobox "$(cat $TMP/tmpmsg${MCOOKIE})" 0 0
) 9> $INSTLOCKDIR/dialog.lock
elif [ "$MODE" = "menu" -a "$USERPRIORITY" = "ADD" ]; then # install no matter what $PRIORITY
( flock 9 || exit 11
dialog --title "Installing package $shortname $PMSG" --infobox "$(cat $TMP/tmpmsg${MCOOKIE})" 0 0
) 9> $INSTLOCKDIR/dialog.lock
else # we must need a full menu:
( flock 9 || exit 11
dialog --title "Package Name: $shortname $PMSG" --menu "$(cat $TMP/tmpmsg${MCOOKIE})" 0 0 3 \
"Yes" "Install package $shortname" \
"No" "Do not install package $shortname" \
"Quit" "Abort software installation completely" 2> $TMP/reply${MCOOKIE}
if [ ! $? = 0 ]; then
echo "No" > $TMP/reply${MCOOKIE}
fi
) 9> $INSTLOCKDIR/dialog.lock
REPLY="$(cat $TMP/reply${MCOOKIE})"
rm -f $TMP/reply${MCOOKIE} $TMP/tmpmsg${MCOOKIE}
if [ "$REPLY" = "Quit" ]; then
exit 99 # EXIT STATUS 99 = ABORT!
elif [ "$REPLY" = "No" ]; then
continue # skip the package
fi
fi
# Make sure there are no symbolic links sitting in the way of
# incoming package files:
grep -v "/$" $TMP/tmplist${MCOOKIE} | while read file ; do
if [ -L "$ROOT/$file" ]; then
rm -f "$ROOT/$file"
fi
done
rm -f $TMP/tmplist${MCOOKIE}
# Write the package file database entry and install the package:
echo "PACKAGE NAME: $shortname" > $ADM_DIR/packages/$shortname
echo "COMPRESSED PACKAGE SIZE: $COMPRESSED" >> $ADM_DIR/packages/$shortname
echo "UNCOMPRESSED PACKAGE SIZE: $UNCOMPRESSED" >> $ADM_DIR/packages/$shortname
echo "PACKAGE LOCATION: $package" >> $ADM_DIR/packages/$shortname
# Record the md5sum if that's a selected option:
if [ $MD5SUM = 1 ]; then
echo "PACKAGE MD5SUM: $(md5sum $package | cut -f 1 -d ' ')" >> $ADM_DIR/packages/$shortname
fi
echo "PACKAGE DESCRIPTION:" >> $ADM_DIR/packages/$shortname
grep "^$packagebase:" $DESCRIPTION >> $ADM_DIR/packages/$shortname 2> /dev/null
if [ "$shortname" != "$packagebase" ]; then
grep "^$shortname:" $DESCRIPTION >> $ADM_DIR/packages/$shortname 2> /dev/null
fi
echo "FILE LIST:" >> $ADM_DIR/packages/$shortname
if [ "$INSTDIR" = "install" ]; then
( cd $ROOT/ ; $packagecompression -dc | tar --acls --xattrs --xattrs-include='*' --keep-directory-symlink -xpvf - | LC_ALL=C sort ) < $package >> $TMP/$shortname 2> /dev/null
else
( cd $ROOT/ ; $packagecompression -dc | tar --transform "s,^install$,$INSTDIR," --transform "s,^install/,$INSTDIR/," --acls --xattrs --xattrs-include='*' --keep-directory-symlink -xpvf - | LC_ALL=C sort ) < $package >> $TMP/$shortname 2> /dev/null
fi
if [ "$( grep '^\./' $TMP/$shortname | wc -l | tr -d ' ')" = "1" ]; then
# Good. We have a package that meets the Slackware spec.
cat $TMP/$shortname >> $ADM_DIR/packages/$shortname
else
# Some dumb bunny built a package with something other than makepkg. Bad!
# Oh well. Bound to happen. Par for the course. Fix it and move on...
# We'll assume it's just a recent tar with an unfiltered filelist with all
# files prefixed with "./". No guarantees, but this will usually work.
cat $TMP/$shortname | sed '2,$s,^\./,,' >> $ADM_DIR/packages/$shortname
fi
rm -f $TMP/$shortname
# It's a good idea to make sure those newly installed libraries are properly
# activated for use, unless ROOT is pointing somewhere else in which case
# running ldconfig on the host system won't make any difference:
if [ "$ROOT" = "" ] && [ -x /sbin/ldconfig ]; then
( flock 9 || exit 11
/sbin/ldconfig 2> /dev/null
) 9> $INSTLOCKDIR/ldconfig.lock
fi
if [ -f $ROOT/$INSTDIR/doinst.sh ]; then
if [ "$MODE" = "install" ]; then
echo "Executing install script for $(basename $package)."
fi
# Don't use locking if the script contains "NOLOCK":
if grep -q NOLOCK $ROOT/$INSTDIR/doinst.sh ; then
# If bash is available, use sed to convert the install script to use pushd/popd
# rather than spawning subshells which is slow on ARM. This will also speed up
# install script processing on any platform.
if [ -x /bin/bash ]; then
cd $ROOT/ ; sed -e's?^( cd \([^;]*\);\(.*\) )$?pushd \1 \&\> /dev/null ; \2 ; popd \&\> /dev/null?g ' $INSTDIR/doinst.sh | /bin/bash
else
cd $ROOT/ ; sh $INSTDIR/doinst.sh
fi
else # use locking
# If bash is available, use sed to convert the install script to use pushd/popd
# rather than spawning subshells which is slow on ARM. This will also speed up
# install script processing on any platform.
if [ -x /bin/bash ]; then
( flock 9 || exit 11
cd $ROOT/ ; sed -e's?^( cd \([^;]*\);\(.*\) )$?pushd \1 \&\> /dev/null ; \2 ; popd \&\> /dev/null?g ' $INSTDIR/doinst.sh | /bin/bash
) 9> $INSTLOCKDIR/doinst.sh.lock
else
( flock 9 || exit 11
cd $ROOT/ ; sh $INSTDIR/doinst.sh
) 9> $INSTLOCKDIR/doinst.sh.lock
fi
fi
fi
# Clean up the mess...
if [ -d $ROOT/$INSTDIR ]; then
if [ -r $ROOT/$INSTDIR/doinst.sh ]; then
cp $ROOT/$INSTDIR/doinst.sh $ADM_DIR/scripts/$shortname
chmod 755 $ADM_DIR/scripts/$shortname
fi
# /install/doinst.sh and /install/slack-* are reserved locations for the package system.
# Heh, not any more with a recent tar :-)
( cd $ROOT/$INSTDIR ; rm -f doinst.sh slack-* 1> /dev/null 2>&1 )
rmdir $ROOT/$INSTDIR 1> /dev/null 2>&1
fi
# If we used a scan directory, get rid of it:
if [ -d "$TMP/scan${MCOOKIE}" ]; then
rm -rf "$TMP/scan${MCOOKIE}"
fi
rm -f $TMP/tmpmsg${MCOOKIE} $TMP/reply${MCOOKIE}
if [ "$MODE" = "install" ]; then
echo "Package $(basename $package) installed."
fi
done
exit $EXITSTATUS

View file

@ -0,0 +1,443 @@
#!/bin/sh
# Copyright 1995, 1998, 2002, 2005 Patrick Volkerding, Moorhead, Minnesota USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
if [ ! "$UID" = "0" ]; then
echo "You need to be root to run this script."
exit 1
fi
# Was a kernel specified on the command line?
if [ -r "$1" ]; then
KERNEL=$1
KMSG="Using kernel $KERNEL"
else
KMSG="No kernel selected yet"
fi
# Make sure there's a proper temp directory:
TMP=/var/lib/pkgtools/setup/tmp
# If the $TMP directory doesn't exist, create it:
if [ ! -d $TMP ]; then
mkdir -p $TMP
chmod 700 $TMP # no need to leave it open
fi
ROOT_DEVICE="`mount | grep ' on / ' | cut -f 1 -d ' '`"
if mount | grep ' on / ' | grep umsdos 1> /dev/null 2> /dev/null ; then
MOUNT="read-write"
else
MOUNT="read-only"
fi
make_root_device() {
# Make a device:
makedev() {
if [ ! -b $1 ]; then
mknod $1 b $2 $3
chown root.disk $1
chmod 640 $1
fi
}
# Make ide device
# make ide major minor hd1 hd2 (2 base devs for major)
make_ide() {
# Handle base devices:
if [ "$2" = "0" ]; then
makedev $TMP/lilo/dev/$3 $1 $2
return 0
elif [ "$2" = "64" ]; then
makedev $TMP/lilo/dev/$4 $1 $2
return 0
fi
# Must be a partition:
if [ "`expr $2 / 64`" = "0" ]; then
DEV=$3
NUM=$2
else
DEV=$4
NUM=`expr $2 - 64`
fi
makedev $TMP/lilo/dev/$DEV$NUM $1 $2
}
# Make SCSI device
make_scsi() {
# find drive # 0 - 15
DRV=`expr $1 / 16`
NUM=`expr $1 % 16`
if [ "$NUM" = "0" ]; then
NUM=""
fi
if [ "$DRV" = "0" ]; then
makedev $TMP/lilo/dev/sda$NUM 8 $1
elif [ "$DRV" = "1" ]; then
makedev $TMP/lilo/dev/sdb$NUM 8 $1
elif [ "$DRV" = "2" ]; then
makedev $TMP/lilo/dev/sdc$NUM 8 $1
elif [ "$DRV" = "3" ]; then
makedev $TMP/lilo/dev/sdd$NUM 8 $1
elif [ "$DRV" = "4" ]; then
makedev $TMP/lilo/dev/sde$NUM 8 $1
elif [ "$DRV" = "5" ]; then
makedev $TMP/lilo/dev/sdf$NUM 8 $1
elif [ "$DRV" = "6" ]; then
makedev $TMP/lilo/dev/sdg$NUM 8 $1
elif [ "$DRV" = "7" ]; then
makedev $TMP/lilo/dev/sdh$NUM 8 $1
elif [ "$DRV" = "8" ]; then
makedev $TMP/lilo/dev/sdi$NUM 8 $1
elif [ "$DRV" = "9" ]; then
makedev $TMP/lilo/dev/sdj$NUM 8 $1
elif [ "$DRV" = "10" ]; then
makedev $TMP/lilo/dev/sdk$NUM 8 $1
elif [ "$DRV" = "11" ]; then
makedev $TMP/lilo/dev/sdl$NUM 8 $1
elif [ "$DRV" = "12" ]; then
makedev $TMP/lilo/dev/sdm$NUM 8 $1
elif [ "$DRV" = "13" ]; then
makedev $TMP/lilo/dev/sdn$NUM 8 $1
elif [ "$DRV" = "14" ]; then
makedev $TMP/lilo/dev/sdo$NUM 8 $1
elif [ "$DRV" = "15" ]; then
makedev $TMP/lilo/dev/sdp$NUM 8 $1
fi
}
if cat /proc/partitions | grep / 1> /dev/null 2> /dev/null ; then # new
cat /proc/partitions | grep / | while read line ; do
SMASHED_LINE=$line
MAJOR=`echo $SMASHED_LINE | cut -f 1 -d ' '`
MINOR=`echo $SMASHED_LINE | cut -f 2 -d ' '`
if [ "$MAJOR" = "3" ]; then
make_ide $MAJOR $MINOR hda hdb
elif [ "$MAJOR" = "8" ]; then
make_scsi $MINOR
elif [ "$MAJOR" = "22" ]; then
make_ide $MAJOR $MINOR hdc hdd
elif [ "$MAJOR" = "33" ]; then
make_ide $MAJOR $MINOR hde hdf
elif [ "$MAJOR" = "34" ]; then
make_ide $MAJOR $MINOR hdg hdh
elif [ "$MAJOR" = "56" ]; then
make_ide $MAJOR $MINOR hdi hdj
fi
done
else # old format
cat /proc/partitions | grep d | while read line ; do
SMASHED_LINE=$line
MAJOR=`echo $SMASHED_LINE | cut -f 1 -d ' '`
MINOR=`echo $SMASHED_LINE | cut -f 2 -d ' '`
DEVNAME=`echo $SMASHED_LINE | cut -f 4 -d ' '`
makedev $TMP/lilo/dev/$DEVNAME $MAJOR $MINOR
done
fi
}
choose_kernel() {
while [ 0 ]; do # input loop
cat << EOF > $TMP/tmpmsg
Some possible paths to kernels are these:
/boot/vmlinuz
/usr/src/linux/arch/i386/boot/bzImage
/usr/src/linux/arch/i386/boot/zImage
/vmlinuz
Put the path to the kernel you want to use in the box below.
EOF
dialog --title "CHOOSE KERNEL" --inputbox "`cat $TMP/tmpmsg`" \
16 72 "/boot/vmlinuz" 2> $TMP/return
if [ ! $? = 0 ]; then
exit
fi
KERNEL="`cat $TMP/return`"
if [ ! -r "$KERNEL" ]; then
dialog --title "NOT FOUND!" --msgbox "$KERNEL" 5 60
continue
fi
KMSG="Using kernel $KERNEL"
break
done
}
format_disk() {
# If anyone still uses 1.2 MB, you'll have to uncomment this.
# It's no longer a default option.
#FDEV=/dev/fd0h1200
#FDEV=/dev/fd0u1400
FDEV=/dev/fd0u1680
if [ "$FDEV" = "/dev/fd0u1680" ]; then
dialog --title "Formatting /dev/fd0u1680" --infobox \
"Formatting /dev/fd0, 1.68 megabytes." 3 42
elif [ "$FDEV" = "/dev/fd0u1400" ]; then
dialog --title "Formatting /dev/fd0u1440" --infobox \
"Formatting /dev/fd0, 1.44 megabytes." 3 42
elif [ "$FDEV" = "/dev/fd0h1200" ]; then
dialog --title "Formatting /dev/fd0h1200" --infobox \
"Formatting /dev/fd0, 1.2 megabytes." 3 42
fi
fdformat $FDEV 1> /dev/null 2> /dev/null
if [ ! $? = 0 ]; then
dialog --title "ERROR: FLOPPY FORMAT FAILED" --msgbox "The attempt to format the floppy \
disk in /dev/fd0 has failed, probably due to bad media. Please try again with a \
different disk. If that doesn't work, perhaps the drive needs cleaning." 0 0
return 1
fi
}
DEFAULT_ITEM="syslinux"
while [ 0 ]; do # menu loop
dialog --title "MAKE BOOT FLOPPY FROM KERNEL" \
--default-item $DEFAULT_ITEM \
--backtitle "$KMSG" --menu "This menu allows you to make a SYSLINUX bootdisk \
from a compiled kernel. The SYSLINUX bootloader has the advantage of \
using a FAT filesystem making it easy to replace the kernel later. \
Which option would you like?" 12 67 2 \
"syslinux" "Make a SYSLINUX bootdisk" \
"exit" "Exit this program" 2> $TMP/return
if [ ! $? = 0 ]; then
break;
fi
REPLY=`cat $TMP/return`
rm -f $TMP/return
if [ "$REPLY" = "simple" ]; then # make simple bootdisk
if [ "$KERNEL" = "" ]; then
choose_kernel
fi
kernel_size=`du -Lk $KERNEL | cut -f1`
if [ "$kernel_size" -gt "1023" ]; then
cat << EOF > $TMP/tmpmsg
The kernel $KERNEL is $kernel_size K (which is
more than 1023 Kb in size), so it probably won't
boot standalone on the floppy. Use the 'syslinux'
method instead.
EOF
dialog --title "KERNEL TOO BIG!" --msgbox "`cat $TMP/tmpmsg`" 10 60
continue
fi
dialog --title "BOOT DISK CREATION" --backtitle "$KMSG" --yesno \
"\n\
Now put a formatted floppy in your boot drive. \n\
This will be made into your Linux boot disk. Use this to\n\
boot Linux until LILO has been configured to boot from\n\
the hard drive.\n\n\
Any data on the target disk will be destroyed.\n\n\
YES creates the disk, NO aborts.\n" 14 62
if [ $? = 0 ]; then
format_disk
dialog --title "CREATING DISK" --infobox "Creating boot disk from $KERNEL..." 5 72
dd if=$KERNEL of=/dev/fd0 2> /dev/null
rdev /dev/fd0 $ROOT_DEVICE
rdev -v /dev/fd0 -1
if [ "$MOUNT" = "read-only" ]; then
rdev -R /dev/fd0 1
else
rdev -R /dev/fd0 0
fi
fi
elif [ "$REPLY" = "syslinux" ]; then # make syslinux bootdisk
DEFAULT_ITEM="exit"
if [ "$KERNEL" = "" ]; then
choose_kernel
fi
dialog --title "CREATING SYSLINUX BOOTDISK IN /dev/fd0" --backtitle "$KMSG" --yesno "Now put a \
floppy in your boot drive. This will be made into a SYSLINUX \
bootdisk that you can use to start your Linux system. Any data on the \
target disk will be destroyed. YES creates the disk, NO aborts." 8 62
if [ $? = 0 ]; then # make the disk
format_disk
if [ ! $? = 0 ]; then
continue
fi
dialog --title "CREATING BOOT FLOPPY" --infobox "Creating SYSLINUX bootdisk for \
$ROOT_DEVICE in /dev/fd0." 3 64
mkdosfs -F 12 /dev/fd0u1680 1680 1> /dev/null 2> /dev/null
if [ ! -d $TMP/bootdisk ]; then
mkdir $TMP/bootdisk
fi
mount -t vfat /dev/fd0 $TMP/bootdisk 1> /dev/null 2> /dev/null
cp $KERNEL $TMP/bootdisk/vmlinuz
## This avoids a syslinux-1.72 bug, and doesn't seem to hurt anything:
#dd if=/dev/zero bs=1k count=1 >> $TMP/bootdisk/vmlinuz 2> /dev/null
if [ ! "$?" = "0" ]; then
dialog --title "ERROR COPYING KERNEL TO FLOPPY" \
--msgbox "Sorry, but there was an error copying the kernel to the \
floppy disk. Possibly the kernel is too large to fit the disk. \
This program will now exit." 0 0
umount /dev/fd0
rm -rf $TMP/bootdisk
exit 1
fi
cat << EOF > $TMP/bootdisk/message.txt
Welcome to the 09Slackware07 Linux custom bootdisk!
By default, this disk boots a root Linux partition on $ROOT_DEVICE when you
hit ENTER. If you'd like to boot some other partition, use a command like
this on the prompt below:
mount root=/dev/sda1 ro
Where "/dev/sda1" is the partition you want to boot, and "ro" specifies that
the partition should be initially mounted as read-only. If you wish to mount
the partition read-write, use "rw" instead. To set the video console mode,
use the vga= parameter (press F1 to see a table). You may also add any other
kernel parameters you might need depending on your hardware, and which
drivers are included in your kernel.
EOF
cat << EOF > $TMP/bootdisk/syslinux.cfg
default vmlinuz ramdisk_size=7000 root=$ROOT_DEVICE vga=normal ro
prompt 1
timeout 6000
display message.txt
F1 f1.txt
F2 message.txt
#F3 f3.txt
#F4 f4.txt
#F5 f5.txt
#F6 f6.txt
#F7 f7.txt
label mount
kernel vmlinuz
append ramdisk_size=7000 root=$ROOT_DEVICE vga=normal ro
label ramdisk
kernel vmlinuz
append vmlinuz ramdisk_size=7000 root=/dev/fd0u1440 vga=normal rw
EOF
cat << EOF > $TMP/bootdisk/f1.txt
STANDARD MODES:
To make the kernel prompt for standard video modes use: vga=ask
FRAMEBUFFER MODES:
To get the kernel to start in VESA framebuffer mode, you need to pass it
a vga= init string on the "boot:" prompt. Here's a table:
Colors 640x480 800x600 1024x768 1280x1024 1600x1200
--------+---------------------------------------------
256 | 769 771 773 775 796
32,768 | 784 787 790 793 797
65,536 | 785 788 791 794 798
16.8M | 786 789 792 795 799
...such as this for 1024x768x64k:
vga=791
F2 returns to the previous page.
EOF
umount /dev/fd0
syslinux-nomtools -s /dev/fd0
rm -r $TMP/bootdisk
fi
elif [ "$REPLY" = "lilo" ]; then # make lilo bootdisk
DEFAULT_ITEM="exit"
if [ ! -x "`type -path lilo`" ]; then
cat << EOF > $TMP/tmpmsg
You don't have 'lilo' installed on the system.
I guess you didn't install the lilo package.
EOF
dialog --title "LILO NOT FOUND" --msgbox "`cat $TMP/tmpmsg`" 8 60
continue
fi
if [ "$KERNEL" = "" ]; then
choose_kernel
fi
dialog --title "CREATING LILO BOOTDISK IN /dev/fd0" --backtitle "$KMSG" --yesno "Now put a \
floppy in your boot drive. This will be made into a LILO \
bootdisk that you can use to start your Linux system. Any data on the \
target disk will be destroyed. YES creates the disk, NO aborts." 8 62
if [ $? = 0 ]; then # make the disk
format_disk
DEV=/dev/fd0u1680
mknod_fd="-m 0640 $TMP/lilo$DEV b 2 44"
dialog --infobox "Creating LILO bootdisk from $KERNEL for $ROOT_DEVICE..." 4 60
mke2fs -q -m 0 -i 4096 $DEV 1> /dev/null 2> /dev/null || exit 1
if [ ! -d $TMP/lilo ]; then
mkdir -p $TMP/lilo
fi
mount -t ext2 $DEV $TMP/lilo 1> /dev/null || exit 1
rmdir $TMP/lilo/lost+found
cp $KERNEL $TMP/lilo/vmlinuz || exit 1
mkdir $TMP/lilo/dev
make_root_device
mknod -m 0640 $TMP/lilo/dev/fd0 b 2 0
mknod -m 0640 $TMP/lilo/dev/fd1 b 2 1
mknod $mknod_fd
mknod -m 0666 $TMP/lilo/dev/null c 1 3
mkdir $TMP/lilo/etc
cat << EOF > $TMP/lilo/etc/lilo.conf
boot = $DEV
message=/boot/message
backup=/dev/null
prompt
image = /vmlinuz
label = mount
ramdisk = 0
root = $ROOT_DEVICE
vga = normal
$MOUNT
EOF
mkdir $TMP/lilo/boot
cp -a /boot/chain.b $TMP/lilo/boot
if [ -f /boot/boot-text.b ]; then
cp -a /boot/boot-text.b $TMP/lilo/boot/boot.b
else
cp -a /boot/boot.b $TMP/lilo/boot
fi
cat << EOF > $TMP/lilo/boot/message
Welcome to the Slackware Linux custom LILO bootdisk!
By default, this disk boots a root Linux partition on $ROOT_DEVICE when
you hit ENTER. If you'd like to boot some other partition, use a command
like this on the LILO prompt below:
mount root=/dev/sda1 ro
Where "/dev/sda1" is the partition you want to boot, and "ro" specifies that
the partition should be initially mounted as read-only. If you which to mount
the partition read-write, use "rw" instead. You may also add any other kernel
parameters you might need depending on your hardware, and which drivers are
included in your kernel.
EOF
lilo -r $TMP/lilo > /dev/null
umount $TMP/lilo
rm -rf $TMP/lilo
fi
elif [ "$REPLY" = "exit" ]; then
break;
fi
done

View file

@ -0,0 +1,452 @@
#!/bin/sh
# Copyright 1994, 1998, 2008 Patrick Volkerding, Moorhead, Minnesota USA
# Copyright 2003 Slackware Linux, Inc. Concord, CA USA
# Copyright 2009, 2015, 2017, 2018 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Mon May 21 18:31:20 UTC 2018
# Add --compress option, usually used to change the preset compression level
# or block size.
#
# Tue Feb 13 00:46:12 UTC 2018
# Use recent tar, and support storing POSIX ACLs and extended attributes.
#
# Tue Dec 12 21:55:59 UTC 2017
# If possible, use multiple compression threads.
#
# Wed Sep 23 18:36:43 UTC 2015
# Support spaces in file/directory names. <alphageek>
#
# Sun Apr 5 21:23:26 CDT 2009
# Support .tgz, .tbz, .tlz, and .txz packages. <volkerdi>
#
# Fri Nov 26 13:53:36 GMT 2004
# Patched to chmod 755 the package's root directory if needed, then restore
# previous permissions after the package has been created. <sw>
#
# Wed Mar 18 15:32:33 CST 1998
# Patched to avoid possible symlink attacks in /tmp.
CWD=$(pwd)
umask 022
make_install_script() {
TAB="$(echo -e "\t")"
COUNT=1
while :; do
LINE="$(sed -n "$COUNT p" $1)"
if [ "$LINE" = "" ]; then
break
fi
LINKGOESIN="$(echo "$LINE" | cut -f 1 -d "$TAB")"
LINKGOESIN="$(dirname "$LINKGOESIN")"
LINKNAMEIS="$(echo "$LINE" | cut -f 1 -d "$TAB")"
LINKNAMEIS="$(basename "$LINKNAMEIS")"
LINKPOINTSTO="$(echo "$LINE" | cut -f 2 -d "$TAB")"
echo "( cd $LINKGOESIN ; rm -rf $LINKNAMEIS )"
echo "( cd $LINKGOESIN ; ln -sf $LINKPOINTSTO $LINKNAMEIS )"
COUNT=$(expr $COUNT + 1)
done
}
usage() {
cat << EOF
Usage: makepkg package_name.tgz
(or: package_name.tbz, package_name.tlz, package_name.txz)
Makes a Slackware compatible package containing the contents of the current
and all subdirectories. If symbolic links exist, they will be removed and
an installation script will be made to recreate them later. This script will
be called "install/doinst.sh". You may add any of your own ash-compatible
shell scripts to this file and rebuild the package if you wish.
options: -l, --linkadd y|n (moves symlinks into doinst.sh: recommended)
-p, --prepend (prepend rather than append symlinks to an existing
doinst.sh. Useful to link libraries needed by programs in
the doinst.sh script)
-c, --chown y|n (resets all permissions to root:root 755 - not
generally recommended)
--threads <number> For xz/plzip compressed packages, set the max
number of threads to be used for compression. Only has an
effect on large packages. For plzip, the default is equal to
the number of CPU threads available on the machine. For xz,
the default is equal to 2 (due to commonly occuring memory
related failures when using many threads with multi-threaded
xz compression).
--compress <option> Supply a custom option to the compressor.
This will be used in place of the default, which is: -9
--acls Support storing POSIX ACLs in the package. The resulting
package will not be compatible with pkgtools version < 15.0.
--xattrs Support storing extended attributes in the package. The
resulting package will not be compatible with pkgtools
version < 15.0.
If these options are not set, makepkg will prompt if appropriate.
EOF
}
TMP=/tmp # This can be a hole, but I'm going to be careful about file
# creation in there, so don't panic. :^)
# Set maximum number of threads to use. By default, this will be the number
# of CPU threads:
THREADS="$(nproc)"
# Set default compression option.
COMPRESS_OPTION="-9"
# Parse options
unset ACLS XATTRS
while [ 0 ]; do
if [ "$1" = "--linkadd" -o "$1" = "-l" ]; then
if [ "$2" = "y" ]; then
LINKADD=y
elif [ "$2" = "n" ]; then
LINKADD=n
else
usage
exit 2
fi
shift 2
elif [ "$1" = "--chown" -o "$1" = "-c" ]; then
if [ "$2" = "y" ]; then
CHOWN=y
elif [ "$2" = "n" ]; then
CHOWN=n
else
usage
exit 2
fi
shift 2
elif [ "$1" = "-p" -o "$1" = "--prepend" ]; then
PREPEND=y
shift 1
elif [ "$1" = "-threads" -o "$1" = "--threads" ]; then
THREADS="$2"
shift 2
# xz has memory issues with threads it seems, so we'll use two threads by
# default unless we see that something else was user-selected:
XZ_THREADS_FORCED=yes
elif [ "$1" = "-compress" -o "$1" = "--compress" ]; then
COMPRESS_OPTION="$2"
shift 2
elif [ "$1" = "--acls" ]; then
ACLS="--acls"
shift 1
elif [ "$1" = "--xattrs" ]; then
XATTRS="--xattrs"
shift 1
elif [ "$1" = "-h" -o "$1" = "-H" -o "$1" = "--help" -o $# = 0 ]; then
usage
exit 0
else
break
fi
done
PACKAGE_NAME="$1"
TARGET_NAME="$(dirname $PACKAGE_NAME)"
PACKAGE_NAME="$(basename $PACKAGE_NAME)"
# Identify package extension and compression type to use:
if [ ! "$(basename $PACKAGE_NAME .tgz)" = "$PACKAGE_NAME" ]; then
EXTENSION="tgz"
COMPEXT="gz"
COMPRESSOR="gzip ${COMPRESS_OPTION} -c"
if ! which gzip 1> /dev/null 2> /dev/null ; then
echo "ERROR: gzip compression utility not found in \$PATH."
exit 3
fi
elif [ ! "$(basename $PACKAGE_NAME .tar.gz)" = "$PACKAGE_NAME" ]; then
EXTENSION="tar.gz"
COMPRESSOR="gzip ${COMPRESS_OPTION} -c"
if ! which gzip 1> /dev/null 2> /dev/null ; then
echo "ERROR: gzip compression utility not found in \$PATH."
exit 3
fi
elif [ ! "$(basename $PACKAGE_NAME .tbz)" = "$PACKAGE_NAME" ]; then
EXTENSION="tbz"
if which lbzip2 1> /dev/null 2> /dev/null ; then
COMPRESSOR="lbzip2 ${COMPRESS_OPTION} -c"
else
if which bzip2 1> /dev/null 2> /dev/null ; then
COMPRESSOR="bzip2 ${COMPRESS_OPTION} -c"
else
echo "ERROR: bzip2 compression utility not found in \$PATH."
exit 3
fi
fi
elif [ ! "$(basename $PACKAGE_NAME .tar.bz2)" = "$PACKAGE_NAME" ]; then
EXTENSION="tar.bz2"
if which lbzip2 1> /dev/null 2> /dev/null ; then
COMPRESSOR="lbzip2 ${COMPRESS_OPTION} -c"
else
if which bzip2 1> /dev/null 2> /dev/null ; then
COMPRESSOR="bzip2 ${COMPRESS_OPTION} -c"
else
echo "ERROR: bzip2 compression utility not found in \$PATH."
exit 3
fi
fi
elif [ ! "$(basename $PACKAGE_NAME .tlz)" = "$PACKAGE_NAME" ]; then
EXTENSION="tlz"
if which plzip 1> /dev/null 2> /dev/null ; then
COMPRESSOR="plzip ${COMPRESS_OPTION} --threads=${THREADS} -c"
else
echo "WARNING: plzip compression utility not found in \$PATH."
echo "WARNING: package will not support multithreaded decompression."
if which lzip 1> /dev/null 2> /dev/null ; then
COMPRESSOR="lzip ${COMPRESS_OPTION} -c"
else
echo "ERROR: lzip compression utility not found in \$PATH."
exit 3
fi
fi
elif [ ! "$(basename $PACKAGE_NAME .tar.lz)" = "$PACKAGE_NAME" ]; then
EXTENSION="tar.lz"
if which plzip 1> /dev/null 2> /dev/null ; then
COMPRESSOR="plzip ${COMPRESS_OPTION} --threads=${THREADS} -c"
else
echo "WARNING: plzip compression utility not found in \$PATH."
echo "WARNING: package will not support multithreaded decompression."
if which lzip 1> /dev/null 2> /dev/null ; then
COMPRESSOR="lzip ${COMPRESS_OPTION} -c"
else
echo "ERROR: lzip compression utility not found in \$PATH."
exit 3
fi
fi
elif [ ! "$(basename $PACKAGE_NAME .tar.lzma)" = "$PACKAGE_NAME" ]; then
EXTENSION="tar.lzma"
COMPRESSOR="lzma ${COMPRESS_OPTION} -c"
if ! which lzma 1> /dev/null 2> /dev/null ; then
echo "ERROR: lzma compression utility not found in \$PATH."
exit 3
fi
elif [ ! "$(basename $PACKAGE_NAME .txz)" = "$PACKAGE_NAME" ]; then
EXTENSION="txz"
if [ ! "$XZ_THREADS_FORCED" = "yes" ]; then
# Two threads by default with xz due to memory failures on 32-bit. Not that
# it matters much... if upstream ever gets around to implementing multi-
# threaded decompression we'll revisit this default. :-D
COMPRESSOR="xz ${COMPRESS_OPTION} --threads=2 -c"
else
COMPRESSOR="xz ${COMPRESS_OPTION} --threads=${THREADS} -c"
fi
if ! which xz 1> /dev/null 2> /dev/null ; then
echo "ERROR: xz compression utility not found in \$PATH."
exit 3
fi
elif [ ! "$(basename $PACKAGE_NAME .tar.xz)" = "$PACKAGE_NAME" ]; then
EXTENSION="tar.xz"
if [ ! "$XZ_THREADS_FORCED" = "yes" ]; then
# Two threads by default with xz due to memory failures on 32-bit. Not that
# it matters much... if upstream ever gets around to implementing multi-
# threaded decompression we'll revisit this default. :-D
COMPRESSOR="xz ${COMPRESS_OPTION} --threads=2 -c"
else
COMPRESSOR="xz ${COMPRESS_OPTION} --threads=${THREADS} -c"
fi
if ! which xz 1> /dev/null 2> /dev/null ; then
echo "ERROR: xz compression utility not found in \$PATH."
exit 3
fi
else
EXTENSION="$(echo $PACKAGE_NAME | rev | cut -f 1 -d . | rev)"
echo "ERROR: Package extension .$EXTENSION is not supported."
exit 1
fi
TAR_NAME="$(basename $PACKAGE_NAME .$EXTENSION)"
# Sanity check -- we can't make the package in the current directory:
if [ "$CWD" = "$TARGET_NAME" -o "." = "$TARGET_NAME" ]; then
echo "ERROR: Can't make output package in current directory."
exit 2
fi
echo
echo "Slackware package maker, version 3.14159265."
echo
echo "Searching for symbolic links:"
# Get rid of possible pre-existing trouble:
INST=$(mktemp $TMP/makepkg.XXXXXX)
find . -type l -printf "%p\t%l\n" | sed 's,^\./,, ; s, ,\\ ,g' | tee $INST
if [ ! "$(cat $INST)" = "" ]; then
echo
echo "Making symbolic link creation script:"
make_install_script $INST | tee doinst.sh
fi
echo
if [ ! "$(cat $INST)" = "" ]; then
if [ -r install/doinst.sh ]; then
echo "Unless your existing installation script already contains the code"
echo "to create these links, you should append these lines to your existing"
echo "install script. Now's your chance. :^)"
echo
echo "Would you like to add this stuff to the existing install script and"
echo -n "remove the symbolic links ([y]es, [n]o)? "
else
echo "It is recommended that you make these lines your new installation script."
echo
echo "Would you like to make this stuff the install script for this package"
echo -n "and remove the symbolic links ([y]es, [n]o)? "
fi
if [ ! "$LINKADD" ]; then
read LINKADD;
echo
else
echo $LINKADD
echo
fi
if [ "$LINKADD" = "y" ]; then
if [ -r install/doinst.sh ]; then
UPDATE="t"
if [ "$PREPEND" = "y" ]; then
touch install/doinst.sh
mv install/doinst.sh install/doinst.sh.shipped
cat doinst.sh > install/doinst.sh
echo "" >> install/doinst.sh
cat install/doinst.sh.shipped >> install/doinst.sh
rm -f install/doinst.sh.shipped
else
cat doinst.sh >> install/doinst.sh
fi
else
mkdir -p install
cat doinst.sh > install/doinst.sh
fi
echo
echo "Removing symbolic links:"
find . -type l -exec rm -v {} \;
echo
if [ "$UPDATE" = "t" ]; then
if [ "$PREPEND" = "y" ]; then
echo "Updating your ./install/doinst.sh (prepending symlinks)..."
else
echo "Updating your ./install/doinst.sh..."
fi
else
echo "Creating your new ./install/doinst.sh..."
fi
fi
else
echo "No symbolic links were found, so we won't make an installation script."
echo "You can make your own later in ./install/doinst.sh and rebuild the"
echo "package if you like."
fi
rm -f doinst.sh $INST
echo
echo "This next step is optional - you can set the directories in your package"
echo "to some sane permissions. If any of the directories in your package have"
echo "special permissions, then DO NOT reset them here!"
echo
echo "Would you like to reset all directory permissions to 755 (drwxr-xr-x) and"
echo -n "directory ownerships to root.root ([y]es, [n]o)? "
if [ ! "$CHOWN" ]; then
read CHOWN;
echo
else
echo $CHOWN
echo
fi
if [ "$CHOWN" = "y" ]; then
find . -type d -exec chmod -v 755 {} \;
find . -type d -exec chown -v root.root {} \;
fi
# Ensure that the 'root' of the package is chmod 755 because
# the / of your filesystem will inherit these permissions.
# If it's anything tighter than 755 then bad things happen such as users
# not being able to login, users already logged in can no longer run commands
# and so on.
OLDROOTPERMS="$(find -name . -printf "%m\n")"
if [ $OLDROOTPERMS -ne 755 ]; then
echo "WARNING: $PWD is chmod $OLDROOTPERMS"
echo " temporarily changing to chmod 755"
chmod 755 .
fi
echo "Creating Slackware package: ${TARGET_NAME}/${TAR_NAME}.${EXTENSION}"
echo
rm -f ${TARGET_NAME}/${TAR_NAME}.${EXTENSION}
# HISTORICAL NOTE 2/2018:
# In the interest of maximizing portability of this script, we'll use find
# and sed to create a filelist compatible with tar-1.13, and then use a
# more modern tar version to create the archive.
#
# Other (but possibly less portable) ways to achieve the same result:
#
# Use the tar --transform and --show-transformed-names options:
# tar --transform "s,^\./\(.\),\1," --show-transformed-names $ACLS $XATTRS -cvf - . | $COMPRESSOR > ${TARGET_NAME}/${TAR_NAME}.${EXTENSION}
#
# Use cpio:
# find ./ | sed '2,$s,^\./,,' | cpio --quiet -ovHustar > ${TARGET_NAME}/${TAR_NAME}.tar
# Create the package:
find ./ | sed '2,$s,^\./,,' | tar --no-recursion $ACLS $XATTRS -T - -cvf - | $COMPRESSOR > ${TARGET_NAME}/${TAR_NAME}.${EXTENSION}
ERRCODE=$?
if [ ! $ERRCODE = 0 ]; then
echo "ERROR: $COMPRESSOR returned error code $ERRCODE -- makepkg failed."
exit 1
fi
# Warn of zero-length files:
find . -type f -size 0c | while read file ; do
echo "WARNING: zero length file $(echo $file | cut -b3-)"
done
# Warn of corrupt or empty gzip files:
find . -type f -name '*.gz' | while read file ; do
if ! gzip -t $file 1> /dev/null 2> /dev/null ; then
echo "WARNING: gzip test failed on $(echo $file | cut -b3-)"
else
if [ "$(gzip -l $file | tail -n 1 | tr -s ' ' | cut -f 3 -d ' ')" -eq 0 ]; then
echo "WARNING: $(echo $file | cut -b3-) is an empty gzipped file"
fi
fi
done
# Some more handy warnings:
if [ -d usr/share/man ]; then
echo "WARNING: /usr/share/man (with possibly not gzipped man pages) detected"
fi
if [ -d usr/share/info ]; then
echo "WARNING: /usr/share/info (with possibly not gzipped info pages) detected"
fi
if find . | grep site_perl 1> /dev/null ; then
echo "WARNING: site_perl directory detected (this is fine for a local package build)"
fi
# Restore the old permissions if they previously weren't chmod 755
if [ $OLDROOTPERMS -ne 755 ]; then
echo
echo "Restoring permissions of $PWD to chmod $OLDROOTPERMS"
chmod $OLDROOTPERMS .
fi
echo
echo "Slackware package ${TARGET_NAME}/${TAR_NAME}.${EXTENSION} created."
echo

View file

@ -0,0 +1,164 @@
#!/bin/sh
# Copyright 2002 Patrick J. Volkerding, Concord, CA, USA
# Copyright 2018 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
CWD=$(pwd)
# Display usage for basic usage errors:
usage() {
cat << EOF
pkgdiff: missing file arguments
Try 'pkgdiff --help' for more information.
EOF
}
# Display full --help if requested:
helpme() {
cat << EOF
Usage: pkgdiff [OPTION] FILE1 FILE2
Show which files are new and which are removed between two tar archives.
The tar archives may be uncompressed, or compressed with gzip, bzip2,
xz, or lzip. Also works with .rpm and .deb.
--help display this help and exit
-c use ANSI color with default tree mode
-a show simple text (ASCII) diff of package file lists
By default, the trees are drawn with in crude ASCII with no color. For
the full-color effect, try something like this:
pkgdiff -c package1 package2 | less -r
EOF
# --help doesn't return
exit 22
}
# How the heck do I open this?
explode() {
tar xf $1 1> /dev/null 2> /dev/null
# Check for common extensions and do additional magic:
if [ ! "$(basename $1)" = "$(basename $1 .zip)" ]; then
unzip $1 1> /dev/null 2> /dev/null
fi
if [ ! "$(basename $1)" = "$(basename $1 .rpm)" ]; then
cp $1 .
rpm2tgz $(basename $1) 1> /dev/null 2> /dev/null
rm -f $(basename $1)
tar xzf $(basename $1 .rpm).tgz 1> /dev/null 2> /dev/null
rm -f $(basename $1 .rpm).tgz
fi
if [ ! "$(basename $1)" = "$(basename $1 .deb)" ]; then
cp $1 .
ar x $(basename $1) 1> /dev/null 2> /dev/null
tar xf data.tar.xz 1> /dev/null 2> /dev/null
rm -f * 2> /dev/null
fi
# Diffs for other archive formats are welcome.
}
# Parse options.
# -c turns on colorization ala dircolors:
unset COLOR
if [ "$1" = "-c" ]; then
COLOR="-C"
shift 1
fi
if [ "$1" = "-a" ]; then
ASCII=true
shift 1
fi
if [ "$1" = "--help" ]; then
helpme
fi
TMPDIR=$(mktemp -d)
cd $TMPDIR
if [ ! -r "$1" ]; then
if [ -d "$CWD/$1" ]; then
usage
exit 99
else
PKG1="$CWD/$1"
fi
else
PKG1="$1"
fi
if [ ! -r "$2" ]; then
if [ -d "$CWD/$2" ]; then
usage
#echo "pkgdiff -- find the difference between two tar archives"
#echo "usage: pkgdiff [ -C ] pkg1 pkg2"
exit 99
else
PKG2="$CWD/$2"
fi
else
PKG2="$2"
fi
# We have to account for the possibility that the packages have the
# same name, but different contents...
if [ "$(basename $PKG1)" = "$(basename $PKG2)" ]; then
PKG1=${PKG1}.orig
fi
# This will be mighty safe even if we ended up in /tmp.
PKG=.pkgdiff.$(mcookie)
( mkdir -p $TMPDIR/$PKG/1
cd $TMPDIR/$PKG/1
if [ -r $PKG1 ]; then
explode $PKG1
elif [ -r $(dirname $PKG1)/$(basename $PKG1 .orig) ]; then
explode $(dirname $PKG1)/$(basename $PKG1 .orig)
fi
if [ ! "$ASCII" = "true" ]; then
tree $COLOR -a --noreport > ../$(basename $PKG1)
else
find ./ | sed '2,$s,^\./,,' | tar --no-recursion -T - -cf - | tar tf - | sort > ../$(basename $PKG1)
fi
)
( mkdir -p $TMPDIR/$PKG/2
cd $TMPDIR/$PKG/2
explode $PKG2
if [ ! "$ASCII" = "true" ]; then
tree $COLOR -a --noreport > ../$(basename $PKG2)
else
find ./ | sed '2,$s,^\./,,' | tar --no-recursion -T - -cf - | tar tf - | sort > ../$(basename $PKG2)
fi
)
# Always going that extra mile... ;)
if [ -r $PKG1 ]; then
touch -r $PKG1 $TMPDIR/$PKG/$(basename $PKG1)
elif [ -r $(dirname $PKG1)/$(basename $PKG1 .orig) ]; then
touch -r $(dirname $PKG1)/$(basename $PKG1 .orig) $TMPDIR/$PKG/$(basename $PKG1)
fi
touch -r $PKG2 $TMPDIR/$PKG/$(basename $PKG2)
rm -rf $TMPDIR/$PKG/{1,2}
( cd $TMPDIR/$PKG ; diff -d -u $(basename $PKG1) $(basename $PKG2) )
# cleanup:
rm -rf $PKG $TMPDIR

View file

@ -0,0 +1,723 @@
#!/bin/sh
#
# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999 Patrick Volkerding, Moorhead, MN USA
# Copyright 2001, 2004 Slackware Linux, Inc., Concord, CA USA
# All rights reserved.
# Copyright 2007, 2009, 2010, 2011, 2013, 2015, 2016, 2018 Patrick Volkerding, Sebeka, MN, USA
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Mon Jun 4 21:17:58 UTC 2018
# Use /var/lib/pkgtools, not /var/log.
#
# Sat Apr 25 21:18:53 UTC 2009
# Converted to use new pkgbase() function to remove pathname and
# valid package extensions.
#
# Wed Oct 31 16:28:46 CDT 2007
# * Thanks to Gabriele Inghirami for a patch allowing this script to work
# with much larger numbers of installed packages.
# Wed, 27 Apr 1994 00:06:50 -0700 (PDT)
# * Optimization by David Hinds.
# Sun Oct 24 23:11:40 BST 2004
# * Further optimisations by Jim Hawkins <jawkins@armedslack.org>
# - dramatically improved the speed of the "View" option
# Thu Nov 04 12:19:56 BST 2004
# * More optimisations by Jim Hawkins
# - improved "Remove" speed in a similar manner to "View"
# Wed Jan 12 16:53:48 GMT 2005
# * Fixed quoting bug thanks to Lasse Collin
# Wed Jan 26 23:06:22 GMT 2005
# * Fix for non-standard package descriptions by Jim Hawkins
# Return a package name that has been stripped of the dirname portion
# and any of the valid extensions (only):
pkgbase() {
PKGEXT=$(echo $1 | rev | cut -f 1 -d . | rev)
case $PKGEXT in
'tgz' )
PKGRETURN=$(basename $1 .tgz)
;;
'tbz' )
PKGRETURN=$(basename $1 .tbz)
;;
'tlz' )
PKGRETURN=$(basename $1 .tlz)
;;
'txz' )
PKGRETURN=$(basename $1 .txz)
;;
*)
PKGRETURN=$(basename $1)
;;
esac
echo $PKGRETURN
}
SOURCE_DIR=/var/lib/pkgtools/mount
ASK="tagfiles"
if [ -L /bin/chmod -a -L /bin/chown ]; then # probably on the bootdisk using busybox
TARGET_DIR=/mnt
rootdevice="$(mount | grep ' on /mnt ' | tail -n 1 | cut -f 1 -d ' ' 2> /dev/null)"
TMP=/mnt/var/lib/pkgtools/setup/tmp
if ! mount | grep ' on /mnt ' 1> /dev/null 2> /dev/null ; then
echo
echo
echo "You can't run pkgtool from the rootdisk until you've mounted your Linux"
echo "partitions beneath /mnt. Here are some examples:"
echo
echo "If your root partition is /dev/sda1 you would type:"
echo "mount /dev/sda1 /mnt"
echo
echo "Now you can find a list of all your partitions in /mnt/etc/fstab."
echo
echo "Then, supposing your /usr partition is /dev/sda2, you must do this:"
echo "mount /dev/sda2 /mnt/usr"
echo
echo "Please mount your Linux partitions and then run pkgtool again."
echo
exit
fi
else
TARGET_DIR=/
rootdevice="$(mount | grep ' on / ' | tail -n 1 | cut -f 1 -d ' ')"
TMP=/var/lib/pkgtools/setup/tmp
fi
if [ ! -d $TMP ]; then
mkdir -p $TMP
chmod 700 $TMP
fi
ADM_DIR=$TARGET_DIR/var/lib/pkgtools
LOG=$TMP/PKGTOOL.REMOVED
# remove whitespace
crunch() {
while read FOO ; do
echo $FOO
done
}
package_name() {
STRING=$(pkgbase $1)
# Check for old style package name with one segment:
if [ "$(echo $STRING | cut -f 1 -d -)" = "$(echo $STRING | cut -f 2 -d -)" ]; then
echo $STRING
else # has more than one dash delimited segment
# Count number of segments:
INDEX=1
while [ ! "$(echo $STRING | cut -f $INDEX -d -)" = "" ]; do
INDEX=$(expr $INDEX + 1)
done
INDEX=$(expr $INDEX - 1) # don't include the null value
# If we don't have four segments, return the old-style (or out of spec) package name:
if [ "$INDEX" = "2" -o "$INDEX" = "3" ]; then
echo $STRING
else # we have four or more segments, so we'll consider this a new-style name:
NAME=$(expr $INDEX - 3)
NAME="$(echo $STRING | cut -f 1-$NAME -d -)"
echo $NAME
# cruft for later ;)
#VER=$(expr $INDEX - 2)
#VER="$(echo $STRING | cut -f $VER -d -)"
#ARCH=$(expr $INDEX - 1)
#ARCH="$(echo $STRING | cut -f $ARCH -d -)"
#BUILD="$(echo $STRING | cut -f $INDEX -d -)"
fi
fi
}
remove_packages() {
for pkg_name in $(cat $TMP/return | tr -d "\042")
do
if [ -r $ADM_DIR/packages/$pkg_name ]; then
dialog --title "PACKAGE REMOVAL IN PROGRESS" --cr-wrap --infobox \
"\nRemoving package $pkg_name.\n\
\n\
Since each file must be checked \
against the contents of every other installed package to avoid wiping out \
areas of overlap, this process can take quite some time. If you'd like to \
watch the progress, flip over to another virtual console and type:\n\
\n\
tail -f $TMP/PKGTOOL.REMOVED\n" 13 60
export ROOT=$TARGET_DIR
removepkg $pkg_name >> $LOG 2> /dev/null
else
echo "No such package: $pkg_name. Can't remove." >> $LOG
fi
done
}
create_list_of_installed_packages()
{
FILES=$(ls $ADM_DIR/packages)
if [ -n "$FILES" ]; then
cd $ADM_DIR/packages
{ grep '^PACKAGE DESCRIPTION:$' -Z -H -m1 -A1 $FILES; echo; } \
| sed -n 'h;n;/\x00/{h;n;};x;s/ */ /g;s/ $//;s/[\"`$]/\\&/g
s/\(.*\)\x00\([^:]*:\)\? *\(.*\)/ "\1" "\3" "View information about package \1" \\/;p' > $TMP/list_of_installed_packages \
fi
}
create_list_of_files_to_remove ()
{
FILES=$(ls $ADM_DIR/packages)
if [ -n "$FILES" ]; then
cd $ADM_DIR/packages
{ grep '^PACKAGE DESCRIPTION:$' -Z -H -m1 -A1 $FILES; echo; } \
| sed -n 'h;n;/\x00/{h;n;};x;s/ */ /g;s/ $//;s/[\"`$]/\\&/g
s/\(.*\)\x00\([^:]*:\)\? *\(.*\)/ "\1" "\3" off "Select\/Unselect removing package \1" \\/;p' > $TMP/temporary_list \
fi
}
# Here, we read the list of arguments passed to the pkgtool script.
if [ $# -gt 0 ]; then # there are arguments to the command
while [ $# -gt 0 ]; do
case "$1" in
-sets | --sets)
DISK_SETS=$(echo $2 | tr "[A-Z]" "[a-z]") ; shift 2 ;;
-source_mounted | --source-mounted)
SOURCE_MOUNTED="always" ; shift 1 ;;
-ignore_tagfiles | --ignore-tagfiles)
ASK="never" ; shift 1 ;;
-tagfile | --tagfile)
USETAG=$2 ; shift 2 ;;
-source_dir | --source_dir)
SOURCE_DIR=$2 ; shift 2 ;;
-target_dir | --target_dir)
TARGET_DIR=$2
ADM_DIR=$TARGET_DIR/var/lib/pkgtools
shift 2 ;;
-source_device | --source_device)
SOURCE_DEVICE=$2 ; shift 2 ;;
esac
done
else # there were no arguments, so we'll get the needed information from the
# user and then go on.
CMD_START="true"
rm -f $TMP/SeT*
while [ 0 ]; do
dialog --title "Slackware Package Tool (pkgtool version 15.0)" \
--menu "\nWelcome to the Slackware package tool.\n\
\nWhich option would you like?\n" 16 75 6 \
"Current" "Install packages from the current directory" \
"Other" "Install packages from some other directory" \
"Remove" "Remove packages that are currently installed" \
"View" "View the list of files contained in a package" \
"Setup" "Choose Slackware installation scripts to run again" \
"Exit" "Exit Pkgtool" 2> $TMP/reply
if [ ! $? = 0 ]; then
rm -f $TMP/reply
dialog --clear
exit
fi
REPLY="$(cat $TMP/reply)"
rm -f $TMP/reply
if [ "$REPLY" = "Exit" ]; then
dialog --clear
exit
fi
if [ "$REPLY" = "Setup" ]; then
echo 'dialog --title "SELECT SYSTEM SETUP SCRIPTS" --item-help --checklist \
"Please use the spacebar to select the setup scripts to run. Hit enter when you \
are done selecting to run the scripts." 17 70 9 \' > $TMP/setupscr
for script in $ADM_DIR/setup/setup.* ; do
BLURB=$(grep '#BLURB' $script | cut -b8-)
if [ "$BLURB" = "" ]; then
BLURB="\"\""
fi
echo " \"$(basename $script | cut -f2- -d .)\" $BLURB \"no\" $BLURB \\" >> $TMP/setupscr
done
echo "2> $TMP/return" >> $TMP/setupscr
. $TMP/setupscr
if [ ! "$(cat $TMP/return)" = "" ]; then
# Run each script:
for script in $(cat $TMP/return) ; do
scrpath=$ADM_DIR/setup/setup.$(echo $script | tr -d \")
( COLOR=on ; cd $TARGET_DIR ; . $scrpath $TARGET_DIR $rootdevice )
done
fi
rm -f $TMP/return $TMP/setupscr
continue
fi # end Setup
if [ "$REPLY" = "View" ]; then
create_list_of_installed_packages
DEFITEM=""
export DEFITEM
#dialog --title "SCANNING" --infobox "Please wait while \
#Pkgtool scans your system to determine which packages you have \
#installed and prepares a list for you." 0 0
(
echo 'dialog $DEFITEM --item-help --menu "Please select the package you wish to view." 17 68 10 \'
) > $TMP/viewscr
cat $TMP/list_of_installed_packages >> $TMP/viewscr
echo "2> $TMP/return" >> $TMP/viewscr
while [ 0 ]; do
. $TMP/viewscr
if [ ! "$(cat $TMP/return)" = "" ]; then
DEFITEM="--default-item $(cat $TMP/return)"
dialog --title "CONTENTS OF PACKAGE: $(cat $TMP/return)" --no-shadow --textbox "$ADM_DIR/packages/$(cat $TMP/return)" \
0 0 2> /dev/null
else
break
fi
done
rm -f $TMP/return $TMP/viewscr $TMP/tmpmsg $TMP/list_of_installed_packages
# This will clean up after most defective packages:
chmod 755 /
chmod 1777 /tmp
continue
fi
if [ "$REPLY" = "Remove" ]; then
#dialog --title "SCANNING" --infobox "Please wait while Pkgtool scans \
#your system to determine which packages you have installed and prepares \
#a list for you." 0 0
# end section
(
create_list_of_files_to_remove #call the function to create a list of installed packages
cat << EOF
dialog --title "SELECT PACKAGES TO REMOVE" --item-help --checklist \
"Please select the \
packages you wish to Remove. Use the \
spacebar to select packages to delete, and the UP/DOWN arrow keys to \
scroll up and down through the entire list." 20 75 11 \\
EOF
) > $TMP/rmscript
cat $TMP/temporary_list >> $TMP/rmscript
echo "2> $TMP/return" >> $TMP/rmscript
if [ -L $LOG -o -r $LOG ]; then
rm -f $LOG
fi
cat /dev/null > $LOG
chmod 600 $LOG
chmod 700 $TMP/rmscript
export ADM_DIR;
$TMP/rmscript
remove_packages
if [ "$(cat $TMP/PKGTOOL.REMOVED)" = "" ]; then
rm -f $TMP/PKGTOOL.REMOVED
dialog --title "NO PACKAGES REMOVED" --msgbox "Hit OK to return \
to the main menu." 5 40
else
dialog --title "PACKAGE REMOVAL COMPLETE" --msgbox "The packages have \
been removed. A complete log of the files that were removed has been created \
in $TMP: PKGTOOL.REMOVED." 0 0
fi
rm -f $TMP/rmscript $TMP/return $TMP/tmpmsg $TMP/SeT* $TMP/temporary_list
chmod 755 /
chmod 1777 /tmp
# No, return to the main menu:
# exit
elif [ "$REPLY" = "Other" ]; then
dialog --title "SELECT SOURCE DIRECTORY" --inputbox "Please enter the name of the directory that you wish to \
install packages from:" 10 50 2> $TMP/pkgdir
if [ $? = 1 ]; then
rm -f $TMP/pkgdir $TMP/SeT*
dialog --clear
exit
fi
SOURCE_DIR="$(cat $TMP/pkgdir)"
SOURCE_MOUNTED="always"
DISK_SETS="disk"
chmod 755 $TARGET_DIR
chmod 1777 $TARGET_DIR/tmp
rm -f $TMP/pkgdir
if [ ! -d $SOURCE_DIR ]; then
dialog --title "DIRECTORY NOT FOUND" --msgbox "The directory you want to \
install from ($SOURCE_DIR) \
does not seem to exist. Please check the directory and then try again." \
10 50
dialog --clear
exit
fi
break;
else # installing from current directory
SOURCE_MOUNTED="always"
SOURCE_DIR="$PWD"
DISK_SETS="disk"
chmod 755 $TARGET_DIR
chmod 1777 $TARGET_DIR/tmp
break;
fi
done
fi
if [ "$DISK_SETS" = "disk" ]; then
ASK="always"
fi
mount_the_source() {
# is the source supposed to be mounted already?
if [ "$SOURCE_MOUNTED" = "always" ]; then
# The source should already be mounted, so we test it
if [ ! -d $SOURCE_DIR ]; then # the directory is missing
cat << EOF > $TMP/tmpmsg
Your source device cannot be accessed properly.
Please be sure that it is mounted on $SOURCE_DIR,
and that the Slackware disks are found in subdirectories
of $SOURCE_DIR like specified.
EOF
dialog --title "MOUNT ERROR" --msgbox "$(cat $TMP/tmpmsg)" 11 67
rm -f $TMP/tmpmsg
exit 1;
fi
return 0;
fi
dialog --title "INSERT DISK" --menu "Please insert disk $1 and \
press ENTER to continue." \
11 50 3 \
"Continue" "Continue with the installation" \
"Skip" "Skip the current disk series" \
"Quit" "Abort the installation process" 2> $TMP/reply
if [ ! $? = 0 ]; then
REPLY="Quit"
else
REPLY="$(cat $TMP/reply)"
fi
rm -f $TMP/reply
if [ "$REPLY" = "Skip" ]; then
return 1;
fi
if [ "$REPLY" = "Quit" ]; then
dialog --title "ABORTING" --msgbox "Aborting software installation." 5 50
chmod 755 $TARGET_DIR
chmod 1777 $TARGET_DIR/tmp
exit 1;
fi;
# Old line:
# mount -r -t msdos $SOURCE_DEVICE $SOURCE_DIR
# New ones: (thanks to Andy Schwierskott!)
go_on=y
not_successfull_mounted=1
while [ "$go_on" = y -a "$not_successfull_mounted" = 1 ]; do
mount -r -t msdos $SOURCE_DEVICE $SOURCE_DIR
not_successfull_mounted=$?
if [ "$not_successfull_mounted" = 1 ]; then
mount_answer=x
while [ "$mount_answer" != "y" -a "$mount_answer" != "q" ] ; do
dialog --title "MOUNT PROBLEM" --menu "Media was not successfully \
mounted! Do you want to \
retry, or quit?" 10 60 2 \
"Yes" "Try to mount the disk again" \
"No" "No, abort." 2> $TMP/mntans
mount_answer="$(cat $TMP/mntans)"
rm -f $TMP/mntans
if [ "$mount_answer" = "Yes" ]; then
mount_answer="y"
else
mount_answer="q"
fi
done
go_on=$mount_answer
fi
done
test $not_successfull_mounted = 0
}
umount_the_source() {
if [ ! "$SOURCE_MOUNTED" = "always" ]; then
umount $SOURCE_DEVICE 1> /dev/null 2> /dev/null
fi;
}
install_disk() {
mount_the_source $1
if [ $? = 1 ]; then
umount_the_source;
return 1;
fi
CURRENT_DISK_NAME="$1"
PACKAGE_DIR=$SOURCE_DIR
if [ "$SOURCE_MOUNTED" = "always" -a ! "$DISK_SETS" = "disk" ]; then
PACKAGE_DIR=$PACKAGE_DIR/$1
fi
# If this directory is missing or contains no *.t?z files, bail.
if [ ! -d $PACKAGE_DIR ]; then
return 1
fi
if ! ls $PACKAGE_DIR/*.t?z 1> /dev/null 2> /dev/null ; then
return 1
fi
#
# look for tagfile for this series and copy into $TMP/tagfile
#
touch $TMP/tagfile
if [ ! "$DISK_SETS" = "disk" ]; then
if [ -r $TMP/SeTtagext ]; then
if [ -r $PACKAGE_DIR/tagfile$(cat $TMP/SeTtagext) ]; then
cat $PACKAGE_DIR/tagfile$(cat $TMP/SeTtagext) >> $TMP/tagfile
else
if [ -r $PACKAGE_DIR/tagfile ]; then
cat $PACKAGE_DIR/tagfile >> $TMP/tagfile
fi
fi
#
# Do we need to follow a custom path to the tagfiles?
#
elif [ -r $TMP/SeTtagpath ]; then
custom_path=$(cat $TMP/SeTtagpath)
short_path=$(basename $PACKAGE_DIR)
# If tagfile exists at the specified custom path, copy it over.
if [ -r $custom_path/$short_path/tagfile ]; then
cat $custom_path/$short_path/tagfile >> $TMP/tagfile
else # well, I guess we'll use the default one then.
if [ -r $PACKAGE_DIR/tagfile ]; then
cat $PACKAGE_DIR/tagfile >> $TMP/tagfile
fi
fi
#
# We seem to be testing for this too often... maybe this code should
# be optimized a little...
#
elif [ -r $PACKAGE_DIR/tagfile ]; then
cat $PACKAGE_DIR/tagfile >> $TMP/tagfile
fi
#
# Execute menus if in QUICK mode:
#
if [ -r $TMP/SeTQUICK -a -r $PACKAGE_DIR/maketag ]; then
if [ ! "$MAKETAG" = "" -a -r $PACKAGE_DIR/$MAKETAG ]; then # use alternate maketag
sh $PACKAGE_DIR/$MAKETAG
else
sh $PACKAGE_DIR/maketag
fi
if [ -r $TMP/SeTnewtag ]; then
mv $TMP/SeTnewtag $TMP/tagfile
fi
fi
#
# Protect tagfile from hacker attack:
#
if [ -r $TMP/tagfile ]; then
chmod 600 $TMP/tagfile
fi
fi # ! "$DISK_SETS" = "disk"
# It's possible that the tagfile was specified on the command line. If that's
# the case, then we'll just override whatever we figured out up above.
if [ ! "$USETAG" = "" ]; then
cat $USETAG > $TMP/tagfile
fi
# If there's a catalog file present, use it to check for missing files.
# If not, forget about that and install whatever's there.
if [ "$1" = "single_disk" -o -r $PACKAGE_DIR/disk$1 -o -r $PACKAGE_DIR/package-list.txt ]; then
if [ -r $PACKAGE_DIR/package-list.txt ]; then
CATALOG_FILE=$PACKAGE_DIR/package-list.txt
else
CATALOG_FILE=$(basename $PACKAGE_DIR/disk*);
fi
if [ -r $PACKAGE_DIR/$CATALOG_FILE -a ! -d $PACKAGE_DIR/$CATALOG_FILE ]; then
if grep CONTENTS: $PACKAGE_DIR/$CATALOG_FILE 1> /dev/null 2> /dev/null ; then
# First we check for missing packages...
for PKGTEST in $(grep "^CONTENTS:" $PACKAGE_DIR/$CATALOG_FILE | cut -f2- -d : 2> /dev/null) ; do
# This is not a perfect test. (say emacs is missing but emacs-nox is not)
if ls $PACKAGE_DIR/$PKGTEST*.t?z 1> /dev/null 2> /dev/null ; then # found something like it
true
else
cat << EOF > $TMP/tmpmsg
WARNING!!!
While looking through your index file ($CATALOG_FILE),
I noticed that you might be missing a package:
$PKGTEST-\*-\*-\*.t?z
that is supposed to be on this disk (disk $1). You may go
on with the installation if you wish, but if this is a
crucial file I'm making no promises that your machine will
boot.
EOF
dialog --title "FILE MISSING FROM YOUR DISK" --msgbox \
"$(cat $TMP/tmpmsg)" 17 67
fi
done # checking for missing packages
# Now we test for extra packages:
ALLOWED="$(grep CONTENTS: $PACKAGE_DIR/$CATALOG_FILE | cut -b10- 2> /dev/null)"
for PACKAGE_FILENAME in $PACKAGE_DIR/*.t?z; do
BASE=$(pkgbase $PACKAGE_FILENAME)
BASE="$(package_name $BASE)"
if echo $ALLOWED | grep $BASE 1> /dev/null 2> /dev/null ; then
true
else
cat << EOF > $TMP/tmpmsg
WARNING!!!
While looking through your index file ($CATALOG_FILE),
I noticed that you have this extra package:
($BASE.t?z)
that I don't recognize. Please be sure this package is
really supposed to be here, and is not left over from an
old version of Slackware. Sometimes this can happen at the
archive sites.
EOF
dialog --title "EXTRA FILE FOUND ON YOUR DISK" \
--msgbox "$(cat $TMP/tmpmsg)" 17 67
rm -f $TMP/tmpmsg
fi
done
fi
fi
fi # check for missing/extra packages
# Install the packages:
for PACKAGE_FILENAME in $PACKAGE_DIR/*.t?z; do
if [ "$PACKAGE_FILENAME" = "$PACKAGE_DIR/*.t?z" ]; then
continue;
fi
if [ "$ASK" = "never" ]; then # install the package
installpkg -root $TARGET_DIR -infobox -tagfile $TMP/tagfile $PACKAGE_FILENAME
ERROR=$?
elif [ "$ASK" = "tagfiles" ]; then
installpkg -root $TARGET_DIR -menu -tagfile $TMP/tagfile $PACKAGE_FILENAME
ERROR=$?
else # ASK should be = always here, and that's how we'll treat it
installpkg -root $TARGET_DIR -menu -ask -tagfile $TMP/tagfile $PACKAGE_FILENAME
ERROR=$?
fi
# Check for abort:
if [ "$ERROR" = "99" ]; then
umount_the_source;
chmod 755 $TARGET_DIR
chmod 1777 $TARGET_DIR/tmp
exit 1;
fi
done
OUTTAHERE="false"
if [ -r $PACKAGE_DIR/install.end ]; then
OUTTAHERE="true"
fi
umount_the_source;
if [ "$OUTTAHERE" = "true" ]; then
return 1;
fi
}
install_disk_set() { # accepts one argument: the series name in lowercase.
SERIES_NAME=$1
CURRENT_DISK_NUMBER="1";
while [ 0 ]; do
# Don't start numbering the directories until 2:
if [ $CURRENT_DISK_NUMBER = 1 ]; then
DISKTOINSTALL=$SERIES_NAME
else
DISKTOINSTALL=$SERIES_NAME$CURRENT_DISK_NUMBER
fi
install_disk $DISKTOINSTALL
if [ ! $? = 0 ]; then # install.end was found, or the user chose
# to quit installing packages.
return 0;
fi
CURRENT_DISK_NUMBER=$(expr $CURRENT_DISK_NUMBER + 1)
done;
}
# /* main() */ ;)
if [ "$DISK_SETS" = "disk" ]; then
install_disk single_disk;
ASK="always"
else
touch $TMP/tagfile
chmod 600 $TMP/tagfile
if echo $DISK_SETS | grep "#a#" 1> /dev/null 2> /dev/null ; then
A_IS_NEEDED="true"
else
A_IS_NEEDED="false"
fi
while [ 0 ];
do
while [ 0 ]; # strip leading '#'s
do
if [ "$(echo $DISK_SETS | cut -b1)" = "#" ]; then
DISK_SETS="$(echo $DISK_SETS | cut -b2-)"
else
break;
fi
done
if [ "$A_IS_NEEDED" = "true" ]; then
cat << EOF > $TMP/tmpmsg
--- Installing package series ==>a<==
EOF
dialog --infobox "$(cat $TMP/tmpmsg)" 5 45
sleep 1
rm -f $TMP/tmpmsg
install_disk_set a;
A_IS_NEEDED="false"
fi
count="1"
if [ "$(echo $DISK_SETS | cut -b$count)" = "" ]; then
break; # we be done here :^)
else
count="2"
while [ 0 ]; do
if [ "$(echo $DISK_SETS | cut -b$count)" = "" -o "$(echo $DISK_SETS | cut -b$count)" = "#" ]; then
count="$(expr $count - 1)"
break;
else
count="$(expr $count + 1)"
fi
done
fi
diskset="$(echo $DISK_SETS | cut -b1-$count)"
count="$(expr $count + 1)"
DISK_SETS="$(echo $DISK_SETS | cut -b$count-)"
if [ "$diskset" = "a" ]; then
continue; # we expect this to be done elsewhere
fi
cat << EOF > $TMP/tmpmsg
Installing package series ==>$diskset<==
EOF
dialog --infobox "$(cat $TMP/tmpmsg)" 5 45
sleep 1
rm -f $TMP/tmpmsg
install_disk_set $diskset;
done
fi
if [ "$DISK_SETS" = "disk" -o "$CMD_START" = "true" ]; then
if [ -r $TMP/tagfile ]; then
rm $TMP/tagfile
fi
dialog --clear
fi
chmod 755 $TARGET_DIR $TARGET_DIR/var $TARGET_DIR/usr
chmod 1777 $TARGET_DIR/tmp

View file

@ -0,0 +1,438 @@
#!/bin/sh
# Slackware remove package script
#
# Copyright 1994, 1995, 1998 Patrick Volkerding, Moorhead, Minnesota USA
# Copyright 2001, Slackware Linux, Inc., Concord, CA USA
# Copyright 2009, 2015, 2016, 2018 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Tue Jun 5 20:04:45 UTC 2018
# Use /var/lib/pkgtools for the package database, not /var/log.
# Logs of the removed packages and scripts will remain in /var/log, but moved
# into /var/log/pkgtools.
#
# Sun May 27 18:02:23 UTC 2018
# Added --terse mode to print one line per removed package.
#
# Wed May 23 17:31:23 UTC 2018
# Use file locking to prevent more than one copy of ldconfig from running at
# a time.
#
# Thu Sep 15 17:46:28 UTC 2016 <volkerdi>
# If removepkg is called with a short package name (no -$VERSION-$ARCH-$BUILD),
# remove the most recently installed matching package, not the oldest one.
#
# Thu Sep 15 08:09:01 BST 2016 <mozes>
# - Handle finding >1 match for a package. Thanks to SeB on LQ for the feedback.
#
# Wed Sep 14 20:44:00 BST 2016 <mozes>
# - Modify package_name function to cater for package file names that contain
# >=4 hyphens.
# Thanks to coralfang on LQ for the report and to Jim Hawkins for the patch.
# - Modified to handle packages that contain file names with backslashes
# Thanks to aaazen on LQ for the report and the patch.
#
# Thu Sep 24 03:31:58 UTC 2015 <alphageek>
# extract_links() sed adjusted to handle symlinks with spaces.
#
# Sun Sep 6 21:58:36 BST 2009
# Replaced pkgbase & package_name code with 'sed' script by Jim Hawkins.
#
# Sat Apr 25 21:18:53 UTC 2009 (12.34567890b)
# Converted to use new pkgbase() function to remove pathname and
# valid package extensions.
#
# Revision 12.34567890 Sun Apr 5 20:59:32 CDT 2009 <volkerdi>
# - Support packages with the extensions: .tgz, .tbz, .tlz, .txz
#
# Revision 1.9 Wed Oct 31 14:04:28 CDT 2007 volkerding
# - Fix problem removing packages with a large number of fields.
# Thanks to Niki Kovacs for noticing this, and to Piter Punk
# for the patch.
# - Use LC_ALL=C locale, which is much faster with "sort".
# Thanks to Tsomi.
# - Don't try to remove any package that starts with '-'. This
# is not a proper package name (usually a typo), and results
# in the package database being broken. Thanks to Jef Oliver.
# - Patched cat_except() to allow the last Slackware package on
# a partition to be removed (using ROOT=, of course)
# Thanks to Selkfoster for the patch, and to everyone else who
# proposed solutions before. This issue really wasn't given
# the highest priority before, but I figured while I'm in here...
#
# Revision 1.8 Thu Nov 22 14:00:13 PST 2001 volkerding Rel $
# - Move $TMP underneath $ROOT
# - Understand the idea of a base package name, so that packages
# can be removed with any of these notations:
# removepkg foo-1.0-i386-1.tgz
# removepkg foo-1.0-i386-1
# removepkg foo.tgz
# removepkg foo
#
# Revision 1.7 2001/03/30 12:36:28 volkerding
# - Strip extra ".tgz" from input names.
#
# Revision 1.6 1999/03/25 18:26:41 volkerding
# - Use external $ROOT variable, like installpkg.
#
# Revision 1.5.1 1998/03/18 15:37:28 volkerding
# - Since removepkg is always run by root, the temp directory has been
# moved from /tmp to a private directory to avoid symlink attacks from
# malicious users.
#
# Revision 1.5 1997/06/26 12:09:53 franke
# - Fixed old bug in TRIGGER regex setting
# - -preserve/-copy options now preserve non-unique files
# and empty directories also
#
# Revision 1.4 1997/06/09 13:21:36 franke
# - Package file preserve (-preserve, -copy) added.
# - Don't execute "rm -rf" lines from doinst.sh, removing links explicit.
# - Warning on no longer existing files added.
# - Warning on files changed after package installation added.
# - Intermediate file preserve (-keep) added.
# - Check for required files/links now done on a combined list.
# - Write access to /var/log/{packages,scripts} no longer necessary for -warn.
#
# Revision 1.3 1997/06/08 13:03:05 franke
# Merged with revision 1.1.1.1
#
# Revision 1.2 1996/06/01 20:04:26 franke
# Delete empty directories & formated manual pages added
#
# Revision 1.1.1.1 1995/12/18 21:20:42 volkerding
# Original Version from Slackware 3.1
#
# Revision 1.1 1995/06/05 22:49:11 volkerding
# Original Version from Slackware 3.0
#
# Needed to find package names within the 'remove_packages' function:
shopt -s extglob
# Return a package name that has been stripped of the dirname portion
# and any of the valid extensions (only):
pkgbase() {
# basename + strip extensions .tbz, .tgz, .tlz and .txz
echo "$1" | sed 's?.*/??;s/\.t[bglx]z$//'
}
# This makes "sort" run much faster:
export LC_ALL=C
# Set the prefix for the package database directories (packages, scripts).
ADM_DIR="$ROOT/var/lib/pkgtools"
# Set the prefix for the removed packages/scripts log files:
LOG_DIR="$ROOT/var/log/pkgtools"
# Make sure there's a proper temp directory:
TMP=$ADM_DIR/setup/tmp
# If the $TMP directory doesn't exist, create it:
if [ ! -d $TMP ]; then
mkdir -p $TMP
chmod 700 $TMP # no need to leave it open
fi
PRES_DIR=$TMP/preserved_packages
# Lock directory for ldconfig... share it with installpkg so that upgradepkg
# becomes properly ldconfig-locked, too.
INSTLOCKDIR=${INSTLOCKDIR:-/run/lock/pkgtools}
if [ ! -d $INSTLOCKDIR ]; then
mkdir -p $INSTLOCKDIR
fi
# This simple cat_except() should be used on the installer,
# since the busybox "find" can't handle the complex find
# syntax:
#cat_except() {
# ( cd "$1" && cat $(ls * | sed "/^$2\$/d"))
#}
# This version of cat_except() allows the last package to be
# removed when ROOT= is used:
cat_except() {
( cd "$1" && \
if [ $(find . -type f -maxdepth 1 2> /dev/null | wc -l) -ne 1 ]; then
cat $(find . -type f -maxdepth 1 2> /dev/null | grep -v "$2") 2> /dev/null
fi
)
}
extract_links() {
sed -n 's,^[ ]*( [ ]*cd[ ]* \(.*\) [ ]*; [ ]*rm [ ]*-rf[ ]* \(.*\) [ ]*)[ ]*$,\1/\2,p'
}
preserve_file() {
if [ "$PRESERVE" = "true" ]; then
F="$(basename "$1")"
D="$(dirname "$1")"
if [ ! -d "$PRES_DIR/$PKGNAME/$D" ]; then
mkdir -p "$PRES_DIR/$PKGNAME/$D" || return 1
fi
cp -p "$ROOT/$D/$F" "$PRES_DIR/$PKGNAME/$D" || return 1
fi
return 0
}
preserve_dir() {
if [ "$PRESERVE" = "true" ]; then
if [ ! -d "$PRES_DIR/$PKGNAME/$1" ]; then
mkdir -p "$PRES_DIR/$PKGNAME/$1" || return 1
fi
fi
return 0
}
keep_files() {
while read FILE ; do
if [ ! -d "$ROOT/$FILE" ]; then
if [ -r "$ROOT/$FILE" ]; then
! [ $TERSE ] && echo " --> $ROOT/$FILE was found in another package. Skipping."
preserve_file "$FILE"
else
if [ "$(echo $FILE | cut -b1-8)" != "install/" ]; then
! [ $TERSE ] && echo "WARNING: Nonexistent $ROOT/$FILE was found in another package. Skipping."
fi
fi
else
preserve_dir "$FILE"
fi
done
}
keep_links() {
while read LINK ; do
if [ -L "$ROOT/$LINK" ]; then
! [ $TERSE ] && echo " --> $ROOT/$LINK (symlink) was found in another package. Skipping."
else
! [ $TERSE ] && echo "WARNING: Nonexistent $ROOT/$LINK (symlink) was found in another package. Skipping."
fi
done
}
delete_files() {
local unset LC_ALL # Locally (within this delete_files function) allow handling of backslashes
while read -r AFILE ; do # do not expand backslashes on read
FILE=$(printf "%b" "$AFILE") # unescape octal characters
if [ ! -d "$ROOT/$FILE" ]; then
if [ -r "$ROOT/$FILE" ]; then
if [ "$ROOT/$FILE" -nt "$ADM_DIR/packages/$PKGNAME" ]; then
! [ $TERSE ] && echo "WARNING: $ROOT/$FILE changed after package installation."
fi
if [ ! "$WARN" = "true" ]; then
! [ $TERSE ] && echo " --> Deleting $ROOT/$FILE"
preserve_file "$FILE" && rm -f "$ROOT/$FILE"
else
! [ $TERSE ] && echo " --> $ROOT/$FILE would be deleted"
preserve_file "$FILE"
fi
else
! [ $TERSE ] && echo " --> $ROOT/$FILE no longer exists. Skipping."
fi
else
preserve_dir "$FILE"
fi
done
}
delete_links() {
while read LINK ; do
if [ -L "$ROOT/$LINK" ]; then
if [ ! "$WARN" = "true" ]; then
! [ $TERSE ] && echo " --> Deleting symlink $ROOT/$LINK"
rm -f "$ROOT/$LINK"
else
! [ $TERSE ] && echo " --> $ROOT/$LINK (symlink) would be deleted"
fi
else
! [ $TERSE ] && echo " --> $ROOT/$LINK (symlink) no longer exists. Skipping."
fi
done
}
delete_dirs() {
sort -r | \
while read DIR ; do
if [ -d "$ROOT/$DIR" ]; then
if [ ! "$WARN" = "true" ]; then
if [ $(ls -a "$ROOT/$DIR" | wc -l) -eq 2 ]; then
! [ $TERSE ] && echo " --> Deleting empty directory $ROOT/$DIR"
rmdir "$ROOT/$DIR"
else
! [ $TERSE ] && echo "WARNING: Unique directory $ROOT/$DIR contains new files"
fi
else
! [ $TERSE ] && echo " --> $ROOT/$DIR (dir) would be deleted if empty"
fi
fi
done
}
delete_cats() {
sed -n 's,/man\(./[^/]*$\),/cat\1,p' | \
while read FILE ; do
if [ -f "$ROOT/$FILE" ]; then
if [ ! "$WARN" = "true" ]; then
! [ $TERSE ] && echo " --> Deleting $ROOT/$FILE (fmt man page)"
rm -f $ROOT/$FILE
else
! [ $TERSE ] && echo " --> $ROOT/$FILE (fmt man page) would be deleted"
fi
fi
done
}
# Conversion to 'comm' utility by Mark Wisdom.
# is pretty nifty! :^)
remove_packages() {
for PKGLIST in $*
do
PKGNAME=$(pkgbase $PKGLIST)
# If we don't have a package match here, then we will attempt to find
# a package using the long name format (name-version-arch-build) for
# which the base package name was given. On a properly-managed machine,
# there should only be one package installed with a given basename, but
# we don't enforce this policy. If there's more than one, only one will
# be removed. If you want to remove them all, you'll need to run
# removepkg again until it removes all the same-named packages.
if [ ! -e $ADM_DIR/packages/$PKGNAME ]; then
# Short name not found - finally try looking for full name - e.g. foo-1.0-arm-1
pushd $ADM_DIR/packages > /dev/null
# Don't set PKGNAME if there are no matches:
if [ ! "$( ls -1 $PKGNAME-+([^-])-+([^-])-+([^-]) 2>/dev/null | wc -l )" = "0" ]; then
# If there is more than one package with the same name, set PKGNAME to the
# most recently installed version. This does not affect the behavior of
# upgradepkg, which always removes all other existing versions of the
# same package.
PKGNAME=$( ls -1t $PKGNAME-+([^-])-+([^-])-+([^-]) 2> /dev/null | head -n1 )
fi
popd > /dev/null
fi
if [ -r $ADM_DIR/packages/$PKGNAME ]; then
if [ ! "$WARN" = true ]; then
echo "Removing package: $(basename $ADM_DIR/packages/$PKGNAME)"
fi
if fgrep "./" $ADM_DIR/packages/$PKGNAME 1> /dev/null 2>&1; then
TRIGGER="^\.\/"
else
TRIGGER="FILE LIST:"
fi
if [ ! "$WARN" = true ]; then
! [ $TERSE ] && echo "Removing files:"
fi
sed -n "/$TRIGGER/,/^$/p" < $ADM_DIR/packages/$PKGNAME | \
fgrep -v "FILE LIST:" | sort -u > $TMP/delete_list$$
# Pat's new-new && improved pre-removal routine.
cat_except $ADM_DIR/packages $PKGNAME | sort -u > $TMP/required_list$$
if [ -r $ADM_DIR/scripts/$PKGNAME ]; then
extract_links < $ADM_DIR/scripts/$PKGNAME | sort -u > $TMP/del_link_list$$
cat_except $ADM_DIR/scripts $PKGNAME | extract_links | \
sort -u > $TMP/required_links$$
mv $TMP/required_list$$ $TMP/required_files$$
sort -u $TMP/required_links$$ $TMP/required_files$$ > $TMP/required_list$$
comm -12 $TMP/del_link_list$$ $TMP/required_list$$ | keep_links
comm -23 $TMP/del_link_list$$ $TMP/required_list$$ | delete_links
else
cat $ADM_DIR/scripts/* 2> /dev/null | extract_links | \
sort -u > $TMP/required_links$$
mv $TMP/required_list$$ $TMP/required_files$$
sort -u $TMP/required_links$$ $TMP/required_files$$ >$TMP/required_list$$
fi
comm -12 $TMP/delete_list$$ $TMP/required_list$$ | keep_files
comm -23 $TMP/delete_list$$ $TMP/required_list$$ > $TMP/uniq_list$$
delete_files < $TMP/uniq_list$$
delete_dirs < $TMP/uniq_list$$
delete_cats < $TMP/uniq_list$$
if [ ! "$KEEP" = "true" ]; then
rm -f $TMP/delete_list$$ $TMP/required_files$$ $TMP/uniq_list$$
rm -f $TMP/del_link_list$$ $TMP/required_links$$ $TMP/required_list$$
fi
if [ "$PRESERVE" = "true" ]; then
if [ -r $ADM_DIR/scripts/$PKGNAME ]; then
if [ ! -d "$PRES_DIR/$PKGNAME/install" ]; then
mkdir -p "$PRES_DIR/$PKGNAME/install"
fi
cp -p $ADM_DIR/scripts/$PKGNAME $PRES_DIR/$PKGNAME/install/doinst.sh
fi
fi
if [ ! "$WARN" = "true" ]; then
# We won't assume that anything in /var/log can be trusted to remain there,
# so we'll remake the directories and symlinks first:
mkdir -p $LOG_DIR/removed_packages $LOG_DIR/removed_scripts
for symlink in removed_packages removed_scripts ; do
if [ ! -L $LOG_DIR/../$symlink ]; then
rm -rf $LOG_DIR/../$symlink
( cd $LOG_DIR/.. ; ln -sf pkgtools/$symlink . )
fi
done
# Now that we know we have log directories, move the files:
mv $ADM_DIR/packages/$PKGNAME $LOG_DIR/removed_packages
if [ -r $ADM_DIR/scripts/$PKGNAME ]; then
mv $ADM_DIR/scripts/$PKGNAME $LOG_DIR/removed_scripts
fi
fi
else
echo "No such package: $(basename $ADM_DIR/packages/$PKGNAME). Can't remove."
fi
# In the case where a library and symlink are removed but an earlier version
# remains on the machine, this will link it up and save potential problems:
if [ "$ROOT" = "" ] && [ -x /sbin/ldconfig ]; then
( flock 9 || exit 11
/sbin/ldconfig 2> /dev/null
) 9> $INSTLOCKDIR/ldconfig.lock
fi
done
}
if [ "$#" = "0" ]; then
echo "Usage: $(basename $0) [--copy] [--keep] [--preserve] [--terse] [--warn] packagename ..."; exit 1
fi
while : ; do
case "$1" in
-copy | --copy) WARN=true; PRESERVE=true; shift;;
-keep | --keep) KEEP=true; shift;;
-preserve | --preserve) PRESERVE=true; shift;;
-terse | --terse) TERSE=0; shift;;
-warn | --warn) WARN=true; shift;;
-* | --*) echo "Usage: $(basename $0) [-copy] [-keep] [-preserve] [-warn] packagename ..."; exit 1;;
*) break
esac
done
if [ "$WARN" = "true" ]; then
unset TERSE
echo "Only warning... not actually removing any files."
if [ "$PRESERVE" = "true" ]; then
echo "Package contents is copied to $PRES_DIR."
fi
echo "Here's what would be removed (and left behind) if you"
echo "removed the package(s):"
echo
else
if [ "$PRESERVE" = "true" ]; then
echo "Package contents is copied to $PRES_DIR."
fi
fi
remove_packages $*

View file

@ -0,0 +1,5 @@
# Install the bootdisk or CD-ROM's Linux kernel:
#BLURB="Install a Linux kernel from a bootdisk"
if [ -x /usr/lib/setup/SeTkernel ]; then
. /usr/lib/setup/SeTkernel
fi

View file

@ -0,0 +1,267 @@
#!/bin/sh
#BLURB="Create a USB Linux boot stick"
if [ -r /usr/lib/setup/setup ]; then
RDIR=/dev/tty4
else
RDIR=/dev/null
fi
TMP=/var/lib/pkgtools/setup/tmp
if [ ! -d $TMP ]; then
mkdir -p $TMP
fi
if [ -z "$1" ]; then
T_PX=/
else
T_PX="$1"
fi
if [ -z "$2" ]; then
ROOT_DEVICE=$(mount | head -n 1 | cut -f 1 -d ' ')
else
ROOT_DEVICE="$2"
fi
if [ -r $T_PX/usr/share/syslinux/mbr.bin ]; then
MBR_BIN=$T_PX/usr/share/syslinux/mbr.bin
elif [ -r /usr/share/syslinux/mbr.bin ]; then
MBR_BIN=/usr/share/syslinux/mbr.bin
else
dialog --title "ERROR: USB BOOT STICK NOT CREATED" --msgbox \
"Master Boot Record file mbr.bin not found. This script requires that the syslinux package is installed." 6 60
exit
fi
while [ 0 ]; do # the bootdisk menu loop
# Run "rescan-scsi-bus -l" to get an up to date overview of devices:
/sbin/rescan-scsi-bus -l 1>$RDIR 2>$RDIR
# Get a list of removable block devices before the USB stick is inserted:
echo "" > $TMP/remov_prior
for BDEV in $(ls --indicator-style none /sys/block | egrep -v "loop|ram"); do
[ -r /sys/block/$BDEV/removable -a "$(cat /sys/block/$BDEV/removable)" == "1" ] \
&& echo $BDEV >> $TMP/remov_prior
done
if [ "$T_PX" = "/" ]; then
DEFAULTITEM="Create"
else
DEFAULTITEM="Skip"
fi
dialog --title "MAKE USB FLASH BOOT" --default-item "$DEFAULTITEM" --menu \
"If your computer supports booting from a USB device, it is recommended that you make \
a USB boot stick for your system at this time. It will boot your computer straight \
into the root filesystem on $ROOT_DEVICE. \n\
\n\
Please insert a USB flash memory stick and then press ENTER to create a boot stick. \n\
\n\
WARNING! The existing contents of the USB stick will be erased. \n\
" 18 70 2 \
"Create" "Make a USB Linux boot stick" \
"Skip" "Skip making a USB boot stick" \
2> $TMP/return
REPLY=`cat $TMP/return`
rm -f $TMP/return
if [ "$REPLY" = "Create" ]; then
# Run "rescan-scsi-bus -l" to discover our USB stick if needed:
/sbin/rescan-scsi-bus -l 1>$RDIR 2>$RDIR
# Get a list of removable block devices after the USB stick is inserted:
echo "" > $TMP/remov_after
for BDEV in $(ls --indicator-style none /sys/block | egrep -v "loop|ram"); do
[ -r /sys/block/$BDEV/removable -a "$(cat /sys/block/$BDEV/removable)" == "1" ] \
&& echo $BDEV >> $TMP/remov_after
done
ADDED=$(diff -u $TMP/remov_prior $TMP/remov_after | sed -n 's/^\+//p' | grep -v '^+')
REMVD=$(diff -u $TMP/remov_prior $TMP/remov_after | sed -n 's/^\+//p' | grep -v '^+')
if [ -n "$ADDED" ] ; then STICK=$ADDED ; else STICK="" ; fi
rm $TMP/remov_prior $TMP/remov_after
if [ ! -n "$STICK" ]; then
dialog --title "NO NEW DEVICE DETECTED" --ok-label Restart --msgbox \
"No new USB device was detected.
If you had already inserted your USB stick, please remove it now. \
Then select 'Restart'." 7 70
continue
else
VENDOR="Vendor : $(cat /sys/block/$STICK/device/vendor)"
MODEL="Model : $(cat /sys/block/$STICK/device/model)"
SIZE="Size : $(( $(cat /sys/block/$STICK/size) / 2048)) MB"
dialog --title "NEW DEVICE DETECTED" --yesno \
"A new USB device '/dev/$STICK' was detected with specifications:
-- $VENDOR
-- $MODEL
-- $SIZE
If this is the USB stick to use, select 'Yes',
otherwise select 'No'." 12 70
if [ $? -eq 1 ]; then
continue
fi
fi
dialog --title "CREATING USB BOOT STICK" --infobox "Creating SYSLINUX bootdisk for \
$ROOT_DEVICE on /dev/$STICK." 3 64
# Create a 16M partition with FAT16. This should be large enough for any kernel (for now).
PARTSIZE="+16384K"
# Zero out master boot record and then initialize it with one bootable dos partition
dd if=/dev/zero of=/dev/$STICK bs=512 count=1 1> $RDIR 2> $RDIR
echo "PARTSIZE=$PARTSIZE" 1> $RDIR
fdisk /dev/$STICK << EOF 1> $RDIR 2> $RDIR
n
p
1
2048
$PARTSIZE
t 1
6
a
w
EOF
if [ -x /sbin/mkdosfs ]; then
/sbin/mkdosfs -I -n USBSLACK -F 16 /dev/${STICK}1 1> $RDIR 2> $RDIR
else
chroot $T_PX /sbin/mkdosfs -I -n USBSLACK -F 16 /dev/${STICK}1 1> $RDIR 2> $RDIR
fi
sync
# install syslinux
if which syslinux-nomtools 1> $RDIR 2> $RDIR ; then
syslinux-nomtools -i -s /dev/${STICK}1 1> $RDIR 2> $RDIR
elif which strace 1> $RDIR 2> $RDIR ; then
# There is a race condition between udev >= 214 and mtools which causes
# the regular version of syslinux to fail when installing to USB, but
# strace changes the timing just enough that it usually works:
strace syslinux -i -s /dev/${STICK}1 1> $RDIR 2> $RDIR
else
# This might work when the issues with mtools and udev are addressed,
# or if syslinux is eventually able to work around them.
syslinux -i -s /dev/${STICK}1 1> $RDIR 2> $RDIR
fi
# make the device bootable:
echo "dd if=$MBR_BIN of=/dev/$STICK" 1> $RDIR 2> $RDIR
dd if=$MBR_BIN of=/dev/$STICK 1> $RDIR 2> $RDIR
sync
# mount the device and write some configuration files
if [ ! -d $TMP/bootdisk ]; then
mkdir $TMP/bootdisk 2> $RDIR
fi
mount -t vfat /dev/${STICK}1 $TMP/bootdisk 1> $RDIR 2> $RDIR
if [ -r $T_PX/boot/vmlinuz ]; then
cp $T_PX/boot/vmlinuz $TMP/bootdisk/vmlinuz 1> $RDIR 2> $RDIR
elif [ -r $T_PX/vmlinuz ]; then
cp $T_PX/vmlinuz $TMP/bootdisk/vmlinuz 1> $RDIR 2> $RDIR
fi
cat << EOF > $TMP/bootdisk/message.txt 2> $RDIR
Welcome to the 09Slackware07 Linux custom USB boot stick!
By default, this stick boots a root Linux partition on $ROOT_DEVICE when you
hit ENTER. If you'd like to boot some other partition, use a command like
this on the prompt below:
mount root=/dev/sda1 ro
Where "/dev/sda1" is the partition you want to boot, and "ro" specifies that
the partition should be initially mounted as read-only. If you wish to mount
the partition read-write, use "rw" instead. To set the video console mode,
use the vga= parameter (press F1 to see a table). You may also add any other
kernel parameters you might need depending on your hardware, and which
drivers are included in your kernel.
EOF
cat << EOF > $TMP/bootdisk/syslinux.cfg 2> $RDIR
default vmlinuz root=$ROOT_DEVICE vga=normal ro
prompt 1
timeout 6000
display message.txt
F1 f1.txt
F2 message.txt
#F3 f3.txt
#F4 f4.txt
#F5 f5.txt
#F6 f6.txt
#F7 f7.txt
label mount
kernel vmlinuz
append root=$ROOT_DEVICE vga=normal ro
EOF
cat << EOF > $TMP/bootdisk/f1.txt 2> $RDIR
STANDARD MODES:
To make the kernel prompt for standard video modes use: vga=ask
FRAMEBUFFER MODES:
To get the kernel to start in VESA framebuffer mode, you need to pass it
a vga= init string on the "boot:" prompt. Here's a table:
Colors 640x480 800x600 1024x768 1280x1024 1600x1200
--------+---------------------------------------------
256 | 769 771 773 775 796
32,768 | 784 787 790 793 797
65,536 | 785 788 791 794 798
16.8M | 786 789 792 795 799
...such as this for 1024x768x64k:
vga=791
F2 returns to the previous page.
EOF
if [ "$(uname -m)" == "x86_64" ]; then # also install an EFI bootloader
mkdir -p $TMP/bootdisk/EFI/BOOT 1> $RDIR 2> $RDIR
cp $T_PX/boot/elilo-x86_64.efi $TMP/bootdisk/EFI/BOOT/BOOTX64.EFI 1> $RDIR 2> $RDIR
cat << EOF > $TMP/bootdisk/EFI/BOOT/message.txt 2> $RDIR
Welcome to the Slackware Linux custom USB boot stick!
By default, this stick boots a root Linux partition on $ROOT_DEVICE when you
hit ENTER. If you'd like to boot some other partition, use a command like
this on the prompt below:
huge.s root=/dev/sda1 ro
Where "/dev/sda1" is the partition you want to boot, and "ro" specifies that
the partition should be initially mounted as read-only. If you wish to mount
the partition read-write, use "rw" instead. You may also add any other
kernel parameters you might need depending on your hardware, and which
drivers are included in your kernel.
Hit ENTER to boot:
EOF
cat << EOF > $TMP/bootdisk/EFI/BOOT/elilo.conf 2> $RDIR
chooser=simple
message=message.txt
delay=300
timeout=300
#
image=/vmlinuz
label=huge.s
read-only
append="root=$ROOT_DEVICE vga=normal ro"
EOF
fi # end EFI installation
sync
umount /dev/${STICK}1
rm -r $TMP/bootdisk
# Sometimes the nomtools version of syslinux will leave the volume mounted,
# so umount again:
umount /dev/${STICK}1 2> $RDIR
if [ "$T_PX" = "/" ]; then
dialog --title "USB BOOT STICK CREATED" --msgbox \
"The USB boot stick has been successfully created on device /dev/$STICK." 6 60
exit
fi
dialog --title "USB BOOT STICK CREATED" --ok-label Continue --cancel-label Create --menu \
"The USB boot stick has been successfully created on device /dev/$STICK. If you would like to \
create an additional boot stick, please select 'Create' and we'll go back and make another \
one, otherwise select 'Continue' to continue configuring your system." 12 71 2 \
"Continue" "Continue the configuration (done making boot sticks)" \
"Create" "Make a spare Linux boot stick in /dev/$STICK" \
2> $TMP/return
REPLY=`cat $TMP/return`
rm -f $TMP/return
if [ "$REPLY" = "Create" ]; then
continue
else
break
fi
else # ! Create
break
fi
done

View file

@ -0,0 +1,33 @@
#!/bin/sh
#BLURB="Set a default browser link."
# Sorry, this is not a full menu, and may not ever be.
# It is trivial to find the htmllink symbolic link and
# point it at the browser that you like. Besides,
# this is not a Linux standard that could be locating
# in any official document. It seems to have been
# started without any consultation with other
# distributions by <take a wild guess>, and now things
# expect it to be there.
#
#
# Note 1. Listing a browser doesn't mean we ship it.
# Note 2. Complaints about our preferences or missing
# browsers in the list will be considered.
# Yell at Pat about it. ;-)
# There must be no link, or we assume the admin set it and
# do nothing. Can you tell this Q+D script was written for
# the initial installation?
for browser in firefox seamonkey konqueror galeon epiphany links lynx ; do
if [ ! -e usr/bin/htmlview -a -x usr/bin/$browser ]; then
cat << EOF > usr/bin/htmlview
#!/bin/sh
exec $browser "\$@"
EOF
fi
done
if [ -e usr/bin/htmlview ]; then
chmod 755 usr/bin/htmlview
fi

View file

@ -0,0 +1,342 @@
#!/bin/sh
#BLURB="Select/deselect system daemons (services)"
TMP=/var/lib/pkgtools/setup/tmp
if [ ! -d $TMP ]; then
mkdir -p $TMP
fi
T_PX="$1"
cd $T_PX
rm -f $TMP/tmpscript
cat << EOF > $TMP/tmpscript
dialog --title "CONFIRM STARTUP SERVICES TO RUN" --item-help --checklist \\
"The selected services will be started at boot time. If you \\
don't need them, you may unselect them to turn them off (which may improve \\
overall system security). You may also choose to start services that are \\
not run by default, but be aware that more services means less security. \\
Use the spacebar to select or unselect the services you wish to run. \\
Recommended choices have been preselected. \\
Press the ENTER key when you are finished." \\
20 75 7 \\
EOF
if [ -r etc/rc.d/rc.atalk ]; then
if [ -x etc/rc.d/rc.atalk ]; then
RC_ATALK=on
else
RC_ATALK=off
fi
cat << EOF >> $TMP/tmpscript
"rc.atalk" "Netatalk Appletalk file/print server" $RC_ATALK "The Netatalk server is a file and print server for Macintosh networks." \\
EOF
fi
if [ -r etc/rc.d/rc.atd ]; then
if [ -x etc/rc.d/rc.atd ]; then
RC_ATD=on
else
RC_ATD=off
fi
cat << EOF >> $TMP/tmpscript
"rc.atd" "Schedules jobs for later" $RC_ATD "The at daemon schedules jobs to be run at a specified time." \\
EOF
fi
if [ -r etc/rc.d/rc.bind ]; then
if [ -x etc/rc.d/rc.bind ]; then
RC_BIND=on
else
RC_BIND=off
fi
cat << EOF >> $TMP/tmpscript
"rc.bind" "BIND (Domain Name System) server" $RC_BIND "BIND (Berkeley Internet Name Domain) is a Domain Name System (DNS) server." \\
EOF
fi
if [ -r etc/rc.d/rc.crond ]; then
if [ -x etc/rc.d/rc.crond ]; then
RC_CROND=on
else
RC_CROND=off
fi
cat << EOF >> $TMP/tmpscript
"rc.crond" "Time based job scheduler" $RC_CROND "The cron daemon schedules jobs to run at fixed times, dates, or intervals." \\
EOF
fi
if [ -r etc/rc.d/rc.cups ]; then
if [ -x etc/rc.d/rc.cups ]; then
RC_CUPS=on
else
RC_CUPS=off
fi
cat << EOF >> $TMP/tmpscript
"rc.cups" "CUPS print server" $RC_CUPS "The Common UNIX Printing system (print spooler choice #1)." \\
EOF
fi
if [ -r etc/rc.d/rc.dnsmasq ]; then
if [ -x etc/rc.d/rc.dnsmasq ]; then
RC_DNSMASQ=on
else
RC_DNSMASQ=off
fi
cat << EOF >> $TMP/tmpscript
"rc.dnsmasq" "dnsmasq DHCP/DNS server" $RC_DNSMASQ "dnsmasq provides DNS and DHCP service to a LAN." \\
EOF
fi
if [ -r etc/rc.d/rc.dovecot ]; then
if [ -x etc/rc.d/rc.dovecot ]; then
RC_DOVECOT=on
else
RC_DOVECOT=off
fi
cat << EOF >> $TMP/tmpscript
"rc.dovecot" "Dovecot IMAP/POP3 server" $RC_DOVECOT "Dovecot provides remote mailbox access for email clients." \\
EOF
fi
if [ -r etc/rc.d/rc.fuse ]; then
if [ -x etc/rc.d/rc.fuse ]; then
RC_FUSE=on
else
RC_FUSE=off
fi
cat << EOF >> $TMP/tmpscript
"rc.fuse" "Filesystem in Userspace library" $RC_FUSE "FUSE is an interface to allow userspace programs to use filesystems." \\
EOF
fi
if [ -r etc/rc.d/rc.hald ]; then
if [ -x etc/rc.d/rc.hald ]; then
RC_HALD=on
else
RC_HALD=off
fi
cat << EOF >> $TMP/tmpscript
"rc.hald" "Hardware Abstraction Layer" $RC_HALD "HAL makes access to CD/DVD drives and USB devices easier." \\
EOF
fi
if [ -r etc/rc.d/rc.hplip ]; then
if [ -x etc/rc.d/rc.hplip ]; then
RC_HPLIP=on
else
RC_HPLIP=off
fi
cat << EOF >> $TMP/tmpscript
"rc.hplip" "HP printer/scanner daemons" $RC_HPLIP "Programs used to run printers and scanners from Hewlett Packard." \\
EOF
fi
if [ -r etc/rc.d/rc.httpd ]; then
if [ -x etc/rc.d/rc.httpd ]; then
RC_HTTPD=on
else
RC_HTTPD=off
fi
cat << EOF >> $TMP/tmpscript
"rc.httpd" "The Apache web server" $RC_HTTPD "Apache, the most widely used web server on the net." \\
EOF
fi
if [ -r etc/rc.d/rc.inetd ]; then
if [ -x etc/rc.d/rc.inetd ]; then
RC_INETD=on
else
RC_INETD=off
fi
cat << EOF >> $TMP/tmpscript
"rc.inetd" "The BSD Inetd daemon" $RC_INETD "Inetd daemon (this allows: time, ftp, comsat, talk, finger, and auth)." \\
EOF
fi
if [ -r etc/rc.d/rc.ip_forward ]; then
if [ -x etc/rc.d/rc.ip_forward ]; then
RC_IP_FORWARD=on
else
RC_IP_FORWARD=off
fi
cat << EOF >> $TMP/tmpscript
"rc.ip_forward" "Activate IP packet forwarding" $RC_IP_FORWARD "Packet forwarding allows your Linux machine to act as a router." \\
EOF
fi
if [ -r etc/rc.d/rc.lprng ]; then
if [ -x etc/rc.d/rc.lprng ]; then
RC_LPRNG=on
else
RC_LPRNG=off
fi
cat << EOF >> $TMP/tmpscript
"rc.lprng" "LPRng print server" $RC_LPRNG "The LPRng printing system (print spooler choice #2)." \\
EOF
fi
if [ -r etc/rc.d/rc.messagebus ]; then
if [ -x etc/rc.d/rc.messagebus ]; then
RC_MESSAGEBUS=on
else
RC_MESSAGEBUS=off
fi
cat << EOF >> $TMP/tmpscript
"rc.messagebus" "D-Bus system message bus" $RC_MESSAGEBUS "Used for interprocess communication and coordination." \\
EOF
fi
if [ -r etc/rc.d/rc.mysqld ]; then
if [ -x etc/rc.d/rc.mysqld ]; then
RC_MYSQLD=on
else
RC_MYSQLD=off
fi
cat << EOF >> $TMP/tmpscript
"rc.mysqld" "The MySQL database server" $RC_MYSQLD "MySQL, an SQL-based relational database daemon." \\
EOF
fi
if [ -r etc/rc.d/rc.ntpd ]; then
if [ -x etc/rc.d/rc.ntpd ]; then
RC_NTPD=on
else
RC_NTPD=off
fi
cat << EOF >> $TMP/tmpscript
"rc.ntpd" "The network time server" $RC_NTPD "NTP synchronizes your time to/from other NTP servers." \\
EOF
fi
if [ -r etc/rc.d/rc.pcmcia ]; then
if [ -x etc/rc.d/rc.pcmcia ]; then
RC_PCMCIA=on
else
RC_PCMCIA=off
fi
cat << EOF >> $TMP/tmpscript
"rc.pcmcia" "PCMCIA/Cardbus card services" $RC_PCMCIA "This supports PCMCIA or Cardbus cards used with laptops." \\
EOF
fi
if [ -r etc/rc.d/rc.postfix ]; then
if [ -x etc/rc.d/rc.postfix ]; then
RC_POSTFIX=on
else
RC_POSTFIX=off
fi
cat << EOF >> $TMP/tmpscript
"rc.postfix" "The Postfix mail server" $RC_POSTFIX "The Postfix server allows your machine to send and receive mail." \\
EOF
fi
if [ -r etc/rc.d/rc.rpc ]; then
if [ -x etc/rc.d/rc.rpc ]; then
RC_RPC=on
else
RC_RPC=off
fi
cat << EOF >> $TMP/tmpscript
"rc.rpc" "RPC (NFS) daemons" $RC_RPC "Needed to serve or mount NFS (Network File System) partitions." \\
EOF
fi
if [ -r etc/rc.d/rc.samba ]; then
if [ -x etc/rc.d/rc.samba ]; then
RC_SAMBA=on
else
RC_SAMBA=off
fi
cat << EOF >> $TMP/tmpscript
"rc.samba" "The Samba file/print server" $RC_SAMBA "Samba is a file and print server for Windows networks." \\
EOF
fi
if [ -r etc/rc.d/rc.saslauthd ]; then
if [ -x etc/rc.d/rc.saslauthd ]; then
RC_SASLAUTHD=on
else
RC_SASLAUTHD=off
fi
cat << EOF >> $TMP/tmpscript
"rc.saslauthd" "The SASL authentication server" $RC_SASLAUTHD "SASL is an authentication method often used by mail servers." \\
EOF
fi
if [ -r etc/rc.d/rc.sendmail ]; then
if [ -x etc/rc.d/rc.sendmail ]; then
RC_SENDMAIL=on
else
RC_SENDMAIL=off
fi
cat << EOF >> $TMP/tmpscript
"rc.sendmail" "The Sendmail mail server" $RC_SENDMAIL "The Sendmail server allows your machine to send and receive mail." \\
EOF
fi
if [ -r etc/rc.d/rc.smartd ]; then
if [ -x etc/rc.d/rc.smartd ]; then
RC_SMARTD=on
else
RC_SMARTD=off
fi
cat << EOF >> $TMP/tmpscript
"rc.smartd" "SMART monitoring daemon" $RC_SMARTD "The SMART daemon monitors your hard drives to help predict failures." \\
EOF
fi
if [ -r etc/rc.d/rc.snmpd ]; then
if [ -x etc/rc.d/rc.snmpd ]; then
RC_SNMPD=on
else
RC_SNMPD=off
fi
cat << EOF >> $TMP/tmpscript
"rc.snmpd" "Net-SNMP daemon" $RC_SNMPD "SNMP daemon that receives and logs SNMP TRAP and INFORM messages." \\
EOF
fi
if [ -r etc/rc.d/rc.syslog ]; then
if [ -x etc/rc.d/rc.syslog ]; then
RC_SYSLOGD=on
else
RC_SYSLOGD=off
fi
cat << EOF >> $TMP/tmpscript
"rc.syslog" "The Linux system logging utilities" $RC_SYSLOGD "The syslogd and klogd daemons log important messages under /var/log." \\
EOF
fi
if [ -r etc/rc.d/rc.sshd ]; then
if [ -x etc/rc.d/rc.sshd ]; then
RC_SSHD=on
else
RC_SSHD=off
fi
cat << EOF >> $TMP/tmpscript
"rc.sshd" "The SSHD (secure shell) daemon" $RC_SSHD "SSHD allows secure encrypted logins to your machine." \\
EOF
fi
cat << EOF >> $TMP/tmpscript
2> $TMP/reply
EOF
. $TMP/tmpscript
if [ ! $? = 0 ]; then
rm -f $TMP/reply $TMP/tmpscript
exit
fi
for service in rc.atalk rc.atd rc.bind rc.crond rc.cups rc.dovecot rc.dnsmasq rc.fuse rc.hald rc.hplip rc.httpd rc.inetd rc.ip_forward rc.lprng rc.messagebus rc.mysqld rc.ntpd rc.pcmcia rc.postfix rc.rpc rc.samba rc.saslauthd rc.smartd rc.snmpd rc.sendmail rc.syslog rc.sshd ; do
if [ -f etc/rc.d/$service ]; then
if grep -w $service $TMP/reply 1> /dev/null ; then
chmod 755 etc/rc.d/$service
else
chmod 644 etc/rc.d/$service
fi
fi
done
rm -f $TMP/reply $TMP/tmpscript

View file

@ -0,0 +1,417 @@
#!/bin/bash
# Copyright 1999 Patrick Volkerding, Moorhead, Minnesota, USA
# Copyright 2001, 2002, 2003 Slackware Linux, Inc., Concord, California, USA
# Copyright 2009, 2015 Patrick J. Volkerding, Sebeka, MN, USA
# Copyright 2015 Michal Nazarewicz <mina86@mina86.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Mon Jun 4 21:17:58 UTC 2018
# Use /var/lib/pkgtools, not /var/log.
#
# Thu May 24 20:23:55 UTC 2018
# Added --terselength option to set the line length in --terse mode.
# Use a lockfile to prevent output collisions in --terse mode.
#
# Wed May 23 03:35:28 UTC 2018
# Added --terse, which limits screen output to one line per package.
#
# Sat 17 Jan 16:21:32 UTC 2015 mina86
# Various optimisation mostly resolving around avoiding having to fork
# and call cut, basename and other helper commands. Slight
# refactoring of code calling removepkg.
#
# Sat Apr 25 21:18:53 UTC 2009
# Support new compression types and package extensions.
# Converted to use new pkgbase() function to remove pathname and
# valid package extensions.
#
# Added --dry-run, Sat Apr 26 18:13:29 PDT 2003
#
# Added --install-new and --reinstall, Fri May 31 14:11:14 PDT 2002 volkerdi
#
# Rewritten to clean out _all_ old packages of a given basename, not just
# the first one found, Thu Apr 4 01:01:05 PST 2002 volkerdi
#
# Modified to handle either old 8.3 or new package-version-arch-build.tgz
# packages, Sat Nov 17 14:25:58 PST 2001 volkerdi
# Return a package name that has been stripped of the dirname portion
# and any of the valid extensions (only):
pkgbase() {
PKGRETURN=${1##*/}
case "$PKGRETURN" in *.t[gblx]z)
PKGRETURN=${PKGRETURN%.*}
esac
echo "$PKGRETURN"
}
usage() {
cat << EOF
Usage: upgradepkg [options] <newpackage> ...
upgradepkg [options] <oldpackage%newpackage> ...
Upgrade, install, or reinstall Slackware packages (.tgz, .tbz, .tlz, .txz).
To operate on an alternate directory, such as /mnt:
ROOT=/mnt upgradepkg package.txz
Options:
--dry-run only display what would be done
--install-new install new packages also
--reinstall upgrade packages of the same version
--terse display a single line for each package operation
--terselength <length> maximum line length of terse output
--verbose display all the gory details of the upgrade
--help display this help
For more details see upgradepkg(8).
EOF
}
# Set the prefix for the package database directories (packages, scripts).
ADM_DIR="$ROOT/var/lib/pkgtools"
# Make sure there's a proper temp directory:
TMP=$ADM_DIR/setup/tmp
# If the $TMP directory doesn't exist, create it:
if [ ! -d $TMP ]; then
mkdir -p $TMP
chmod 700 $TMP # no need to leave it open
fi
# This script expects an 022 umask:
umask 022
# $ROOT defined?
if [ -d "$ROOT" ]; then
export ROOT
else
unset ROOT
fi
# --help or no args?
if [ "$1" = "" -o "$1" = "-help" -o "$1" = "--help" -o "$1" = "-?" ]; then
usage;
exit 1;
fi
# Create a lockfile directory if it doesn't exist. We can use it to prevent
# output line collisions in --terse mode.
INSTLOCKDIR=${INSTLOCKDIR:-/run/lock/pkgtools}
if [ ! -d $INSTLOCKDIR ]; then
mkdir -p $INSTLOCKDIR
fi
# Set default line length for terse mode:
if tty -s && which tput 1> /dev/null 2> /dev/null ; then
TERSELENGTH=$(tput cols)
else
TERSELENGTH=80
fi
# Arg processing loop. These must come before any packages are listed.
while [ 0 ]; do
if [ "$1" = "-no-paranoia" -o "$1" = "--no-paranoia" ]; then
# Enable --no-paranoia mode. This is so not-recommended that we're
# not even going to document it. ;) If a file used to be directly
# managed and now is moved into place, using --no-paranoia will cause
# it to improperly disappear. It does slightly speed things up, though.
# Don't use it.
NOT_PARANOID="true"
shift 1
elif [ "$1" = "-install-new" -o "$1" = "--install-new" ]; then
# Install packages that do not already have an installed version.
# The usual default is to skip them.
INSTALL_NEW="yes"
shift 1
elif [ "$1" = "-reinstall" -o "$1" = "--reinstall" ]; then
# Reinstall packages even if the installed one is the same version.
REINSTALL="true"
shift 1
elif [ "$1" = "-verbose" -o "$1" = "--verbose" -o "$1" = "-v" ]; then
# We're adding a --verbose mode that doesn't filter removepkg as much
VERBOSE="verbose"
shift 1
elif [ "$1" = "-dry-run" -o "$1" = "--dry-run" ]; then
# Output a report about which packages would be installed or upgraded
# but don't actually perform the upgrades.
DRY_RUN="true"
shift 1
elif [ "$1" = "-terse" -o "$1" = "--terse" ]; then
# Output one line per installed/upgraded package by calling installpkg
# with --terse. Use TERSE=0 for true, so we can check with test.
TERSE=0
shift 1
elif [ "$1" = "-terselength" -o "$1" = "--terselength" ]; then
# Set line length in --terse mode:
TERSELENGTH=$2
shift 2
else # no more args
break;
fi
done # processing args
# A couple not-really-documented features to adjust the behavior of --terse
# mode. These need to be used in addition to --terse, and passed in as
# environment variables.
# PLAINTERSE=0 (This outputs the standard terse line from installpkg, rather
# than prefixing it with "Upgrading:" or "Installing:")
# INFOBOX=0 (This outputs the installpkg --infobox instead of a terse line)
# Here's a function to figure out the package name from one of those
# new long filenames. We'll need this to double check the name of the
# old package.
package_name() {
STRING=$(pkgbase "$1")
case "$STRING" in
*-*-*-*)
# At least four segments, strip version arch and build and return name:
echo "${STRING%-*-*-*}"
# cruft for later ;)
# BUILD=${STRING##*-}
# STRING=${STRING%*-}
# ARCH=${STRING##*-}
# STRING=${STRING%*-}
# VER=${STRING%*-}
;;
*)
# Old style package name with one segment or we don't have four
# segments: return the old-style (or out of spec) package name.
echo $STRING
esac
}
ERRCODE=0
# Main processing loop:
for ARG; do
OLD=${ARG%'%'*} # first segment, = $ARG if no %
NEW=${ARG#*'%'} # second segment, = $ARG if no %
# Simple package integrity check:
if ! [ -f "$NEW" ]; then
ERRCODE=4
echo "Cannot install $NEW: file not found"
continue;
fi
# Figure out the names of the old and new packages:
INCOMINGDIR=$(dirname $NEW)
# These are the package names with the extension:
NNAME=${NEW##*/}
ONAME=${OLD##*/}
# These are the package names without the extension:
OLD=$(pkgbase $OLD)
NEW=$(pkgbase $NEW)
# Make sure the extension is valid:
if [ "$NNAME" = "$NEW" ]; then
# We won't throw an ERRCODE for this, but the package is skipped:
echo "Cannot install $OLD: invalid package extension"
continue;
fi
# Check and fix the old package name:
SHORT="$(package_name $OLD)"
if [ ! -r $ADM_DIR/packages/$OLD ]; then
if ls $ADM_DIR/packages/$SHORT* 1> /dev/null 2> /dev/null ; then
for installed_package in $ADM_DIR/packages/$SHORT* ; do
if [ "$(package_name $installed_package)" = "$SHORT" ]; then # found one
OLD="${installed_package##*/}"
break
fi
done
fi
fi
# Test to see if both the old and new packages are where we expect them
# to be - skip to the next package (or package pair) if anything's wrong:
if [ ! -r $ADM_DIR/packages/$OLD ]; then
if [ ! "$INSTALL_NEW" = "yes" ]; then
if [ "$DRY_RUN" = "true" ]; then
echo "$OLD would not be upgraded (no installed package named $SHORT)."
else
! [ $TERSE ] && echo
echo "Error: there is no installed package named $OLD."
! [ $TERSE ] && echo " (looking for $ADM_DIR/packages/$OLD)"
! [ $TERSE ] && echo
fi
ERRCODE=1
else # --install-new was given, so install the new package:
if [ "$DRY_RUN" = "true" ]; then
echo "$NEW would be installed (new package)."
else
if [ $PLAINTERSE ]; then
/sbin/installpkg --terse --terselength $TERSELENGTH $INCOMINGDIR/$NNAME
elif [ $INFOBOX ]; then
/sbin/installpkg --infobox $INCOMINGDIR/$NNAME
elif [ $TERSE ]; then
OUTPUTLINE="$(/sbin/installpkg --terse --terselength $(expr $TERSELENGTH - 12) $INCOMINGDIR/$NNAME)"
( flock 9 || exit 11
echo "Installing: ${OUTPUTLINE}"
) 9> $INSTLOCKDIR/outputline.lock
else
cat << EOF
+==============================================================================
| Installing new package $INCOMINGDIR/$NNAME
+==============================================================================
EOF
/sbin/installpkg $INCOMINGDIR/$NNAME
fi
fi
fi
continue;
elif [ ! -r "$INCOMINGDIR/$NNAME" ]; then
if [ "$DRY_RUN" = "true" ]; then
echo "$NEW incoming package not found (command line)."
else
! [ $TERSE ] && echo
echo "Error: incoming package $INCOMINGDIR/$NNAME not found."
! [ $TERSE ] && echo
fi
ERRCODE=1
continue;
fi
# Unless --reinstall was given, compare the package names
# and skip any exact matches:
if [ ! "$REINSTALL" = "true" ]; then
if [ "$OLD" = "$NEW" ]; then
if [ "$DRY_RUN" = "true" ]; then
echo "$NEW would be skipped (already installed)."
else
if ! [ $TERSE ]; then
cat << EOF
+==============================================================================
| Skipping package $NEW (already installed)
+==============================================================================
EOF
fi
fi
continue;
fi
fi
# Showtime. Let's do the upgrade. First, we will rename all the
# installed packages with this basename to make them easy to remove later:
TIMESTAMP=$(date +%Y-%m-%d,%T)
SHORT="$(package_name $OLD)"
if [ "$DRY_RUN" = "true" ]; then
echo -n "$NEW would upgrade: "
for installed_package in $ADM_DIR/packages/$SHORT* ; do
if [ "$(package_name $installed_package)" = "$SHORT" ]; then
echo -n "$(pkgbase $installed_package)"
fi
done
echo
continue
fi
for installed_package in $ADM_DIR/packages/$SHORT* ; do
if [ "$(package_name $installed_package)" = "$SHORT" ]; then
mv $installed_package ${installed_package}-upgraded-$TIMESTAMP
fi
done
for installed_script in $ADM_DIR/scripts/$SHORT* ; do
if [ "$(package_name $installed_script)" = "$SHORT" ]; then
if [ -r $installed_script ]; then
mv $installed_script ${installed_script}-upgraded-$TIMESTAMP
fi
fi
done
# Print a banner for the current upgrade:
if ! [ $TERSE ]; then
cat << EOF
+==============================================================================
| Upgrading $OLD package using $INCOMINGDIR/$NNAME
+==============================================================================
EOF
fi
# Next, the new package is pre-installed:
if [ "$VERBOSE" = "verbose" ]; then
if ! [ $TERSE ]; then
/sbin/installpkg $INCOMINGDIR/$NNAME
RETCODE=$?
else
/sbin/installpkg $INCOMINGDIR/$NNAME 1> /dev/null
RETCODE=$?
fi
else
if [ $PLAINTERSE ]; then
/sbin/installpkg --terse --terselength $TERSELENGTH $INCOMINGDIR/$NNAME
elif [ $INFOBOX ]; then
/sbin/installpkg --infobox $INCOMINGDIR/$NNAME
elif [ $TERSE ]; then
OUTPUTLINE="$(/sbin/installpkg --terse --terselength $(expr $TERSELENGTH - 12) $INCOMINGDIR/$NNAME)"
RETCODE=$?
( flock 9 || exit 11
echo "Upgrading: ${OUTPUTLINE}"
) 9> $INSTLOCKDIR/outputline.lock
else
echo "Pre-installing package $NEW..."
/sbin/installpkg $INCOMINGDIR/$NNAME 1> /dev/null
RETCODE=$?
fi
fi
# Make sure that worked:
if [ ! $RETCODE = 0 ]; then
echo "ERROR: Package $INCOMINGDIR/$NNAME did not install"
echo "correctly. You may need to reinstall your old package"
echo "to avoid problems. Make sure the new package is not"
echo "corrupted."
sleep 15
# Skip this package, but still try to proceed. Good luck...
continue;
fi
# Now, the leftovers from the old package(s) can go. Pretty simple, huh? :)
( flock 9 || exit 11
for rempkg in "$ADM_DIR/packages/"*"-$TIMESTAMP"; do
if [ "$VERBOSE" = "verbose" ]; then
/sbin/removepkg "${rempkg##*/}"
elif ! [ $TERSE ]; then
/sbin/removepkg "${rempkg##*/}" | grep -v 'Skipping\.\|Removing files:'
else
/sbin/removepkg "${rempkg##*/}" > /dev/null
fi
done
) 9> $INSTLOCKDIR/removepkg.lock
# Again! Again!
# Seriously, the reinstalling of a package can be crucial if any files
# shift location, so we should always reinstall as the final step:
if [ ! "$NOT_PARANOID" = "true" ]; then
if ! [ $TERSE ]; then
/sbin/installpkg $INCOMINGDIR/$NNAME
else
/sbin/installpkg $INCOMINGDIR/$NNAME 1> /dev/null
fi
fi
! [ $TERSE ] && echo "Package $OLD upgraded with new package $INCOMINGDIR/$NNAME."
ERRCODE=0
done
exit $ERRCODE

View file

@ -0,0 +1,19 @@
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description. Line
# up the first '|' above the ':' following the base package name, and the '|' on
# the right side marks the last column you can put a character in. You must make
# exactly 11 lines for the formatting to be correct. It's also customary to
# leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
pkgtools: pkgtools (The Slackware package maintenance system)
pkgtools:
pkgtools: This package contains utilities for handling Slackware packages.
pkgtools: Included are the command line utilities 'installpkg', 'removepkg',
pkgtools: 'makepkg', 'explodepkg', and 'upgradepkg' that install, remove,
pkgtools: build, examine, and upgrade software packages. Also included are
pkgtools: 'pkgtool', a menu based program for installing packages, removing
pkgtools: packages, or viewing the packages that are installed on the system,
pkgtools: 'pkgdiff', a utility for comparing two packages, documentation (man
pkgtools: pages), and a few other system admin scripts.
pkgtools: