33 |
34 | one or more files must be list
35 | if no search flags, only names, then those only those matching entries are listed
36 | EOS
37 | # This is all the flags we want to use, from Slackware::Args
38 | option_flags = [:color, :case_insensitive, :pkg_name, :pkg_version,
39 | :debug, :pkg_arch, :pkg_build, :pkg_tag]
40 |
41 | slog = Slackware::Log.instance
42 | slog.level = Slackware::Log::WARN
43 |
44 | options = Slackware::Args.parse(ARGV, option_flags, option_banner)
45 |
46 | # update level if specified
47 | slog.level = Slackware::Log::DEBUG if options[:debug]
48 | slog.debug($PROGRAM_NAME) {"options: %s" % options}
49 |
50 | if (ARGV.count > 0)
51 | options[:all] = true
52 | elsif (ARGV.count == 0)
53 | slog.warn($PROGRAM_NAME) { "no files provided" }
54 | exit 1
55 | end
56 |
57 | begin
58 | print_package_searched_files(ARGV)
59 | rescue Interrupt
60 | exit 0
61 | rescue Exception => e
62 | slog.warn($PROGRAM_NAME) { e.message }
63 | slog.debug($PROGRAM_NAME) { e.class.to_s + "\n" + e.backtrace.join("\n") }
64 | exit 1
65 | end
66 |
67 | # vim:sw=2:sts=2:et:
68 |
--------------------------------------------------------------------------------
/bin/slfindlinked:
--------------------------------------------------------------------------------
1 | #! /usr/bin/ruby
2 | # Copyright 2010,2011 Vincent Batts, Vienna, VA
3 | # All rights reserved.
4 | #
5 | # Redistribution and use of this source, with or without modification, is
6 | # permitted provided that the following conditions are met:
7 | #
8 | # 1. Redistributions of this source must retain the above copyright
9 | # notice, this list of conditions and the following disclaimer.
10 | #
11 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
12 | # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
13 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
14 | # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
16 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
17 | # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
18 | # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
19 | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
20 | # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
21 |
22 | $PROGRAM_NAME = File.basename(__FILE__)
23 |
24 | require 'rubygems'
25 | require 'slackware/utils'
26 | require 'slackware/args'
27 |
28 | option_banner = <<-EOS
29 | Attempt to find the files
30 | Usage:
31 | #{$PROGRAM_NAME} [libname or path]
32 | EOS
33 | options = Slackware::Args.parse(ARGV, [], option_banner)
34 |
35 | if (ARGV.count == 0)
36 | $stderr.write("ERROR: a library name is needed to search for\n")
37 | exit(2)
38 | end
39 |
40 |
41 | # XXX needs better boilerplating
42 | print_find_linked(ARGV[0])
43 |
44 |
--------------------------------------------------------------------------------
/bin/slfindlinked.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # Copyright 2010,2011 Vincent Batts, Vienna, VA
3 | # All rights reserved.
4 | #
5 | # Redistribution and use of this source, with or without modification, is
6 | # permitted provided that the following conditions are met:
7 | #
8 | # 1. Redistributions of this source must retain the above copyright
9 | # notice, this list of conditions and the following disclaimer.
10 | #
11 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
12 | # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
13 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
14 | # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
16 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
17 | # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
18 | # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
19 | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
20 | # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
21 |
22 | if [ -z $1 ] ; then
23 | echo ERROR: please specify a lib name to check for
24 | exit 1
25 | fi
26 |
27 | echo "INFO: have patience ... this is going to take a while ... " >&2
28 |
29 | find /lib /lib64 /usr/lib /usr/lib64 /bin /sbin /usr/bin /usr/sbin -type f | \
30 | xargs file | \
31 | grep -E 'ELF.*(executable|shared object)' | \
32 | cut -d : -f 1 | \
33 | while read line ; do
34 | if ldd $line 2>&1 | grep -q $1 ; then
35 | echo "$(slf $(echo ${line} | sed -e 's|^/||')) linked to $(ldd $line 2>&1 | grep $1 | awk '{ print $1 }' | tr '\n' ' ' )"
36 | fi
37 | done
38 |
--------------------------------------------------------------------------------
/bin/sli:
--------------------------------------------------------------------------------
1 | #! /usr/bin/ruby
2 | # Copyright 2010,2011,2012 Vincent Batts, Vienna, VA
3 | # All rights reserved.
4 | #
5 | # Redistribution and use of this source, with or without modification, is
6 | # permitted provided that the following conditions are met:
7 | #
8 | # 1. Redistributions of this source must retain the above copyright
9 | # notice, this list of conditions and the following disclaimer.
10 | #
11 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
12 | # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
13 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
14 | # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
16 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
17 | # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
18 | # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
19 | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
20 | # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
21 |
22 | $PROGRAM_NAME = File.basename(__FILE__)
23 |
24 | require 'rubygems'
25 | require 'slackware/log'
26 | require 'slackware/utils'
27 | require 'slackware/args'
28 |
29 | option_banner = <<-EOS
30 | List installed Slackware package's information.
31 | Usage:
32 | #{$PROGRAM_NAME} [options] [search flags] [list of names]
33 |
34 | if no flags are used, then all entries are listed
35 | if no search flags, only names, then those only those matching entries are listed
36 |
37 | EOS
38 | # This is all the flags we want to use, from Slackware::Args
39 | option_flags = [:color, :case_insensitive, :pkg_name, :pkg_version,
40 | :debug, :pkg_arch, :pkg_build, :pkg_tag]
41 |
42 | slog = Slackware::Log.instance
43 | slog.level = Slackware::Log::WARN
44 |
45 | options = Slackware::Args.parse(ARGV, option_flags, option_banner)
46 |
47 | # update level if specified
48 | slog.level = Slackware::Log::DEBUG if options[:debug]
49 | slog.debug($PROGRAM_NAME) {"options: %s" % options}
50 |
51 | if (ARGV.count > 0)
52 | options[:all] = true
53 | end
54 |
55 | begin
56 | print_packages_description(build_packages(options, ARGV))
57 | rescue Interrupt
58 | exit 0
59 | rescue Exception => e
60 | slog.warn($PROGRAM_NAME) { e.message }
61 | slog.debug($PROGRAM_NAME) { e.class.to_s + "\n" + e.backtrace.join("\n") }
62 | exit 1
63 | end
64 |
65 | # vim:sw=2:sts=2:et:
66 |
--------------------------------------------------------------------------------
/bin/sll:
--------------------------------------------------------------------------------
1 | #! /usr/bin/ruby
2 | # Copyright 2010,2011,2012 Vincent Batts, Vienna, VA
3 | # All rights reserved.
4 | #
5 | # Redistribution and use of this source, with or without modification, is
6 | # permitted provided that the following conditions are met:
7 | #
8 | # 1. Redistributions of this source must retain the above copyright
9 | # notice, this list of conditions and the following disclaimer.
10 | #
11 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
12 | # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
13 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
14 | # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
16 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
17 | # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
18 | # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
19 | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
20 | # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
21 |
22 | $PROGRAM_NAME = File.basename(__FILE__)
23 |
24 | require 'rubygems'
25 | require 'slackware/log'
26 | require 'slackware/utils'
27 | require 'slackware/args'
28 |
29 | option_banner = <<-EOS
30 | List owned for files for a given Slackware package.
31 | Usage:
32 | #{$PROGRAM_NAME} [search flags] [list of names]
33 |
34 | if no search flags, only names, then those only those matching entries are listed
35 |
36 | EOS
37 | # This is all the flags we want to use, from Slackware::Args
38 | option_flags = [:force_all, :case_insensitive, :pkg_name, :pkg_version,
39 | :debug, :pkg_arch, :pkg_build, :pkg_tag]
40 |
41 | slog = Slackware::Log.instance
42 | slog.level = Slackware::Log::WARN
43 |
44 | options = Slackware::Args.parse(ARGV, option_flags, option_banner)
45 |
46 | # update level if specified
47 | slog.level = Slackware::Log::DEBUG if options[:debug]
48 | slog.debug($PROGRAM_NAME) {"options: %s" % options}
49 |
50 | if ((ARGV.count == 0) &&
51 | (options[:pkg].nil?) &&
52 | (options[:version].nil?) &&
53 | (options[:arch].nil?) &&
54 | (options[:build].nil?) &&
55 | (options[:tag].nil?) &&
56 | ! options[:force] )
57 | $stderr.write("WARNING: If you really want to see *ALL* files, use the --force flag\n")
58 | exit(2)
59 | end
60 |
61 | if (ARGV.count > 0)
62 | options[:all] = true
63 | end
64 |
65 | begin
66 | print_package_file_list(build_packages(options, ARGV))
67 | rescue Interrupt
68 | exit 0
69 | rescue Exception => e
70 | slog.warn($PROGRAM_NAME) { e.message }
71 | slog.debug($PROGRAM_NAME) { e.class.to_s + "\n" + e.backtrace.join("\n") }
72 | exit 1
73 | end
74 |
75 | # vim:sw=2:sts=2:et:
76 |
--------------------------------------------------------------------------------
/bin/slo:
--------------------------------------------------------------------------------
1 | #! /usr/bin/ruby
2 | # Copyright 2010,2011,2012 Vincent Batts, Vienna, VA
3 | # All rights reserved.
4 | #
5 | # Redistribution and use of this source, with or without modification, is
6 | # permitted provided that the following conditions are met:
7 | #
8 | # 1. Redistributions of this source must retain the above copyright
9 | # notice, this list of conditions and the following disclaimer.
10 | #
11 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
12 | # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
13 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
14 | # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
16 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
17 | # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
18 | # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
19 | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
20 | # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
21 |
22 | $PROGRAM_NAME = File.basename(__FILE__)
23 |
24 | require 'rubygems'
25 | require 'slackware/log'
26 | require 'slackware/args'
27 | require 'slackware/utils'
28 |
29 | slog = Slackware::Log.instance
30 | slog.level = Slackware::Log::WARN
31 |
32 | options = Slackware::Args.parse(ARGV, [:debug])
33 | slog.debug("options: %s" % options)
34 |
35 | # update level if specified
36 | slog.level = Slackware::Log::DEBUG if options[:debug]
37 | slog.debug($PROGRAM_NAME) {"options: %s" % options}
38 |
39 | begin
40 | print_orphaned_files(find_orphaned_config_files())
41 | rescue Interrupt
42 | exit 0
43 | rescue Exception => e
44 | slog.warn($PROGRAM_NAME) { e.message }
45 | slog.debug($PROGRAM_NAME) { e.class.to_s + "\n" + e.backtrace.join("\n") }
46 | exit 1
47 | end
48 |
49 | # vim:sw=2:sts=2:et:
50 |
--------------------------------------------------------------------------------
/bin/slp:
--------------------------------------------------------------------------------
1 | #! /usr/bin/ruby
2 | # Copyright 2010,2011,2012 Vincent Batts, Vienna, VA
3 | # All rights reserved.
4 | #
5 | # Redistribution and use of this source, with or without modification, is
6 | # permitted provided that the following conditions are met:
7 | #
8 | # 1. Redistributions of this source must retain the above copyright
9 | # notice, this list of conditions and the following disclaimer.
10 | #
11 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
12 | # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
13 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
14 | # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
16 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
17 | # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
18 | # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
19 | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
20 | # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
21 |
22 | $PROGRAM_NAME = File.basename(__FILE__)
23 |
24 | require 'rubygems'
25 | require 'slackware/log'
26 | require 'slackware/utils'
27 | require 'slackware/args'
28 |
29 | option_banner = <<-EOS
30 | List installed Slackware packages.
31 | Usage:
32 | #{$PROGRAM_NAME} [options] [search flags] [list of names]
33 |
34 | if no flags are used, then all entries are listed
35 | if no search flags, only names, then those only those matching entries are listed
36 |
37 | EOS
38 | # This is all the flags we want to use, from Slackware::Args
39 | option_flags = [:color, :case_insensitive, :pkg_name,
40 | :debug, :pkg_version, :pkg_arch, :pkg_build, :pkg_tag]
41 |
42 | slog = Slackware::Log.instance
43 | slog.level = Slackware::Log::WARN
44 |
45 | options = Slackware::Args.parse(ARGV, option_flags, option_banner)
46 |
47 | # update level if specified
48 | slog.level = Slackware::Log::DEBUG if options[:debug]
49 | slog.debug($PROGRAM_NAME) {"options: %s" % options}
50 |
51 | if (ARGV.count > 0)
52 | options[:all] = true
53 | end
54 |
55 | begin
56 | print_packages(build_packages(options, ARGV))
57 | rescue Interrupt
58 | exit 0
59 | rescue Exception => e
60 | slog.warn($PROGRAM_NAME) { e.message }
61 | slog.debug($PROGRAM_NAME) { e.class.to_s + "\n" + e.backtrace.join("\n") }
62 | exit 1
63 | end
64 |
65 | # vim:sw=2:sts=2:et:
66 |
--------------------------------------------------------------------------------
/bin/slt:
--------------------------------------------------------------------------------
1 | #! /usr/bin/ruby
2 | # Copyright 2010,2011,2012 Vincent Batts, Vienna, VA
3 | # All rights reserved.
4 | #
5 | # Redistribution and use of this source, with or without modification, is
6 | # permitted provided that the following conditions are met:
7 | #
8 | # 1. Redistributions of this source must retain the above copyright
9 | # notice, this list of conditions and the following disclaimer.
10 | #
11 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
12 | # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
13 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
14 | # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
16 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
17 | # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
18 | # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
19 | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
20 | # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
21 |
22 | $PROGRAM_NAME = File.basename(__FILE__)
23 |
24 | require 'rubygems'
25 | require 'slackware/log'
26 | require 'slackware/utils'
27 | require 'slackware/args'
28 |
29 | option_banner = <<-EOS
30 | List (and search) installed Slackware package's times.
31 | Usage:
32 | #{$PROGRAM_NAME} [pkg search flags] [list of names]
33 |
34 | if no flags are used, then all entries are listed
35 | if no search flags, only names, then those only those matching entries are listed
36 |
37 | EOS
38 | # This is all the flags we want to use, from Slackware::Args
39 | option_flags = [:color, :epoch, :case_insensitive, :pkg_name, :pkg_version,
40 | :reverse, :debug, :pkg_arch, :pkg_build, :pkg_tag]
41 |
42 | slog = Slackware::Log.instance
43 | slog.level = Slackware::Log::WARN
44 |
45 | options = Slackware::Args.parse(ARGV, option_flags, option_banner)
46 |
47 | # update level if specified
48 | slog.level = Slackware::Log::DEBUG if options[:debug]
49 | slog.debug($PROGRAM_NAME) { "option_flags: #{option_flags} " }
50 | slog.debug($PROGRAM_NAME) {"options: %s" % options}
51 |
52 | # handing through that we are gathering times
53 | options[:time] = true
54 |
55 | if (ARGV.count > 0)
56 | options[:all] = true
57 | end
58 |
59 | begin
60 | print_packages_times(build_packages(options, ARGV), options[:epoch], options[:reverse])
61 | rescue Interrupt
62 | exit 0
63 | rescue Exception => e
64 | slog.warn($PROGRAM_NAME) { e.message }
65 | slog.debug($PROGRAM_NAME) { e.class.to_s + "\n" + e.backtrace.join("\n") }
66 | exit 1
67 | end
68 |
69 | # vim:sw=2:sts=2:et:
70 |
--------------------------------------------------------------------------------
/bin/slu:
--------------------------------------------------------------------------------
1 | #! /usr/bin/ruby
2 | # Copyright 2010,2011,2012 Vincent Batts, Vienna, VA
3 | # All rights reserved.
4 | #
5 | # Redistribution and use of this source, with or without modification, is
6 | # permitted provided that the following conditions are met:
7 | #
8 | # 1. Redistributions of this source must retain the above copyright
9 | # notice, this list of conditions and the following disclaimer.
10 | #
11 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
12 | # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
13 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
14 | # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
16 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
17 | # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
18 | # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
19 | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
20 | # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
21 |
22 | $PROGRAM_NAME = File.basename(__FILE__)
23 |
24 | require 'rubygems'
25 | require 'slackware/log'
26 | require 'slackware/utils'
27 | require 'slackware/args'
28 |
29 | option_banner = <<-EOS
30 | List upgrades for specifed Slackware packages.
31 | Usage:
32 | #{$PROGRAM_NAME} [options] [search flags] [list of pkg names]
33 |
34 | EOS
35 | # This is all the flags we want to use, from Slackware::Args
36 | option_flags = [:case_insensitive, :pkg_name, :debug, :pkg_tag, :force_all]
37 |
38 | slog = Slackware::Log.instance
39 | slog.level = Slackware::Log::WARN
40 |
41 | options = Slackware::Args.parse(ARGV, option_flags, option_banner)
42 |
43 | # update level if specified
44 | slog.level = Slackware::Log::DEBUG if options[:debug]
45 | slog.debug($PROGRAM_NAME) {"options: %s" % options}
46 |
47 | if ((ARGV.count == 0) &&
48 | (options[:pkg].nil?) &&
49 | (options[:tag].nil?) &&
50 | not(options[:force]) )
51 | $stderr.write("WARNING: If you really want to see *ALL* files, use the --force flag\n")
52 | exit(2)
53 | end
54 |
55 | if (ARGV.count > 0)
56 | options[:all] = true
57 | end
58 |
59 | begin
60 | print_upgrades(build_packages(options, ARGV))
61 | rescue Interrupt
62 | exit 0
63 | rescue Exception => e
64 | slog.warn($PROGRAM_NAME) { e.message }
65 | slog.debug($PROGRAM_NAME) { e.class.to_s + "\n" + e.backtrace.join("\n") }
66 | exit 1
67 | end
68 |
69 | # vim:sw=2:sts=2:et:
70 |
--------------------------------------------------------------------------------
/examples/before_then.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/ruby
2 |
3 | $: << File.absolute_path(File.dirname(__FILE__) + "/../lib")
4 |
5 | require 'rubygems'
6 | require 'slackware'
7 |
8 | t = Time.now - 10000877
9 | s = Slackware::System.installed_before(t)
10 |
11 | puts "#{s.count} packages installed before #{t}"
12 | # vim : set sw=2 sts=2 et :
13 |
--------------------------------------------------------------------------------
/examples/list_packages.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/ruby
2 |
3 | $: << File.absolute_path(File.dirname(__FILE__) + "/../lib")
4 |
5 | require 'rubygems'
6 | require 'slackware'
7 |
8 | puts "tags used are: " + Slackware::System.tags_used.to_s
9 |
10 | pkg = "kernel-modules"
11 | if (Slackware::System.is_upgraded?(pkg))
12 | puts pkg + " has been upgraded before"
13 | Slackware::System.upgrades(pkg).each {|up| printf("%s upgraded from version %s\n", up.upgrade_time, up.version) }
14 | else
15 | puts pkg + " apparently has not ever been upgraded before"
16 | end
17 |
18 | # vim : set sw=2 sts=2 et :
19 |
--------------------------------------------------------------------------------
/examples/repo.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/ruby -w
2 |
3 | $: << File.absolute_path(File.dirname(__FILE__) + "/../lib")
4 |
5 | require 'rubygems'
6 | require 'slackware/repo'
7 |
8 | sr = Slackware::Repo.new
9 | sr.version = "current"
10 |
11 | sr.set_packages
12 |
13 | printf("%d packages in the slackware%s-%s repo\n", sr.packages.count, sr.arch, sr.version)
14 |
15 | # vim : set sw=2 sts=2 et :
16 |
--------------------------------------------------------------------------------
/examples/repo_difference.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/ruby
2 |
3 | $: << File.absolute_path(File.dirname(__FILE__) + "/../lib")
4 |
5 | require 'rubygems'
6 | require 'slackware'
7 |
8 | pkgs = Slackware::System.installed_packages.map {|p| p.name }
9 | sr = Slackware::Repo.new
10 | sr.version = "current"
11 | c = sr.get_changelog
12 |
13 | printf("difference between current installation and %s...\n", sr.version)
14 | printf("%d should be removed\n", (pkgs & c[:removed].map {|p| p.name }).count)
15 | #p pkgs & c[:removed].map {|p| p.name }
16 | ca = c[:added].map {|p| p.name }
17 | printf("%d should be added\n", (ca.count - (pkgs & ca).count))
18 | # vim : set sw=2 sts=2 et :
19 |
--------------------------------------------------------------------------------
/examples/tags_used.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/ruby -w
2 |
3 | $: << File.expand_path(File.dirname(__FILE__) + "/../lib")
4 |
5 | require 'rubygems'
6 | require 'slackware'
7 |
8 | p Slackware::System.tags_used
9 | # vim : set sw=2 sts=2 et :
10 |
--------------------------------------------------------------------------------
/examples/upgrades.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/ruby
2 |
3 | $: << File.absolute_path(File.dirname(__FILE__) + "/../lib")
4 |
5 | require 'rubygems'
6 | require 'slackware'
7 |
8 | sr = Slackware::Repo.new
9 | sr.version = "current"
10 | sr.set_changelog
11 |
12 | pkgs = Slackware::System.installed_packages
13 |
14 | @@upgrades = []
15 | sr.changelog[:rebuilt].concat(sr.changelog[:upgraded]).each {|pkg|
16 | i_pkg = pkgs.map {|item| item if item.name == pkg.name }.compact.first
17 | if i_pkg.nil?
18 | next
19 | end
20 | if pkg.version < i_pkg.version
21 | next
22 | end
23 | if pkg.fullname > i_pkg.fullname
24 | @@upgrades << pkg
25 | end
26 | }
27 |
28 | p @@upgrades
29 | # vim : set sw=2 sts=2 et :
30 |
--------------------------------------------------------------------------------
/lib/slackware.rb:
--------------------------------------------------------------------------------
1 | # encoding: UTF-8
2 |
3 | # Copyright 2010,2011,2012 Vincent Batts, Vienna, VA
4 | # All rights reserved.
5 | #
6 | # Redistribution and use of this source, with or without modification, is
7 | # permitted provided that the following conditions are met:
8 | #
9 | # 1. Redistributions of this source must retain the above copyright
10 | # notice, this list of conditions and the following disclaimer.
11 | #
12 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
13 | # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
14 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
15 | # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
17 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
18 | # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
19 | # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
20 | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
21 | # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 |
23 | require 'slackware/log'
24 | require 'slackware/version'
25 | require 'slackware/package'
26 | require 'slackware/system'
27 | require 'slackware/changelog'
28 | require 'slackware/repo'
29 | require 'slackware/package_bundle'
30 |
31 | # vim : set sw=2 sts=2 et :
32 |
--------------------------------------------------------------------------------
/lib/slackware/args.rb:
--------------------------------------------------------------------------------
1 | # encoding: UTF-8
2 |
3 | # Copyright 2010,2011,2012 Vincent Batts, Vienna, VA
4 | # All rights reserved.
5 | #
6 | # Redistribution and use of this source, with or without modification, is
7 | # permitted provided that the following conditions are met:
8 | #
9 | # 1. Redistributions of this source must retain the above copyright
10 | # notice, this list of conditions and the following disclaimer.
11 | #
12 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
13 | # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
14 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
15 | # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
17 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
18 | # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
19 | # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
20 | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
21 | # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 |
23 | require 'optparse'
24 |
25 | module Slackware
26 | # Args is the unified arguement parser for the slack-utils utilities.
27 | class Args
28 | def self.parse(args,flags = nil, banner = nil)
29 | flags = [] unless flags.is_a?(Array)
30 | options = {}
31 |
32 | opts = OptionParser.new do |opts|
33 | if banner
34 | opts.banner = banner
35 | end
36 | if flags.include?(:color)
37 | opts.on("-c", "--color", "Colorize output") do |o|
38 | options[:color] = o
39 | end
40 | end
41 | if flags.include?(:reverse)
42 | opts.on("-r", "--reverse", "Reverse the output") do |o|
43 | options[:reverse] = o
44 | end
45 | end
46 | if flags.include?(:epoch)
47 | opts.on("-e", "--epoch", "Print the time stamp in seconds since 1970-01-01 00:00:00 UTC ") do |o|
48 | options[:epoch] = o
49 | end
50 | end
51 | if flags.include?(:pkg_name)
52 | opts.on("-p", "--pkg [NAME]", "Package PKGNAME (loose match)") do |o|
53 | options[:pkg] = o
54 | end
55 | end
56 | if flags.include?(:pkg_version)
57 | opts.on("-V", "--Version [VERSION]", "Package VERSION (loose match)") do |o|
58 | options[:version] = o
59 | end
60 | end
61 | if flags.include?(:pkg_arch)
62 | opts.on("-a", "--arch [ARCH]", "Package ARCH (exact match)") do |o|
63 | options[:arch] = o
64 | end
65 | end
66 | if flags.include?(:pkg_build)
67 | opts.on("-b", "--build [BUILD]", "Package BUILD (exact match)") do |o|
68 | options[:build] = o
69 | end
70 | end
71 | if flags.include?(:pkg_tag)
72 | opts.on("-t", "--tag [TAG]", "Package TAG (loose match)") do |o|
73 | options[:tag] = o
74 | end
75 | end
76 | if flags.include?(:case_insensitive)
77 | opts.on("-i", "When searching, do a case insensitive match") do |o|
78 | options[:case_insensitive] = o
79 | end
80 | end
81 | if flags.include?(:force_all)
82 | opts.on("-f", "--force", "force me to show all files") do |o|
83 | options[:force] = o
84 | end
85 | end
86 | if flags.include?(:debug)
87 | opts.on("-D", "--debug", "show debugging output") do |o|
88 | options[:debug] = o
89 | end
90 | end
91 |
92 | opts.on("-v", "--version", "Display version of this software") do |o|
93 | printf("slack-utils version: %s, Slackware version: %s\n",
94 | Slackware::UTILS_VERSION,
95 | Slackware::System.version
96 | )
97 | exit(0)
98 | end
99 | end
100 |
101 | begin
102 | opts.parse!
103 | return options
104 | rescue OptionParser::InvalidOption => ex
105 | $stderr.write("ERROR: #{e.message}, see --help\n")
106 | exit(1)
107 | end
108 | end
109 | end
110 | end
111 | # vim : set sw=2 sts=2 et :
112 |
--------------------------------------------------------------------------------
/lib/slackware/changelog.rb:
--------------------------------------------------------------------------------
1 | # encoding: UTF-8
2 |
3 | # Copyright 2010,2011 Vincent Batts, Vienna, VA
4 | # All rights reserved.
5 | #
6 | # Redistribution and use of this source, with or without modification, is
7 | # permitted provided that the following conditions are met:
8 | #
9 | # 1. Redistributions of this source must retain the above copyright
10 | # notice, this list of conditions and the following disclaimer.
11 | #
12 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
13 | # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
14 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
15 | # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
17 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
18 | # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
19 | # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
20 | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
21 | # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 |
23 | require 'slackware/package'
24 | require 'date'
25 | require 'time'
26 | require 'stringio'
27 |
28 | module Slackware
29 | # The class for parsing a Slackware standard ChangeLog.txt
30 | class ChangeLog
31 |
32 | # yanked from +Date+
33 | ABBR_DAYNAMES = %w(Sun Mon Tue Wed Thu Fri Sat)
34 | ABBR_MONTHNAMES = %w(Jan Feb Mar Apr May Jun
35 | Jul Aug Sep Oct Nov Dec)
36 |
37 | # Compiling a fat regex to find the date entries
38 | re_daynames = Regexp.new(ABBR_DAYNAMES.join('|'))
39 | re_monthnames = Regexp.new(ABBR_MONTHNAMES.join('|'))
40 | RE_DATE = /^(#{re_daynames}\s+#{re_monthnames}\s+\d+\s+\d{2}:\d{2}:\d{2}\s\w+\s+\d+)$/
41 |
42 | # This break has been the same as long as I can find
43 | RE_CHANGELOG_BREAK = /^\+--------------------------\+$/
44 |
45 | # The regular entry, accounting for usb-and-pxe-installers directory,
46 | # and notes after the action
47 | re_package_entry0 = /^(([\w+-]+).*\/.*):\s+(\w+).*\.?$/
48 | # Some didn't have an action after the name
49 | re_package_entry1 = /^(([\w+-]+).*\/.*):/
50 | # and some didn't have the ':' or an action
51 | re_package_entry2 = /^(([\w+-]+).*\/.*\.t[gbx]z)/
52 | # combine them
53 | RE_PACKAGE_ENTRY = Regexp.union(re_package_entry0, re_package_entry1, re_package_entry2)
54 |
55 | # (* Security fix *)
56 | RE_SECURITY_FIX = /\(\*\s+security\s+fix\s+\*\)/i
57 |
58 | # for hacks sake, make these usbable elsewhere
59 | def self::re_date ; RE_DATE ; end
60 | def self::re_changelog_break ; RE_CHANGELOG_BREAK ; end
61 | def self::re_package_entry ; RE_PACKAGE_ENTRY ; end
62 | def self::re_security_fix ; RE_SECURITY_FIX ; end
63 |
64 | # A changeset, which should consist of entries of changes and/or notes
65 | # regarding the updates
66 | class Update
67 | # FIXME this class needs more proper value setting
68 | def initialize(date = nil,
69 | notes = "",
70 | entries = Array.new,
71 | changelog = nil )
72 | @date = date
73 | @notes = notes
74 | @entries = entries
75 | @changelog = changelog
76 | end
77 | def date; @date; end
78 | def notes; @notes; end
79 | def entries; @entries; end
80 | def security; @entries.select {|e| e if e.security }; end
81 | def security?; @entries.select {|e| e.security }.first; end
82 |
83 | def date=(timestamp)
84 | if (timestamp.is_a?(Time))
85 | @date = timestamp
86 | elsif (timestamp.is_a?(Date))
87 | @date = timestamp.to_time
88 | else
89 | @date = Time.parse(timestamp)
90 | end
91 | end
92 | def notes=(text); @notes = text; end
93 | def changelog=(changelog); @changelog = changelog if changelog.is_a?(Slackware::ChangeLog); end
94 | end
95 |
96 | # The class for each item in a change set
97 | class Entry
98 | def initialize(package = nil,
99 | section = nil,
100 | action = nil,
101 | notes = "",
102 | security = false,
103 | update = nil)
104 | @package = package
105 | @section = section
106 | @action = action
107 | @notes = notes.is_a?(String) ? notes : ""
108 | @security = security == true
109 | @update = update
110 | end
111 |
112 | def package; @package; end
113 | def section; @section; end
114 | def action; @action; end
115 | def notes; @notes; end
116 | def security; @security; end
117 | def date; @update ? @update.date: nil;end
118 |
119 | def package=(package_name); @package = package_name ; end
120 | def section=(section_name); @section = section_name ; end
121 | def action=(action_name); @action = action_name ; end
122 | def update=(update); @update = update if update.is_a?(Slackware::ChangeLog::Update) ; end
123 | def notes=(notes_txt)
124 | @notes = notes_txt.is_a?(String) ? notes_txt : ""
125 | end
126 | def security=(bool)
127 | @security = bool == true
128 | end
129 | end
130 |
131 | def initialize(file = nil)
132 | @file = file
133 | @strio = StringIO.new
134 | @updates = Array.new
135 | end
136 |
137 | def file; @file; end
138 | def updates; @updates; end
139 |
140 | # Returns the latest update in the set
141 | def latest
142 | sort().last
143 | end
144 | def sort
145 | @updates.sort {|x,y| x.date <=> y.date }
146 | end
147 |
148 | # All entries in this Slackware::ChangeLog
149 | #
150 | # Returns an Array of Slackware::ChangeLog::Entry
151 | def entries
152 | @updates.map {|u| u.entries.map {|e| e } }.flatten
153 | end
154 |
155 | # All security in this Slackware::ChangeLog
156 | #
157 | # Returns an Array of Slackware::ChangeLog::Entry
158 | def security
159 | @updates.map {|u| u.entries.select {|e| e if e.security } }.flatten
160 | end
161 |
162 | # All packages removed in this Slackware::ChangeLog
163 | #
164 | # Returns an Array of Slackware::ChangeLog::Entry
165 | def pkgs_removed
166 | @updates.map {|u| u.entries.select {|e| e if e.action == "Removed" } }.flatten
167 | end
168 |
169 | # All packages added in this Slackware::ChangeLog
170 | #
171 | # Returns an Array of Slackware::ChangeLog::Entry
172 | def pkgs_added
173 | @updates.map {|u| u.entries.select {|e| e if e.action == "Added" } }.flatten
174 | end
175 |
176 | # All packages upgraded in this Slackware::ChangeLog
177 | #
178 | # Returns an Array of Slackware::ChangeLog::Entry
179 | def pkgs_upgraded
180 | @updates.map {|u| u.entries.select {|e| e if e.action == "Upgraded" } }.flatten
181 | end
182 |
183 | # All packages rebuilt in this Slackware::ChangeLog
184 | #
185 | # Returns an Array of Slackware::ChangeLog::Entry
186 | def pkgs_rebuilt
187 | @updates.map {|u| u.entries.select {|e| e if e.action == "Rebuilt" } }.flatten
188 | end
189 | def parse(opts = {:file => nil, :data => nil})
190 | if not(opts[:file].nil?)
191 | @updates = parse_this_file(opts[:file]).updates
192 | elsif not(@file.nil?)
193 | @updates = parse_this_file(@file).updates
194 | end
195 | return self
196 | end
197 |
198 | # Class method
199 | class << self
200 | def parse(file)
201 | cl = ChangeLog.new(file)
202 | return cl.parse()
203 | end
204 | alias_method :open, :parse
205 | end
206 |
207 | def inspect
208 | "#<%s:0x%x @file=%s, %d @updates, %d @entries>" % [self.class.name, self.object_id.abs, self.file || '""', self.updates.count || 0, self.entries.count || 0]
209 | end
210 |
211 | protected
212 | # Parse order is something like:
213 | # * if its' a date match, store the date
214 | # * take change notes until
215 | # * package match on name and action
216 | # * set @security if present
217 | # * take packge notes until
218 | # * next package or entry separator
219 | # * separator creates next change entry
220 | def parse_this_file(file)
221 | f_handle = ""
222 | if file.is_a?(File)
223 | f_handle = file
224 | elsif file.is_a?(String)
225 | if File.exist?(File.expand_path(file))
226 | f_handle = File.open(File.expand_path(file))
227 | else
228 | raise StandardError.new("file not found\n")
229 | end
230 | else
231 | raise StandardError.new("file not found\n")
232 | end
233 |
234 | # Start our changelog
235 | changelog = ChangeLog.new(f_handle)
236 | f_handle.each do |line|
237 | if (line =~ RE_DATE)
238 | update = Update.new(Time.parse($1))
239 |
240 | # Tying this Slackware::ChangeLog::Update to it's Slackware::ChangeLog parent
241 | update.changelog = changelog
242 | while true
243 | if (f_handle.eof?)
244 | break
245 | end
246 |
247 | # take the next line
248 | u_line = f_handle.readline
249 | if (u_line =~ RE_CHANGELOG_BREAK)
250 | break
251 | end
252 |
253 | # the intimate iteration
254 | # Match is more expensive than =~,
255 | # but ruby-1.8.x is lossing the matched values down below
256 | # so this works on both ...
257 | if (match = RE_PACKAGE_ENTRY.match(u_line))
258 | u_entry = Entry.new()
259 |
260 | # tying this entry to it's Slackware::ChangeLog::Update parent
261 | u_entry.update = update
262 |
263 | # This silly iteration catches the different cases of
264 | # which package line, matches which Regexp. WIN
265 | if match[1].nil?
266 | if match[4].nil?
267 | u_entry.package = match[6] unless match[6].nil?
268 | else
269 | u_entry.package = match[4]
270 | end
271 | else
272 | u_entry.package = match[1]
273 | end
274 | if u_entry.package.include?("/")
275 | u_entry.package = u_entry.package.split("/")[-1]
276 | end
277 | if match[2].nil?
278 | if match[5].nil?
279 | u_entry.section = match[7] unless match[7].nil?
280 | else
281 | u_entry.section = match[5]
282 | end
283 | else
284 | u_entry.section = match[2]
285 | end
286 | # set the action for the item, if it's present
287 | u_entry.action = match[3] unless match[3].nil?
288 |
289 | # Add this entry to the stack
290 | update.entries << u_entry
291 | else
292 | # if update.entries is empty, then this text is notes
293 | # for the upate, else it is notes, for the entry
294 | if (update.entries.empty?)
295 | update.notes = update.notes + u_line
296 | else
297 | # if this line of the entry security fix, toggle the bool
298 | if (u_line =~ RE_SECURITY_FIX)
299 | update.entries[-1].security = true
300 | end
301 | update.entries[-1].notes = update.entries[-1].notes + u_line
302 | end
303 | end
304 | end
305 |
306 | # Add this update to the stack
307 | changelog.updates << update
308 | end
309 | end
310 |
311 | # Give them their change set
312 | return changelog
313 | end # def self::parse_this_file
314 |
315 | end # class ChangeLog
316 | end # module Slackware
317 |
318 | # vim : set sw=2 sts=2 et :
319 |
--------------------------------------------------------------------------------
/lib/slackware/changelog/rss.rb:
--------------------------------------------------------------------------------
1 | # encoding: UTF-8
2 |
3 | # Copyright 2010,2011 Vincent Batts, Vienna, VA
4 | # All rights reserved.
5 | #
6 | # Redistribution and use of this source, with or without modification, is
7 | # permitted provided that the following conditions are met:
8 | #
9 | # 1. Redistributions of this source must retain the above copyright
10 | # notice, this list of conditions and the following disclaimer.
11 | #
12 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
13 | # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
14 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
15 | # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
17 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
18 | # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
19 | # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
20 | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
21 | # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 |
23 | require 'rss/maker'
24 | require 'slackware/changelog'
25 |
26 | module Slackware
27 | class ChangeLog
28 | # or maybe "http://connie.slackware.com/~msimons/slackware/grfx/shared/dobbslack1.jpg"
29 | IMAGE_URL = "http://connie.slackware.com/~msimons/slackware/grfx/shared/bluepiSW.jpg"
30 | # +opts+ can include
31 | # * :arch - basically '64' or '32'
32 | # * :version - 13.1, 13.2, current, etc.
33 | # * :url - the URL web link to the ChangeLog.txt
34 | # * :image_url - the URL for the loge used in the RSS feed
35 | def to_rss(opts = {})
36 | version = "2.0" # ["0.9", "1.0", "2.0"]
37 | content = RSS::Maker.make(version) do |m|
38 | m.encoding = "iso-8859-1"
39 | if (opts[:title])
40 | m.channel.title = opts[:title]
41 | else
42 | added_title = "slackware#{opts[:arch]}"
43 | if opts[:version]
44 | added_title += "-#{opts[:version]}"
45 | end
46 | m.channel.title = "#{added_title} ChangeLog.txt"
47 | end
48 |
49 | if (opts[:url])
50 | m.channel.link = "%s#slackagg" % [opts[:url]]
51 | else
52 | m.channel.link = "http://www.slackware.com/#slackagg"
53 | end
54 |
55 | if (opts[:description])
56 | m.channel.description = opts[:description]
57 | else
58 | m.channel.description = "a parsed ChangeLog.txt, is an extendable ChangeLog.txt"
59 | end
60 |
61 | if opts[:image_url]
62 | m.channel.logo = opts[:image_url]
63 | else
64 | m.channel.logo = IMAGE_URL
65 | end
66 |
67 | if (opts[:noimage])
68 | else
69 | image = m.image
70 | if opts[:image_url]
71 | image.url = opts[:image_url]
72 | else
73 | image.url = IMAGE_URL
74 | end
75 | image.title = "Slackware Linux"
76 | image.width = "144"
77 | image.height = "144"
78 | end
79 |
80 | m.items.do_sort = true # sort items by date
81 |
82 | @updates.each {|update|
83 | i = m.items.new_item
84 | # Add a plug to the title of the update, if it includes a security fix
85 | # set this here, so we don't have to .map again down below
86 | security_count = update.security.length
87 | if (security_count > 0)
88 | i.title = "%s (* Security fix *)" % [update.date.utc.to_s]
89 | else
90 | i.title = update.date.utc.to_s
91 | end
92 | if opts[:url]
93 | i.link = "%s#%s" % [opts[:url], update.date.to_i]
94 | else
95 | i.link = "http://slackware.com/#slackagg#%s" % [update.date.to_i]
96 | end
97 | i.date = update.date
98 |
99 | i.description = ""
100 | if (update.entries.count > 0)
101 | if (security_count > 0)
102 | i.description = i.description + "%d new update(s), %d security update(s)\n\n" % [update.entries.count, security_count]
103 | else
104 | i.description = i.description + "%d new update(s)\n\n" % [update.entries.count]
105 | end
106 | end
107 | i.description = i.description + "\n"
108 | unless (update.notes.empty?)
109 | i.description = i.description + update.notes + "\n\n"
110 | end
111 | if (update.entries.count > 0)
112 | update.entries.each {|entry|
113 | if (entry.notes.empty?)
114 | i.description = i.description + sprintf("%s/%s:\s%s\n",
115 | entry.section,
116 | entry.package,
117 | entry.action)
118 | else
119 | i.description = i.description + sprintf("%s/%s:\s%s\n\s\s%s\n",
120 | entry.section,
121 | entry.package,
122 | entry.action,
123 | entry.notes)
124 | end
125 | }
126 | end
127 | i.description = i.description + "
\n"
128 | #i.description.gsub!(/\n/, "
\n")
129 | }
130 | end
131 | return content
132 | end
133 | end
134 | end
135 |
136 |
137 |
138 | # vim : set sw=2 sts=2 et :
139 |
--------------------------------------------------------------------------------
/lib/slackware/log.rb:
--------------------------------------------------------------------------------
1 | # encoding: UTF-8
2 |
3 | # Copyright 2012 Vincent Batts, Vienna, VA
4 | # All rights reserved.
5 | #
6 | # Redistribution and use of this source, with or without modification, is
7 | # permitted provided that the following conditions are met:
8 | #
9 | # 1. Redistributions of this source must retain the above copyright
10 | # notice, this list of conditions and the following disclaimer.
11 | #
12 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
13 | # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
14 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
15 | # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
17 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
18 | # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
19 | # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
20 | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
21 | # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 |
23 | require 'logger'
24 | require 'singleton'
25 |
26 | module Slackware
27 | # Log is a subclass of Logger, but is implemented as a singleton,
28 | # so it can be used across library in a somewhat unified manner.
29 | # Example:
30 | # require 'slackware/log'
31 | #
32 | # slog = Slackware::Log.instance
33 | # slog.info("LOG ALL THE THINGS!")
34 | # slog.debug('my_app') { ex.backtrace }
35 | #
36 | class Log < Logger
37 | include Singleton
38 |
39 | # Since Singleton does a lazy loader, this will not get initialized
40 | # until it is first used. So it'll be nil, or you can set $logdev early on.
41 | # It defaults to WARN level and STDERR
42 | def initialize(*args)
43 | if $logdev
44 | super($logdev, args)
45 | else
46 | super(STDERR, args)
47 | end
48 | self.level = Logger::ERROR
49 | end
50 | end # class Log
51 | end # module Slackware
52 |
53 | # vim : set sw=2 sts=2 et :
54 |
--------------------------------------------------------------------------------
/lib/slackware/package.rb:
--------------------------------------------------------------------------------
1 | # encoding: UTF-8
2 |
3 | # Copyright 2010,2011,2012 Vincent Batts, Vienna, VA
4 | # All rights reserved.
5 | #
6 | # Redistribution and use of this source, with or without modification, is
7 | # permitted provided that the following conditions are met:
8 | #
9 | # 1. Redistributions of this source must retain the above copyright
10 | # notice, this list of conditions and the following disclaimer.
11 | #
12 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
13 | # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
14 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
15 | # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
17 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
18 | # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
19 | # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
20 | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
21 | # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 |
23 | require 'time'
24 | require 'slackware/log'
25 | require 'slackware/paths'
26 |
27 | MyTime = RUBY_VERSION < '1.9'? DateTime : Time
28 |
29 |
30 | module Slackware
31 | class Package
32 | RE_FILE_LIST = /^FILE LIST:/
33 | RE_COMPRESSED_PACKAGE_SIZE = /^COMPRESSED PACKAGE SIZE:\s+(.*)$/
34 | RE_UNCOMPRESSED_PACKAGE_SIZE = /^UNCOMPRESSED PACKAGE SIZE:\s+(.*)$/
35 | RE_PACKAGE_LOCATION = /^PACKAGE LOCATION:\s+(.*)$/
36 | RE_PACKAGE_DESCRIPTION = /^PACKAGE DESCRIPTION:\s+(.*)$/
37 |
38 | FMT_UPGRADE_TIME = "%F %H:%M:%S"
39 |
40 | attr_accessor :path, :file, :name, :version, :arch, :build, :tag, :tag_sep, :upgrade_time
41 | #attr_accessor :time, :owned_files
42 | def initialize(name = nil)
43 | self.name = name
44 | end
45 |
46 | # pkg.parse instance method for parsing the package information
47 | def parse(name)
48 | if name.include?("/")
49 | self.path = File.dirname(name)
50 | name = File.basename(name)
51 | end
52 | if (name =~ RE_REMOVED_NAMES)
53 | name = $1
54 | self.upgrade_time = MyTime.strptime($2 + ' ' + $3, fmt=FMT_UPGRADE_TIME)
55 | end
56 | arr = name.split('-')
57 | build = arr.pop
58 | if (build.include?("_"))
59 | self.tag_sep = "_"
60 | self.build = build.split(self.tag_sep)[0]
61 | self.tag = build.split(self.tag_sep)[1..-1].join(self.tag_sep)
62 | elsif (build =~ RE_BUILD_TAG)
63 | self.build = $1
64 | self.tag = $2
65 | else
66 | self.build = build
67 | self.tag = ""
68 | end
69 | self.arch = arr.pop
70 | self.version = arr.pop
71 | self.name = arr.join('-')
72 | end
73 |
74 | # Package.parse class method
75 | def self::parse(name)
76 | p = self.new()
77 | p.parse(name)
78 | return p
79 | end
80 |
81 | # Reassemble the package name as it would be in file form
82 | def fullname
83 | if (self.upgrade_time)
84 | time = self.upgrade_time.strftime("%F,%H:%M:%S")
85 | return [self.name, self.version, self.arch, [self.build, self.tag].join(self.tag_sep), "upgraded", time].join("-")
86 | else
87 | return [self.name, self.version, self.arch, [self.build, self.tag].join(self.tag_sep)].join("-")
88 | end
89 | end
90 |
91 | # Accessor for the PACKAGE DESCRIPTION from the package file
92 | def package_description
93 | return @package_description unless @package_description.nil?
94 |
95 | f = File.open(path() + '/' + self.fullname)
96 | loop do
97 | if (f.readline =~ RE_PACKAGE_DESCRIPTION)
98 | @package_description = f.take_while {|l|
99 | not(l =~ RE_FILE_LIST)
100 | }.map {|l|
101 | l.sub(/^#{self.name}:\s?/, '').chomp
102 | }
103 | return @package_description
104 | end
105 | end
106 | end
107 |
108 | # Setter for the PACKAGE DESCRIPTION, in the event you are parsing a repo file
109 | def package_description=(desc)
110 | @package_description = desc
111 | end
112 |
113 | # Accessor for the PACKAGE LOCATION from the package file
114 | def package_location
115 | return @package_location unless @package_location.nil?
116 |
117 | f = File.open(self.path + '/' + self.fullname)
118 | loop do
119 | if (f.readline =~ RE_PACKAGE_LOCATION)
120 | return @package_location = $1
121 | end
122 | end
123 | end
124 |
125 | # Setter for the PACKAGE LOCATION, in the event you are parsing a repo file
126 | def package_location=(path)
127 | @package_location = path
128 | end
129 |
130 | # Accessor for the UNCOMPRESSED PACKAGE SIZE from the package file
131 | def uncompressed_size
132 | return @uncompressed_size unless @uncompressed_size.nil?
133 |
134 | f = File.open(self.path + '/' + self.fullname)
135 | loop do
136 | if (f.readline =~ RE_UNCOMPRESSED_PACKAGE_SIZE)
137 | return @uncompressed_size = $1
138 | end
139 | end
140 | end
141 |
142 | # Setter for the UNCOMPRESSED PACKAGE SIZE, in the event you are parsing a repo file
143 | def uncompressed_size=(size)
144 | @uncompressed_size = size
145 | end
146 |
147 | # Accessor for the COMPRESSED PACKAGE SIZE from the package file
148 | def compressed_size
149 | return @compressed_size unless @compressed_size.nil?
150 |
151 | f = File.open(self.path + '/' + self.fullname)
152 | loop do
153 | if (f.readline =~ RE_COMPRESSED_PACKAGE_SIZE)
154 | return @compressed_size = $1
155 | end
156 | end
157 | end
158 |
159 | # Setter for the COMPRESSED PACKAGE SIZE, in the event you are parsing a repo file
160 | def compressed_size=(size)
161 | @compressed_size = size
162 | end
163 |
164 | # Set the file list in the package object in memory
165 | def owned_files
166 | @owned_files ||= _owned_files()
167 | end
168 |
169 | # helper for encoding handler in pre-ruby19
170 | def _e(str, enc = "US-ASCII")
171 | if RUBY_VERSION > "1.9"
172 | str.force_encoding(enc)
173 | else
174 | str
175 | end
176 | end
177 |
178 | # Accessor for the FILE LIST from the package file
179 | # unless the :owned_files symbol is populated
180 | def _owned_files
181 | files = []
182 | File.open(self.path + '/' + self.fullname) do |f|
183 | loop do
184 | break if f.eof?
185 | line = f.readline()
186 | begin
187 | if _e(line) =~ RE_FILE_LIST
188 | f.seek(2, IO::SEEK_CUR)
189 | break
190 | end
191 | rescue ArgumentError
192 | # ArgumentError: invalid byte sequence in US-ASCII
193 | # so dumb, i wish i could determine a better solution for this
194 | true
195 | end
196 | end
197 | begin
198 | files = f.readlines().map {|line| _e(line.rstrip) }
199 | rescue ArgumentError
200 | Log.instance.debug("Slackware::Package") {
201 | "encoding in : " + self.path + '/' + self.fullname
202 | }
203 | end
204 | end
205 | return files
206 | end
207 |
208 | # populates and returns self.time
209 | def time
210 | if (@time.nil? && self.path)
211 | if (File.exist?(self.path + "/" + self.fullname))
212 | @time = File.mtime(self.path + "/" + self.fullname)
213 | end
214 | elsif (not(self.path) && (@time.nil?))
215 | if (File.exist?(Paths::installed_packages() + "/" + self.fullname))
216 | @time = File.mtime(Paths::installed_packages() + "/" + self.fullname)
217 | end
218 | end
219 | return @time
220 | end
221 |
222 | # Fill in the path information
223 | def path
224 | @path ||= Paths::installed_packages()
225 | end
226 |
227 | def to_h
228 | {
229 | "name" => @name,
230 | "version" => @version,
231 | "arch" => @arch,
232 | "build" => @build,
233 | "tag" => @tag,
234 | "tag_sep" => @tag_sep,
235 | "upgrade_time" => @upgrade_time,
236 | "compressed_size" => compressed_size(),
237 | "uncompressed_size" => uncompressed_size(),
238 | "path" => path(),
239 | "time" => time(),
240 | "owned_files" => owned_files(),
241 | }
242 | end
243 |
244 | def inspect
245 | "#<%s:0x%x name=\"%s\" version=\"%s\" arch=\"%s\" build=%s tag=\"%s\">" % [
246 | self.class.name,
247 | self.object_id,
248 | self.name,
249 | self.version,
250 | self.arch,
251 | self.build,
252 | self.tag
253 | ]
254 | end
255 |
256 | end
257 |
258 |
259 | class Script < Package
260 | attr_accessor :script
261 |
262 | def initialize(name = nil)
263 | self.script = true
264 | super
265 | end
266 |
267 | def parse(name)
268 | super
269 | self.script = true
270 | end
271 |
272 | end
273 | end
274 |
275 | # vim:sw=2:sts=2:et:
276 |
--------------------------------------------------------------------------------
/lib/slackware/package_bundle.rb:
--------------------------------------------------------------------------------
1 | # encoding: UTF-8
2 |
3 | # Copyright 2010,2011 Vincent Batts, Vienna, VA
4 | # All rights reserved.
5 | #
6 | # Redistribution and use of this source, with or without modification, is
7 | # permitted provided that the following conditions are met:
8 | #
9 | # 1. Redistributions of this source must retain the above copyright
10 | # notice, this list of conditions and the following disclaimer.
11 | #
12 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
13 | # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
14 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
15 | # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
17 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
18 | # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
19 | # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
20 | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
21 | # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 |
23 | module Slackware
24 | class PackageBundle < Package
25 | attr_accessor :archive
26 |
27 | def initialize(name = nil)
28 | super
29 | end
30 |
31 | def parse(name)
32 | super(name)
33 | if self.build =~ /^(\d+.*)\.(t[gx]z)$/
34 | self.build = $1
35 | self.archive = $2
36 | elsif self.tag =~ /^(.*)\.(t[gx]z)$/
37 | self.tag = $1
38 | self.archive = $2
39 | end
40 | end
41 |
42 | def get_file_list
43 | pkg = "%s/%s.%s" % [self.path, self.fullname, self.archive]
44 | return nil unless File.exist?(pkg)
45 |
46 | e_flag = ""
47 | if pkg =~ /txz$/
48 | e_flag = "J"
49 | elsif pkg =~ /tgz$/
50 | e_flag = "z"
51 | elsif pkg =~ /tbz$/
52 | e_flag = "j"
53 | end
54 | IO.popen("tar #{e_flag}wtf #{pkg}") {|f|
55 | f.readlines.map {|l| l.chomp }
56 | }
57 | end
58 |
59 | def read_file(file)
60 | pkg = "%s/%s.%s" % [self.path, self.fullname, self.archive]
61 | return nil unless File.exist?(pkg)
62 |
63 | e_flag = ""
64 | if pkg =~ /txz$/
65 | e_flag = "J"
66 | elsif pkg =~ /tgz$/
67 | e_flag = "z"
68 | elsif pkg =~ /tbz$/
69 | e_flag = "j"
70 | end
71 | IO.popen("tar #{e_flag}xOf #{pkg} #{file}") {|f| f.read }
72 | end
73 |
74 | def inspect
75 | "#<%s:0x%x name=%s version=%s arch=%s build=%s tag=%s archive=%s>" % [
76 | self.class.name,
77 | self.object_id,
78 | self.name.inspect,
79 | self.version.inspect,
80 | self.arch.inspect,
81 | self.build,
82 | self.tag.inspect,
83 | self.archive.inspect
84 | ]
85 | end
86 | end
87 | end
88 | # vim : set sw=2 sts=2 et :
89 |
--------------------------------------------------------------------------------
/lib/slackware/paths.rb:
--------------------------------------------------------------------------------
1 | # Copyright 2010,2011,2012 Vincent Batts, Vienna, VA
2 | # All rights reserved.
3 | #
4 | # Redistribution and use of this source, with or without modification, is
5 | # permitted provided that the following conditions are met:
6 | #
7 | # 1. Redistributions of this source must retain the above copyright
8 | # notice, this list of conditions and the following disclaimer.
9 | #
10 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
11 | # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
12 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
13 | # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
14 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
15 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
16 | # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
17 | # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
18 | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
19 | # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
20 |
21 | module Slackware
22 | module Paths
23 | INSTALLED_PACKAGES = "/var/log/packages"
24 | REMOVED_PACKAGES = "/var/log/removed_packages"
25 | INSTALLED_SCRIPTS = "/var/log/scripts"
26 | REMOVED_SCRIPTS = "/var/log/removed_scripts"
27 | VERSION_FILE = "/etc/slackware-version"
28 |
29 | # A helper to return the ROOT directory of the system in question.
30 | # Like pkgtools, if the environment has "ROOT" set, use it, otherwise "/"
31 | def self::root_dir()
32 | return ENV["ROOT"] ? ENV["ROOT"] : "/"
33 | end
34 |
35 | def self::installed_packages(*args)
36 | return File.join(root_dir, INSTALLED_PACKAGES, args)
37 | end
38 |
39 | def self::removed_packages(*args)
40 | return File.join(root_dir, REMOVED_PACKAGES, args)
41 | end
42 |
43 | def self::installed_scripts(*args)
44 | return File.join(root_dir, INSTALLED_SCRIPTS, args)
45 | end
46 |
47 | def self::removed_scripts(*args)
48 | return File.join(root_dir, REMOVED_SCRIPTS, args)
49 | end
50 |
51 | def self::slackware_version()
52 | return File.join(root_dir, VERSION_FILE)
53 | end
54 | end # module Paths
55 | end # module Slackware
56 |
57 | # vim : set sw=2 sts=2 et :
58 |
--------------------------------------------------------------------------------
/lib/slackware/repo.rb:
--------------------------------------------------------------------------------
1 | # encoding: UTF-8
2 |
3 | # Copyright 2010,2011 Vincent Batts, Vienna, VA
4 | # All rights reserved.
5 | #
6 | # Redistribution and use of this source, with or without modification, is
7 | # permitted provided that the following conditions are met:
8 | #
9 | # 1. Redistributions of this source must retain the above copyright
10 | # notice, this list of conditions and the following disclaimer.
11 | #
12 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
13 | # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
14 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
15 | # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
17 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
18 | # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
19 | # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
20 | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
21 | # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 |
23 | require 'slackware/package'
24 | require 'slackware/log'
25 | require 'slackware/changelog'
26 | require 'slackware/system'
27 |
28 | require 'net/http'
29 | require 'net/ftp'
30 | require 'rbconfig'
31 |
32 | module Slackware
33 |
34 | # Stub
35 | class Repo
36 | RE_PACKAGE_NAME = /^PACKAGE NAME:\s+(.*)\.t[gbx]z\s*/
37 | RE_PACKAGE_LOCATION = /^PACKAGE LOCATION:\s+(.*)$/
38 | RE_COMPRESSED_SIZE = /^PACKAGE SIZE \(compressed\):\s+(.*)$/
39 | RE_UNCOMPRESSED_SIZE = /^PACKAGE SIZE \(uncompressed\):\s+(.*)$/
40 |
41 | attr_accessor :proto, :mirror, :path, :version, :arch, :changelog, :packages, :uri
42 |
43 | def initialize(repo = nil)
44 | @packages = nil
45 | if (repo.nil?)
46 | self.proto = "ftp://"
47 | self.mirror = "ftp.osuosl.org"
48 | self.path = "/pub/slackware/"
49 | self.version = begin
50 | v = Slackware::System.version
51 | if v =~ /(\d+)\.(\d+)\.\d+/
52 | v = $1 + "." + $2
53 | end
54 | v
55 | end
56 | self.arch = RbConfig::CONFIG["arch"] =~ /x86_64/ ? "64" : ""
57 | else
58 | ## TODO do some hot parsing of 'repo'
59 | self.uri = URI.parse(repo)
60 | end
61 | end
62 |
63 | def url
64 | "%s%s%sslackware%s-%s/" % [self.proto,
65 | self.mirror,
66 | self.path,
67 | self.arch,
68 | self.version]
69 | end
70 |
71 | def url=(thisurl)
72 | self.uri = URI.parse(thisurl)
73 | end
74 |
75 | def fetch(file = nil)
76 | #if file.nil?
77 | #url = URI.parse(self.proto + self.mirror + self.path)
78 | #else
79 | #url = URI.parse(self.proto + self.mirror + self.path + file)
80 | #end
81 | if self.proto =~ /ftp/
82 | ftp = Net::FTP.open(self.mirror)
83 | ftp.login
84 | ftp.chdir(self.path + "slackware" + self.arch + "-" + self.version)
85 | if (file.nil?)
86 | data = ftp.list('*')
87 | else
88 | data = ftp.get(file, nil)
89 | end
90 | ftp.close
91 | return data
92 | elsif self.proto =~ /http/
93 | # XXX this is not working yet
94 | req = Net::HTTP::Get.new(url.path)
95 | res = Net::HTTP.start(url.host, url.port) {|http| http.request(req) }
96 | return res
97 | elsif self.proto =~ /file/
98 | if (file.nil?)
99 | return Dir.glob(self.path + "slackware" + self.arch + "-" + self.version + "/*")
100 | else
101 | return File.read(self.path + "slackware" + self.arch + "-" + self.version + "/" + file)
102 | end
103 | else
104 | return nil
105 | end
106 | end
107 |
108 | # Pkg count that _should_ be removed
109 | # pkgs = Slackware::System.installed_packages
110 | # sr = Slackware::Repo.new
111 | # sr.version = "current"
112 | # c = get_changelog
113 | #(pkgs.map {|p| p.fullname } & c[:removed].map {|p| p.fullname }).count
114 | def get_changelog
115 | if (@changelog.nil?)
116 | changelog = {}
117 | changelog_data = fetch("ChangeLog.txt")
118 | return changelog
119 | else
120 | return @changelog
121 | end
122 | end
123 |
124 | def set_changelog
125 | @changelog = get_changelog
126 | return nil
127 | end
128 |
129 | def get_packages
130 | if (@packages.nil?)
131 | pkgs = []
132 | fetch("PACKAGES.TXT").split(/\n\n/).each {|p_block|
133 | p_block = p_block.split(/\n/).reject {|cell| cell if cell == "" }
134 | if (p_block.shift =~ RE_PACKAGE_NAME)
135 | pkg = Slackware::Package.parse($1)
136 |
137 | p_block.shift =~ RE_PACKAGE_LOCATION
138 | pkg.package_location = $1
139 |
140 | p_block.shift =~ RE_COMPRESSED_SIZE
141 | pkg.compressed_size = $1
142 |
143 | p_block.shift =~ RE_UNCOMPRESSED_SIZE
144 | pkg.uncompressed_size = $1
145 |
146 | # This is the empty PACKAGE DESCRIPTON: tag
147 | p_block.shift
148 |
149 | pkg.package_description = p_block.map {|cell|
150 | cell.sub(/^#{pkg.name}:\s*/, '')
151 | }
152 |
153 | pkgs << pkg
154 | end
155 | }
156 | return pkgs
157 | else
158 | return @packages
159 | end
160 | end
161 |
162 | def set_packages
163 | @packages = get_packages
164 | return @packages.count
165 | end
166 |
167 | end
168 |
169 |
170 | end
171 |
172 | # vim : set sw=2 sts=2 et :
173 |
--------------------------------------------------------------------------------
/lib/slackware/system.rb:
--------------------------------------------------------------------------------
1 | # encoding: UTF-8
2 |
3 | # Copyright 2010,2011,2012 Vincent Batts, Vienna, VA
4 | # All rights reserved.
5 | #
6 | # Redistribution and use of this source, with or without modification, is
7 | # permitted provided that the following conditions are met:
8 | #
9 | # 1. Redistributions of this source must retain the above copyright
10 | # notice, this list of conditions and the following disclaimer.
11 | #
12 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
13 | # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
14 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
15 | # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
16 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
17 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
18 | # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
19 | # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
20 | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
21 | # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 |
23 | require 'slackware/version'
24 | require 'slackware/paths'
25 | require 'slackware/package'
26 | require 'slackware/log'
27 |
28 | module Slackware
29 |
30 | RE_REMOVED_NAMES = /^(.*)-upgraded-(\d{4}-\d{2}-\d{2}),(\d{2}:\d{2}:\d{2})$/
31 | RE_BUILD_TAG = /^([[:digit:]]+)([[:alpha:]]+)$/
32 |
33 | FMT_UPGRADE_TIME = "%F %H:%M:%S"
34 |
35 | class System
36 |
37 | # A debug log helper
38 | def self::debug(msg)
39 | Slackware::Log.instance.debug(self.name) { msg }
40 | end
41 |
42 | def self::installed_packages
43 | path = Paths::installed_packages("*")
44 | return Dir.glob(path).sort.map {|p| Package.parse(p) }
45 | end
46 |
47 | def self::removed_packages
48 | path = Paths::removed_packages("*")
49 | return Dir.glob(path).sort.map {|p| Package.parse(p) }
50 | end
51 |
52 | def self::installed_scripts
53 | path = Paths::installed_scripts("*")
54 | return Dir.glob(path).sort.map {|s| Script.parse(s) }
55 | end
56 |
57 | def self::removed_scripts
58 | path = Paths::removed_scripts("*")
59 | return Dir.glob(path).sort.map {|s| Script.parse(s) }
60 | end
61 |
62 | def self::tags_used
63 | pkgs = installed_packages()
64 | set = []
65 | pkgs.map {|p| p.tag }.uniq.each {|tag|
66 | m_set = {}
67 | m_set[:tag] = tag
68 | m_set[:count] = pkgs.select {|p| p.tag == tag }.count
69 | set << m_set
70 | }
71 | return set
72 | end
73 |
74 | def self::with_tag(tag)
75 | return installed_packages().select {|pkg| pkg.tag == tag }
76 | end
77 |
78 | def self::arch_used
79 | return installed_packages().map {|p| p.arch }.uniq
80 | end
81 |
82 | def self::with_arch(arch)
83 | return installed_packages().select {|pkg| pkg.arch == arch }
84 | end
85 |
86 | def self::find_installed(name)
87 | d = Dir.new(Paths::installed_packages())
88 | return d.select {|p| p.include?(name) }.map {|p| Package.parse(p) }
89 | end
90 |
91 | def self::find_removed(name)
92 | d = Dir.new(Paths::removed_packages())
93 | return d.select {|p| p.include?(name) }.map {|p| Package.parse(p) }
94 | end
95 |
96 | # Returns a list of the upgrades for a particular package name
97 | # Example:
98 | # Slackware::System.upgrades("xz")
99 | # => [#,
100 | # #]
101 | # Slackware::System.upgrades("fart")
102 | # => []
103 | def self::upgrades(pkg)
104 | find_removed(pkg).select {|p| (p.name == pkg) && (p.upgrade_time) }.sort {|a,b| a.upgrade_time <=> b.upgrade_time }
105 | end
106 |
107 | # Return an Array of packages, that were installed after provided +time+
108 | # ("installed" meaning the file's mtime)
109 | def self::installed_after(time)
110 | arr = []
111 | Dir.new(Paths::installed_packages()).each {|p|
112 | if (File.mtime(Paths::installed_packages(p)) >= time)
113 | pkg = Package.parse(p)
114 | pkg.time
115 | arr << pkg
116 | end
117 | }
118 | return arr
119 | end
120 |
121 | # Return an Array of packages, that were installed before provided +time+
122 | # ("installed" meaning the file's mtime)
123 | def self::installed_before(time)
124 | arr = []
125 | Dir.new(Paths::installed_packages()).each {|p|
126 | if (File.mtime(Paths::installed_packages(p)) <= time)
127 | pkg = Package.parse(p)
128 | pkg.time
129 | arr << pkg
130 | end
131 | }
132 | return arr
133 | end
134 |
135 | # Return an Array of packages, that were removed after provided +time+
136 | def self::removed_after(time)
137 | arr = []
138 | Dir.new(Paths::removed_packages()).each {|p|
139 | if (Paths::installed_packages(p) =~ RE_REMOVED_NAMES)
140 | if (Time.strptime($2 + ' ' + $3, fmt=FMT_UPGRADE_TIME) >= time)
141 | arr << Package.parse(p)
142 | end
143 | end
144 | }
145 | return arr
146 | end
147 |
148 | # Return an Array of packages, that were removed before provided +time+
149 | def self::removed_before(time)
150 | arr = []
151 | Dir.new(Paths::removed_packages()).each {|p|
152 | if (Paths::installed_packages(p) =~ RE_REMOVED_NAMES)
153 | if (Time.strptime($2 + ' ' + $3, fmt=FMT_UPGRADE_TIME) <= time)
154 | arr << Package.parse(p)
155 | end
156 | end
157 | }
158 | return arr
159 | end
160 |
161 | # Check whether a given Slackware::Package has been upgraded before
162 | def self::is_upgraded?(pkg)
163 | if (find_removed(pkg).map {|p| p.name if p.upgrade_time }.include?(pkg) )
164 | return true
165 | else
166 | return false
167 | end
168 | end
169 |
170 | # Search installation of Slackware::Package's for what owns the questioned file
171 | # Returns an Array, of matching pairs. The pairs are [Slackware::Package, ]
172 | def self::owns_file(file)
173 | pkgs = installed_packages()
174 | debug('owns_file(): pkgs.count => %d' % pkgs.count)
175 | found_files = []
176 | file = file.sub(/^\//, "") # clean off the leading '/'
177 | re = /#{Regexp.escape(file)}/
178 | debug('owns_file(): file Regexp => %s' % re.inspect)
179 | pkgs.each {|pkg|
180 | pkg.owned_files().select {|f|
181 | begin
182 | f =~ re
183 | rescue ArgumentError => ex
184 | Log.instance.debug(self.name) {
185 | "encoding mismatch: " + f
186 | }
187 | false # this needs to return false, for the .select
188 | end
189 | }.each do |f|
190 | found_files << [pkg, f]
191 | end
192 | }
193 | return found_files
194 | end
195 |
196 | # Return the version of Slackware Linux currently installed
197 | def self::version
198 | SLACKWARE_VERSION
199 | end
200 | end
201 |
202 | end
203 |
204 | # vim: set sw=2 sts=2 et:
205 |
--------------------------------------------------------------------------------
/lib/slackware/utils.rb:
--------------------------------------------------------------------------------
1 | # encoding: UTF-8
2 |
3 | # Copyright 2009,2010 Vincent Batts, http://hashbangbash.com/
4 | # Copyright 2010,2011 Vincent Batts, Vienna, VA, USA
5 | # Copyright 2012 Vincent Batts, Raleigh, NC, USA
6 | # All rights reserved.
7 | #
8 | # Redistribution and use of this source, with or without modification, is
9 | # permitted provided that the following conditions are met:
10 | #
11 | # 1. Redistributions of this source must retain the above copyright
12 | # notice, this list of conditions and the following disclaimer.
13 | #
14 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
15 | # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
16 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
17 | # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
18 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
20 | # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
21 | # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
22 | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
23 | # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 |
25 | # started - Fri Oct 9 15:48:43 CDT 2009
26 | # updated for args - Tue Mar 23 14:54:19 CDT 2010
27 |
28 | require 'slackware'
29 |
30 | # Variables
31 | @st = "\033[31;1m"
32 | @en = "\033[0m"
33 | @slog = Slackware::Log.instance
34 |
35 | # This is base builder of the packe list
36 | def build_packages(opts = {}, args = [])
37 | pkgs = Slackware::System.installed_packages
38 |
39 | # separated this little thing out, since it adds a little more time
40 | if (opts[:time])
41 | pkgs = pkgs.each {|p| p.time }
42 | end
43 |
44 | if (opts[:all])
45 | if (args.count > 0)
46 | args.each {|arg|
47 | # about 0.012s performance improvement,
48 | # by compiling it here, instead of inside the iteration.
49 | if (opts[:case_insensitive])
50 | re = /#{arg}/i
51 | else
52 | re = /#{arg}/
53 | end
54 |
55 | pkgs = pkgs.find_all {|pkg| pkg.fullname =~ re }
56 | }
57 | end
58 | re = nil
59 | end
60 | if (opts[:pkg])
61 | if (opts[:case_insensitive])
62 | re = /#{opts[:pkg]}/i
63 | else
64 | re = /#{opts[:pkg]}/
65 | end
66 | pkgs = pkgs.map {|p|
67 | if p.name =~ re
68 | if (opts[:color])
69 | p.name = p.name.gsub(re, "#{@st}\\{@en}")
70 | end
71 | p
72 | end
73 | }.compact
74 | re = nil
75 | end
76 | if (opts[:Version])
77 | if (opts[:case_insensitive])
78 | re = Regexp.new(Regexp.escape(opts[:Version]), Regexp::IGNORECASE)
79 | else
80 | re = Regexp.new(Regexp.escape(opts[:Version]))
81 | end
82 | pkgs = pkgs.map {|p|
83 | if p.version =~ re
84 | if (opts[:color])
85 | p.version = p.version.gsub(re, "#{@st}\\{@en}")
86 | end
87 | p
88 | end
89 | }.compact
90 | re = nil
91 | end
92 | if (opts[:arch])
93 | if (opts[:case_insensitive])
94 | re = /#{opts[:arch]}/i
95 | else
96 | re = /#{opts[:arch]}/
97 | end
98 | pkgs = pkgs.map {|p|
99 | if p.arch =~ re
100 | if (opts[:color])
101 | p.arch = p.arch.gsub(re, "#{@st}\\{@en}")
102 | end
103 | p
104 | end
105 | }.compact
106 | re = nil
107 | end
108 | if (opts[:build])
109 | if (opts[:case_insensitive])
110 | re = /#{opts[:build]}/i
111 | else
112 | re = /#{opts[:build]}/
113 | end
114 | pkgs = pkgs.map {|p|
115 | if p.build =~ re
116 | if (opts[:color])
117 | p.build = p.build.gsub(re, "#{@st}\\{@en}")
118 | end
119 | p
120 | end
121 | }.compact
122 | re = nil
123 | end
124 | if (opts[:tag])
125 | if (opts[:case_insensitive])
126 | re = /#{opts[:tag]}/i
127 | else
128 | re = /#{opts[:tag]}/
129 | end
130 | pkgs = pkgs.map {|p|
131 | if p.tag =~ re
132 | if (opts[:color])
133 | p.tag = p.tag.gsub(re, "#{@st}\\{@en}")
134 | end
135 | p
136 | end
137 | }.compact
138 | re = nil
139 | end
140 |
141 | return pkgs
142 | end
143 |
144 | def print_upgrades(pkgs)
145 | count = 1
146 | p_count = pkgs.count
147 | pkgs.each do |pkg|
148 | if (Slackware::System.is_upgraded?(pkg.name))
149 | puts '"%s" (current version %s build %s%s) has been upgraded before' % [pkg.name,
150 | pkg.version,
151 | pkg.build,
152 | pkg.tag]
153 | Slackware::System.upgrades(pkg.name).each do |up|
154 | puts " %s build %s%s upgraded on %s" % [up.version,
155 | up.build,
156 | up.tag,
157 | up.upgrade_time]
158 | end
159 | else
160 | puts '"%s" (current version %s build %s%s) has not been upgraded' % [pkg.name,
161 | pkg.version,
162 | pkg.build,
163 | pkg.tag]
164 | end
165 | if count < p_count
166 | puts
167 | end
168 | count += 1
169 | end
170 | end
171 |
172 | def print_packages(pkgs)
173 | if (pkgs.count > 0 && pkgs.first.class == Slackware::Package)
174 | pkgs.each {|pkg|
175 | printf("%s\n", pkg.fullname )
176 | }
177 | end
178 | end
179 |
180 | def print_packages_times(pkgs, epoch = false, reverse = false)
181 | @slog.debug('print_packages_times') { "epoch: #{epoch} ; reverse: #{reverse}" }
182 | begin
183 | if reverse
184 | pkgs.sort_by {|x| x.time }
185 | else
186 | pkgs.sort_by {|x| x.time }.reverse
187 | end
188 | end.each {|pkg|
189 | printf("%s : %s\n", pkg.fullname, epoch ? pkg.time.to_i : pkg.time.to_s )
190 | }
191 | end
192 |
193 | def print_packages_description(pkgs)
194 | if (pkgs.count > 0 && pkgs.first.class == Slackware::Package)
195 | pkgs.each {|pkg|
196 | printf("%s: COMPRESSED SIZE: %s\n", pkg.fullname, pkg.compressed_size )
197 | printf("%s: UNCOMPRESSED SIZE: %s\n", pkg.fullname, pkg.uncompressed_size )
198 | pkg.package_description.each {|line|
199 | printf("%s: %s\n", pkg.fullname, line )
200 | }
201 | }
202 | end
203 | end
204 |
205 | # package file listing
206 | def print_package_file_list(pkgs)
207 | if (pkgs.count > 1)
208 | pkgs.each {|pkg|
209 | pkg.owned_files.each {|line|
210 | puts pkg.name + ": " + line
211 | }
212 | }
213 | else
214 | pkgs.each {|pkg| puts pkg.owned_files }
215 | end
216 | end
217 |
218 | # search Array of Slackware::Package's for files
219 | # and print the items found
220 | def print_package_searched_files(files)
221 | found_files = []
222 | files.each {|file|
223 | found_files += Slackware::System.owns_file(file)
224 | }
225 | found_files.each {|file|
226 | puts file[0].fullname + ": " + file[1]
227 | }
228 | end
229 |
230 | # find orpaned files from /etc/
231 | # * build a list of files from removed_packages
232 | # * check the list to see if they are currently owned by a package
233 | # * check the unowned members, to see if they still exist on the filesystem
234 | # * return existing files
235 | def find_orphaned_config_files
236 | # build a list of config files currently installed
237 | installed_config_files = Slackware::System.installed_packages.map {|pkg|
238 | pkg.owned_files.map {|file|
239 | if not(file =~ /\/$/)
240 | if (file =~ /^etc\//)
241 | file
242 | end
243 | end
244 | }
245 | }.flatten.compact
246 |
247 | # this Array is where we'll stash removed packages that have config file to check
248 | pkgs = Array.new
249 | Slackware::System.removed_packages.each {|r_pkg|
250 | # find config files for this removed package
251 | config = r_pkg.owned_files.grep(/^etc\/.*[\w|\d]$/)
252 | # continue if there are none
253 | if (config.count > 0)
254 | # remove config files that are owned by a currently installed package
255 | config = config.map {|file|
256 | if not(installed_config_files.include?(file))
257 | if not(installed_config_files.include?(file + ".new"))
258 | file
259 | end
260 | end
261 | }.compact
262 | # check again, and continue if there are no config files left
263 | if (config.count > 0)
264 | # otherwise add this package, and its files, to the stack
265 | pkgs << {:pkg => r_pkg, :files => config}
266 | end
267 | end
268 | }
269 |
270 | # setup list of files to check whether they still exist on the filesystem
271 | files = []
272 | pkgs.map {|pkg| files += pkg[:files] }
273 | files.uniq!
274 |
275 | orphaned_config_files = []
276 | files.each {|file|
277 | if (File.exist?(File.join(Slackware::Paths.root_dir(),file)))
278 | orphaned_config_files << file
279 | end
280 | }
281 |
282 | return orphaned_config_files
283 |
284 | end
285 |
286 | def print_orphaned_files(files)
287 | puts files
288 | end
289 |
290 | # XXX This is a work in progress
291 | # It _works_, but is pretty darn slow ...
292 | # It would be more efficient to break this out to a separate Class,
293 | # and use a sqlite database for caching linked dependencies.
294 | # Categorized by pkg, file, links. based on mtime of the package file,
295 | # or maybe even mtime of the shared objects themselves.
296 | # That way, those entries alone could be updated if they are newer,
297 | # otherwise it's just a query.
298 | def find_linked(file_to_find)
299 | require 'find'
300 |
301 | dirs = %w{ /lib /lib64 /usr/lib /usr/lib64 /bin /sbin /usr/bin /usr/sbin }
302 | re_so = /ELF.*shared object/
303 | re_exec = /ELF.*executable/
304 |
305 | if File.exist?(file_to_find)
306 | file_to_find = File.expand_path(file_to_find)
307 | end
308 | if not(filemagic(File.dirname(file_to_find) + "/" + File.readlink(file_to_find)) =~ re_so)
309 | printf("%s is not a shared object\n",file_to_find)
310 | return nil
311 | end
312 |
313 | includes_linked = []
314 | printf("Searching through ... ")
315 | dirs.each {|dir|
316 | printf("%s ", dir)
317 | Find.find(dir) {|file|
318 | if File.directory?(file)
319 | next
320 | end
321 | file_magic = filemagic(file)
322 | if (file_magic =~ re_so || file_magic =~ re_exec)
323 | l = `/usr/bin/ldd #{file} 2>/dev/null `
324 | if l.include?(file_to_find)
325 | printf(".")
326 | l = l.sub(/\t/, '').split(/\n/)
327 | includes_linked << {:file => file, :links => l}
328 | end
329 | end
330 | }
331 | }
332 | printf("\n")
333 | return includes_linked
334 | end
335 |
336 | # This is intended to take the return of the find_linked() method
337 | def packages_of_linked_files(linked_files_arr)
338 | pkgs = Slackware::System.installed_packages
339 | owned_pkgs = []
340 | pkgs.map {|pkg|
341 | files.each {|file|
342 | if pkg.owned_files.include?(file)
343 | owned_pkgs << {:pkg => pkg, :file => file}
344 | end
345 | }
346 | }
347 | return owned_pkgs
348 | end
349 |
350 | # Pretty print the output of find_linked()
351 | def print_find_linked(file_to_find)
352 | files = find_linked(file_to_find)
353 | printf("files linked to '%s' include:\n", file_to_find)
354 | files.each {|file|
355 | printf(" %s\n", file)
356 | }
357 | end
358 |
359 | private
360 |
361 | def filemagic(file)
362 | return `/usr/bin/file "#{file}"`.chomp
363 | end
364 |
365 | # vim:sw=2:sts=2:et:
366 |
--------------------------------------------------------------------------------
/lib/slackware/version.rb:
--------------------------------------------------------------------------------
1 | # Copyright 2010,2011,2012 Vincent Batts, Vienna, VA
2 | # All rights reserved.
3 | #
4 | # Redistribution and use of this source, with or without modification, is
5 | # permitted provided that the following conditions are met:
6 | #
7 | # 1. Redistributions of this source must retain the above copyright
8 | # notice, this list of conditions and the following disclaimer.
9 | #
10 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
11 | # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
12 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
13 | # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
14 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
15 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
16 | # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
17 | # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
18 | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
19 | # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
20 |
21 | require 'slackware/paths'
22 |
23 | module Slackware
24 | SLACKWARE_VERSION = begin
25 | data = File.read(Paths::slackware_version())
26 | data =~ /Slackware\s(.*)/
27 | $1
28 | rescue
29 | nil
30 | end
31 | UTILS_VERSION = "0.7.5"
32 | end
33 |
34 | # vim : set sw=2 sts=2 et :
35 |
--------------------------------------------------------------------------------
/man/man3/slack-utils.3:
--------------------------------------------------------------------------------
1 | .\" Written by Vincent Batts
2 | .TH SLACK-UTILS 3 "March 2011" "Slackware-Linux"
3 | .SH NAME
4 | slack-utils - Ruby library for harnessing Slackware Linux stuff
5 |
6 | .SH SYNOPSIS
7 | .LP
8 | .B require 'slackare'
9 |
10 | .SH DESCRIPTION
11 | For more information on this library and its offerings,
12 | use the `ri` command for "Slackare"
13 | .br
14 | .SS Example:
15 | .I
16 | $> ri Slackware
17 |
18 |
19 | .SH "SEE ALSO"
20 | .BR slack-utils(8)
21 | .BR ruby(1)
22 | .BR ri(1)
23 |
--------------------------------------------------------------------------------
/man/man8/slack-utils.8:
--------------------------------------------------------------------------------
1 | .\" Written by Vincent Batts
2 | .TH SLACK-UTILS 8 "July 2010" "Slackware-Linux"
3 | .SH NAME
4 | .B slack-utils - simple slackware sys-admin tools
5 |
6 | .SH SYNOPSIS
7 | .B slp [-c|--color] [[-p|--pkg] PACKAGE_NAME] [[-V|--Version] VERSION_STRING] [[-a|--arch] ARCH] [[-b|--build] BUILD_NUM] [[-t|--tag] TAG] [one or more package names]
8 | .LP
9 | .B slf [-c|--color] [[-p|--pkg] PACKAGE_NAME] [[-V|--Version] VERSION_STRING] [[-a|--arch] ARCH] [[-b|--build] BUILD_NUM] [[-t|--tag] TAG]
10 | .LP
11 | .B slt [-c|--color] [-e|--epoch] [[-p|--pkg] PACKAGE_NAME] [[-V|--Version] VERSION_STRING] [[-a|--arch] ARCH] [[-b|--build] BUILD_NUM] [[-t|--tag] TAG] [one or more package names]
12 | .LP
13 | .B sll [-c|--color] [[-p|--pkg] PACKAGE_NAME] [[-V|--Version] VERSION_STRING] [[-a|--arch] ARCH] [[-b|--build] BUILD_NUM] [[-t|--tag] TAG] [-f|--force] [one or more package names]
14 | .LP
15 | .B sli [[-p|--pkg] PACKAGE_NAME] [[-V|--Version] VERSION_STRING] [[-a|--arch] ARCH] [[-b|--build] BUILD_NUM] [[-t|--tag] TAG] [one or more package names]
16 | .LP
17 | .B slu [[-p|--pkg] PACKAGE_NAME] [[-t|--tag] TAG] [-f|--force] [one or more package names]
18 | .LP
19 | .B slo
20 | .LP
21 | .B slfindlinked
22 | .LP
23 |
24 | .SH DESCRIPTION
25 | .B slack-utils
26 | prints information related to slackware packages installed.
27 | This is written in Ruby, and should be fine for ruby-1.8 or ruby-1.9.
28 | Updates are welcome :-)
29 |
30 | .SS slp
31 | By default will list all slackware packages currently installed.
32 | Any [package names] passed after the command, are printed if matched.
33 | These args can be ruby regex expressions. For example:
34 | .RS
35 | .nf
36 | .B \fI$>\fI slp rsync xorg.*nest
37 | rsync-3.0.7-x86_64-1
38 | xorg-server-xnest-1.7.7-x86_64-2
39 | .fi
40 | .br
41 |
42 | .nf
43 | .B \fI$>\fI slp -t vb -p pony
44 | my-little-pony-1.1-x86_64-1_vb
45 | .fi
46 | .PP
47 |
48 | .SS slf
49 | Requires an argument.
50 | Any [file(s)] passed after the command, are printed if matched.
51 | These args can be ruby regex expressions. For example:
52 | .RS
53 | .nf
54 | .B \fI$>\fI slf kdmrc lilo$
55 | kdebase-workspace-4.4.5-x86_64-1: usr/share/doc/HTML/en/kdm/kdmrc-ref.docbook
56 | kdebase-workspace-4.4.5-x86_64-1: etc/kde/kdm/kdmrc.new
57 | lilo-22.8-x86_64-15: sbin/lilo
58 | syslinux-3.84-x86_64-2: usr/bin/keytab-lilo
59 | .fi
60 | .PP
61 |
62 | .SS sll
63 | Requires an argument.
64 | The files owned by [package name(s)], are printed if matched.
65 | These args can be ruby regex expressions. For example:
66 | .RS
67 | .nf
68 | .B \fI$>\fI sll -p radeontool
69 | usr/
70 | usr/bin/
71 | usr/bin/radeontool
72 | usr/bin/avivotool
73 | install/
74 | install/slack-desc
75 | .fi
76 | .PP
77 |
78 | .SS slu
79 | Requires an argument.
80 | Shows the upgrade history for matching packages.
81 | Any strings passed are searched for installed packages, or using flags. It is
82 | possible to show upgrade history for all packages, but requires a flags to overide.
83 | These args can be ruby regex expressions. For example:
84 | .RS
85 | .nf
86 | .B \fI$>\fI slu bash
87 | "bash" (current version 4.2.010 build 1vb) has been upgraded before
88 | 3.1.017 build 2 upgraded on 2010-06-01 22:07:33 -0400
89 | 4.1.007 build 1 upgraded on 2011-03-11 10:04:08 -0500
90 | 4.1.010 build 1 upgraded on 2011-08-10 14:24:49 -0400
91 |
92 | "bash-completion" (current version 1.3 build 4) has been upgraded before
93 | 1.1 build 3 upgraded on 2011-02-28 08:43:56 -0500
94 | 1.3 build 1 upgraded on 2011-03-02 08:58:46 -0500
95 | 1.3 build 2 upgraded on 2011-03-22 09:42:45 -0400
96 | 1.3 build 3 upgraded on 2011-04-22 12:02:57 -0400
97 | .B \fI$>\fI slu -p ^bash$
98 | "bash" (current version 4.2.010 build 1vb) has been upgraded before
99 | 3.1.017 build 2 upgraded on 2010-06-01 22:07:33 -0400
100 | 4.1.007 build 1 upgraded on 2011-03-11 10:04:08 -0500
101 | 4.1.010 build 1 upgraded on 2011-08-10 14:24:49 -0400
102 | .fi
103 | .PP
104 |
105 | .SS sli
106 | By default will list the information for all slackware packages currently installed.
107 | The header of the installed package is displayed.
108 | These args can be ruby regex expressions. For example:
109 | .RS
110 | .nf
111 | .B \fI$>\fI sli -p aaa_base
112 | aaa_base-13.37-x86_64-3: COMPRESSED SIZE: 4K
113 | aaa_base-13.37-x86_64-3: UNCOMPRESSED SIZE: 90K
114 | aaa_base-13.37-x86_64-3: aaa_base (Basic Linux filesystem package)
115 | aaa_base-13.37-x86_64-3:
116 | aaa_base-13.37-x86_64-3: Sets up the empty directory tree for Slackware and adds an email to
117 | aaa_base-13.37-x86_64-3: root's mailbox welcoming them to Linux. :) This package should be
118 | aaa_base-13.37-x86_64-3: installed first, and never uninstalled.
119 | aaa_base-13.37-x86_64-3:
120 | aaa_base-13.37-x86_64-3:
121 | aaa_base-13.37-x86_64-3:
122 | aaa_base-13.37-x86_64-3:
123 | aaa_base-13.37-x86_64-3:
124 | aaa_base-13.37-x86_64-3:
125 | .fi
126 | .PP
127 |
128 | .SS slt
129 | By default will list all slackware packages currently installed, and their mtime/install time.
130 | Any [package names] passed after the command, are printed if matched.
131 | These args can be ruby regex expressions. For example:
132 | .RS
133 | .nf
134 | .B \fI$>\fI slt radeontool-1.6.1-x86_64-1 rsync
135 | radeontool-1.6.1-x86_64-1: 2010-06-01 22:40:42 -0400
136 | rsync-3.0.7-x86_64-1: 2010-06-01 22:41:08 -0400
137 | .fi
138 | .br
139 |
140 | .nf
141 | .B \fI$>\fI slt -e -p kernel-generic
142 | kernel-generic-2.6.37.5-x86_64-1 : 1300975233
143 | .fi
144 | .PP
145 |
146 | .SS slo
147 | This utility searches for orphaned configuration files, that had been
148 | installed as .new files, but the owning package is no longer installed.
149 | .br
150 | TODO this utility and concept could take some loving.
151 | .RS
152 | .nf
153 | .B \fI$>\fI slo
154 | XXX - NEEDS an example
155 | .fi
156 | .PP
157 |
158 | .SS slfindlinked
159 | Requires an argument. (and please be patient ;)
160 | Prints the package name and file that are linked to the that is passed as an argument.
161 | .RS
162 | .nf
163 | .B \fI$>\fI slfindlinked libgmp
164 | guile-1.8.7-x86_64-3: usr/lib64/libguile-srfi-srfi-60-v-2.so.2.0.2 linked to libgmp.so.10
165 | soprano-2.4.64-x86_64-1: usr/lib64/soprano/libsoprano_redlandbackend.so linked to libgmp.so.10
166 | php-5.2.14-x86_64-1: usr/lib64/php/extensions/gmp.so linked to libgmp.so.10
167 | [...]
168 | .fi
169 | .PP
170 |
171 | .SH "SEE ALSO"
172 | .BR slack-utils(3)
173 |
174 |
--------------------------------------------------------------------------------
/man/man8/slf.8:
--------------------------------------------------------------------------------
1 | .so man8/slack-utils.8
2 |
--------------------------------------------------------------------------------
/man/man8/sli.8:
--------------------------------------------------------------------------------
1 | .so man8/slack-utils.8
2 |
--------------------------------------------------------------------------------
/man/man8/sll.8:
--------------------------------------------------------------------------------
1 | .so man8/slack-utils.8
2 |
--------------------------------------------------------------------------------
/man/man8/slo.8:
--------------------------------------------------------------------------------
1 | .so man8/slack-utils.8
2 |
--------------------------------------------------------------------------------
/man/man8/slp.8:
--------------------------------------------------------------------------------
1 | .so man8/slack-utils.8
2 |
--------------------------------------------------------------------------------
/man/man8/slt.8:
--------------------------------------------------------------------------------
1 | .so man8/slack-utils.8
2 |
--------------------------------------------------------------------------------
/man/man8/slu.8:
--------------------------------------------------------------------------------
1 | .so man8/slack-utils.8
2 |
--------------------------------------------------------------------------------
/slack-desc:
--------------------------------------------------------------------------------
1 | # HOW TO EDIT THIS FILE:
2 | # The "handy ruler" below makes it easier to edit a package description. Line
3 | # up the first '|' above the ':' following the base package name, and the '|'
4 | # on the right side marks the last column you can put a character in. You must
5 | # make exactly 11 lines for the formatting to be correct. It's also
6 | # customary to leave one space after the ':'.
7 |
8 | |-----handy-ruler------------------------------------------------------|
9 | slack-utils: slack-utils (utilities and Ruby library, for Slackware)
10 | slack-utils:
11 | slack-utils: A simple tool for looking over installed packages,
12 | slack-utils: finding file owners, or the install times of packages.
13 | slack-utils:
14 | slack-utils: Homepage https://github.com/vbatts/slack-utils
15 | slack-utils:
16 | slack-utils:
17 | slack-utils:
18 | slack-utils:
19 | slack-utils:
20 |
--------------------------------------------------------------------------------
/slack-utils.SlackBuild:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # Slackware build script for slack-utils
4 |
5 | # Copyright 2010,2011 Vincent Batts, vbatts@hashbangbash.com, http://hashbangbash.com/
6 | # All rights reserved.
7 | #
8 | # Redistribution and use of this script, with or without modification, is
9 | # permitted provided that the following conditions are met:
10 | #
11 | # 1. Redistributions of this script must retain the above copyright
12 | # notice, this list of conditions and the following disclaimer.
13 | #
14 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
15 | # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
16 | # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
17 | # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
18 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 | # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
20 | # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
21 | # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
22 | # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
23 | # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 |
25 | set -e
26 |
27 | PKGNAM=slack-utils
28 | VERSION=$(ls -rt pkg/$PKGNAM-*.tar.?z* | tail -1 | rev | cut -f 3- -d . | cut -f 1 -d - | rev)
29 | BUILD=${BUILD:-1}
30 | TAG=${TAG:-_vb}
31 |
32 | if [ -z "$ARCH" ]; then
33 | case "$( uname -m )" in
34 | i?86) ARCH=i486 ;;
35 | arm*) ARCH=arm ;;
36 | # Unless $ARCH is already set, use uname -m for all other archs:
37 | *) ARCH=$( uname -m ) ;;
38 | esac
39 | fi
40 |
41 | CWD=$(pwd)
42 | TMP=${TMP:-/tmp/${TAG}}
43 | PKG=$TMP/package-$PKGNAM
44 | OUTPUT=${OUTPUT:-/tmp}
45 |
46 | rm -rf $PKG
47 | mkdir -p $TMP $PKG $OUTPUT
48 | cd $TMP
49 | rm -rf $PKGNAM-$VERSION
50 | tar xvf $CWD/pkg/$PKGNAM-$VERSION.tar.gz
51 | cd $PKGNAM-$VERSION
52 |
53 | ruby setup.rb config \
54 | --prefix=/usr \
55 | --sysconfdir=/etc \
56 | --mandir=/usr/man
57 | ruby setup.rb install \
58 | --prefix=$PKG
59 |
60 | mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
61 | cp -a README.rdoc examples $PKG/usr/doc/$PKGNAM-$VERSION/
62 | cat $CWD/$PKGNAM.SlackBuild > $PKG/usr/doc/$PKGNAM-$VERSION/$PKGNAM.SlackBuild
63 |
64 | find $PKG/usr/man -type f -exec gzip -9 {} \;
65 | for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
66 |
67 | mkdir -p $PKG/install
68 | cat $CWD/slack-desc > $PKG/install/slack-desc
69 |
70 | cd $PKG
71 | /sbin/makepkg -p -l y -c n ${OUTPUT}/${PKGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.${PKGTYPE:-tgz}
72 |
--------------------------------------------------------------------------------
/slack-utils.gemspec:
--------------------------------------------------------------------------------
1 |
2 | $LOAD_PATH.insert(0,File.expand_path('../lib',__FILE__))
3 |
4 | require 'slackware/version'
5 |
6 | Gem::Specification.new do |s|
7 | s.name = %q{slack-utils}
8 | s.version = Slackware::UTILS_VERSION
9 | s.authors = ["Vincent Batts"]
10 | s.email = %q{vbatts@hashbangbash.com}
11 | s.homepage = %q{https://github.com/vbatts/slack-utils/}
12 | s.summary = %q{Accessing information for the Slackware Linux distribution}
13 | s.description = %q{ slack-utils is a means by which to access
14 | package information on the Slackware Linux OS.
15 | See the examples/ for more information.
16 | }
17 | s.files = %w{
18 | README.rdoc
19 | bin/slf
20 | bin/slt
21 | bin/slp
22 | bin/slo
23 | bin/sll
24 | bin/sli
25 | bin/slu
26 | bin/slfindlinked
27 | examples/list_packages.rb
28 | examples/repo_difference.rb
29 | examples/before_then.rb
30 | examples/repo.rb
31 | lib/slackware.rb
32 | lib/slackware/utils.rb
33 | lib/slackware/args.rb
34 | lib/slackware/changelog.rb
35 | lib/slackware/changelog/rss.rb
36 | lib/slackware/log.rb
37 | lib/slackware/package.rb
38 | lib/slackware/package_bundle.rb
39 | lib/slackware/paths.rb
40 | lib/slackware/repo.rb
41 | lib/slackware/version.rb
42 | lib/slackware/system.rb
43 | }
44 | s.executables = %w{ sli slf slo sll slp slt slu slfindlinked }
45 | s.require_paths = %w{ lib }
46 | s.has_rdoc = true
47 | s.extra_rdoc_files = %w{ README.rdoc }
48 | s.rdoc_options = ["--main=README.rdoc", "--line-numbers", "--inline-source", "--title=Slackware utils (#{s.name}) #{s.version} Documentation"]
49 | #s.add_dependency("")
50 | #s.test_files
51 | end
52 |
--------------------------------------------------------------------------------
/test/samples/ChangeLog.txt:
--------------------------------------------------------------------------------
1 | Thu Jul 14 21:34:41 UTC 2011
2 | l/seamonkey-solibs-2.2-i486-1.txz: Upgraded.
3 | This update contains security fixes and improvements.
4 | For more information, see:
5 | http://www.mozilla.org/security/announce/
6 | (* Security fix *)
7 | xap/mozilla-firefox-5.0.1-i486-1.txz: Upgraded.
8 | I guess this is only a fix for Mac OS X, but it's still 0.0.1 better. ;-)
9 | xap/mozilla-thunderbird-5.0-i486-1.txz: Upgraded.
10 | Thanks to dolphin77 for some hints about the ./configure options.
11 | xap/seamonkey-2.2-i486-1.txz: Upgraded.
12 | This update contains security fixes and improvements.
13 | For more information, see:
14 | http://www.mozilla.org/security/announce/
15 | (* Security fix *)
16 | +--------------------------+
17 | Fri Jul 8 16:55:13 UTC 2011
18 | n/bind-9.7.3_P3-i486-1.txz: Upgraded.
19 | A specially constructed packet will cause BIND 9 ("named") to exit,
20 | affecting DNS service. The issue exists in BIND 9.6.3 and newer.
21 | "Change #2912 (see CHANGES) exposed a latent bug in the DNS message
22 | processing code that could allow certain UPDATE requests to crash
23 | named. This was fixed by disambiguating internal database
24 | representation vs DNS wire format data. [RT #24777] [CVE-2011-2464]"
25 | For more information, see:
26 | http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-2464
27 | (* Security fix *)
28 | xap/mozilla-thunderbird-3.1.11-i486-1.txz: Upgraded.
29 | This release contains security fixes and improvements.
30 | For more information, see:
31 | http://www.mozilla.org/security/known-vulnerabilities/thunderbird30.html
32 | (* Security fix *)
33 | +--------------------------+
34 | Tue Jun 28 18:19:47 UTC 2011
35 | ap/ghostscript-9.02-i486-2.txz: Rebuilt.
36 | Provide pstoraster -> gstoraster symlink.
37 | Include latest History file, but not all the old ones.
38 | Is this ready for 13.37/patches now?
39 | +--------------------------+
40 | Mon Jun 27 21:29:54 UTC 2011
41 | n/gnutls-2.12.7-i486-1.txz: Upgraded.
42 | xap/pidgin-2.9.0-i486-1.txz: Upgraded.
43 | Fixed a remote denial of service. A remote attacker could set a specially
44 | crafted GIF file as their buddy icon causing vulerable versions of pidgin
45 | to crash due to excessive memory use.
46 | For more information, see:
47 | http://pidgin.im/news/security/?id=52
48 | http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-2485
49 | (* Security fix *)
50 | +--------------------------+
51 | Fri Jun 24 02:55:39 UTC 2011
52 | ap/ghostscript-9.02-i486-1.txz: Upgraded.
53 | I welcome reports about how well this version of ghostscript works compared
54 | with the 9.00 that shipped in Slackware 13.37. If it fixes important bugs
55 | without regressions, then it might be considered as a patch for 13.37.
56 | l/jre-6u26-i586-1.txz: Upgraded.
57 | xap/mozilla-firefox-5.0-i486-1.txz: Upgraded.
58 | This release contains security fixes and improvements.
59 | For more information, see:
60 | http://www.mozilla.org/security/known-vulnerabilities/firefox.html
61 | (* Security fix *)
62 | extra/jdk-6/jdk-6u26-i586-1.txz: Upgraded.
63 | +--------------------------+
64 | Mon Jun 20 04:09:11 UTC 2011
65 | n/getmail-4.20.3-i486-1.txz: Upgraded.
66 | n/fetchmail-6.3.20-i486-1.txz: Upgraded.
67 | This release fixes a denial of service in STARTTLS protocol phases.
68 | For more information, see:
69 | http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-1947
70 | http://www.fetchmail.info/fetchmail-SA-2011-01.txt
71 | (* Security fix *)
72 | l/seamonkey-solibs-2.1-i486-1.txz: Upgraded.
73 | xap/seamonkey-2.1-i486-1.txz: Upgraded.
74 | +--------------------------+
75 | Sat May 28 19:28:21 UTC 2011
76 | a/file-5.07-i486-1.txz: Upgraded.
77 | d/gcc-4.5.3-i486-2.txz: Rebuilt.
78 | d/gcc-g++-4.5.3-i486-2.txz: Rebuilt.
79 | d/gcc-gfortran-4.5.3-i486-2.txz: Rebuilt.
80 | d/gcc-gnat-4.5.3-i486-2.txz: Rebuilt.
81 | d/gcc-java-4.5.3-i486-2.txz: Rebuilt.
82 | d/gcc-objc-4.5.3-i486-2.txz: Rebuilt.
83 | Added --enable-objc-gc option to enable Objective-C garbage collection.
84 | Thanks to Luca De Pandis.
85 | +--------------------------+
86 | Fri May 27 22:56:00 UTC 2011
87 | n/bind-9.7.3_P1-i486-1.txz: Upgraded.
88 | This release fixes security issues:
89 | * A large RRSET from a remote authoritative server that results in
90 | the recursive resolver trying to negatively cache the response can
91 | hit an off by one code error in named, resulting in named crashing.
92 | [RT #24650] [CVE-2011-1910]
93 | * Zones that have a DS record in the parent zone but are also listed
94 | in a DLV and won't validate without DLV could fail to validate. [RT
95 | #24631]
96 | For more information, see:
97 | http://www.isc.org/software/bind/advisories/cve-2011-1910
98 | http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-1910
99 | (* Security fix *)
100 | +--------------------------+
101 | Wed May 25 20:03:16 UTC 2011
102 | a/cxxlibs-6.0.14-i486-2.txz: Rebuilt.
103 | a/glibc-solibs-2.13-i486-5.txz: Rebuilt.
104 | a/glibc-zoneinfo-2.13-noarch-5.txz: Rebuilt.
105 | Upgraded to tzcode2011g and tzdata2011g.
106 | a/kernel-firmware-2.6.38.7-noarch-1.txz: Upgraded.
107 | a/kernel-generic-2.6.38.7-i486-1.txz: Upgraded.
108 | a/kernel-generic-smp-2.6.38.7_smp-i686-1.txz: Upgraded.
109 | a/kernel-huge-2.6.38.7-i486-1.txz: Upgraded.
110 | a/kernel-huge-smp-2.6.38.7_smp-i686-1.txz: Upgraded.
111 | a/kernel-modules-2.6.38.7-i486-1.txz: Upgraded.
112 | a/kernel-modules-smp-2.6.38.7_smp-i686-1.txz: Upgraded.
113 | ap/linuxdoc-tools-0.9.66-i486-9.txz: Rebuilt.
114 | ap/nano-2.3.1-i486-1.txz: Upgraded.
115 | d/gcc-4.5.3-i486-1.txz: Upgraded.
116 | d/gcc-g++-4.5.3-i486-1.txz: Upgraded.
117 | d/gcc-gfortran-4.5.3-i486-1.txz: Upgraded.
118 | d/gcc-gnat-4.5.3-i486-1.txz: Upgraded.
119 | d/gcc-java-4.5.3-i486-1.txz: Upgraded.
120 | d/gcc-objc-4.5.3-i486-1.txz: Upgraded.
121 | d/git-1.7.5.1-i486-1.txz: Upgraded.
122 | d/kernel-headers-2.6.38.7_smp-x86-1.txz: Upgraded.
123 | d/perl-5.14.0-i486-1.txz: Upgraded.
124 | d/subversion-1.6.16-i486-2.txz: Rebuilt.
125 | k/kernel-source-2.6.38.7_smp-noarch-1.txz: Upgraded.
126 | These are the main configuration changes from the 2.6.37.6 kernel in 13.37:
127 | BLK_DEV_LOOP y -> m
128 | HIGHMEM4G y -> n
129 | HIGHMEM64G n -> y
130 | LOG_BUF_SHIFT 15 -> 18
131 | M686 y -> n
132 | MPENTIUMIII n -> y
133 | MOUSE_PS2_ELANTECH n -> y
134 | And, compared with the 2.6.38.4 kernel in 13.37/testing:
135 | LOG_BUF_SHIFT 15 -> 18
136 | M686 y -> n
137 | MPENTIUMIII n -> y
138 | PREEMPT_NONE y -> n
139 | PREEMPT_VOLUNTARY n -> y
140 | SCHED_AUTOGROUP y -> n
141 | It remains to be seen where the PREEMPT_* options will settle in the future.
142 | SCHED_AUTOGROUP still seems sketchy to me, and might be behind some odd
143 | clockskew issues. And, thanks to Carl Wenninger for reporting that the
144 | LOG_BUF_SHIFT setting was less than the kernel defaults and was leading to
145 | a few missing lines at the beginning of 'dmesg' output.
146 | kde/kdebindings-4.5.5-i486-3.txz: Rebuilt.
147 | l/apr-1.4.5-i486-1.txz: Upgraded.
148 | This fixes a possible denial of service due to a problem with a loop in
149 | the new apr_fnmatch() implementation consuming CPU.
150 | For more information, see:
151 | http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-1928
152 | (* Security fix *)
153 | l/apr-util-1.3.12-i486-1.txz: Upgraded.
154 | Fix crash because of NULL cleanup registered by apr_ldap_rebind_init().
155 | l/glibc-2.13-i486-5.txz: Rebuilt.
156 | l/glibc-i18n-2.13-i486-5.txz: Rebuilt.
157 | l/glibc-profile-2.13-i486-5.txz: Rebuilt.
158 | l/libidn-1.22-i486-1.txz: Upgraded.
159 | l/pilot-link-0.12.5-i486-4.txz: Rebuilt.
160 | l/virtuoso-ose-6.1.2-i486-2.txz: Rebuilt.
161 | n/gnutls-2.12.5-i486-1.txz: Upgraded.
162 | n/httpd-2.2.19-i486-1.txz: Upgraded.
163 | Revert ABI breakage in 2.2.18 caused by the function signature change
164 | of ap_unescape_url_keep2f(). This release restores the signature from
165 | 2.2.17 and prior, and introduces ap_unescape_url_keep2f_ex().
166 | Apache httpd-2.2.18 is considered abandoned. All users must upgrade.
167 | n/irssi-0.8.15-i486-4.txz: Rebuilt.
168 | n/net-snmp-5.6.1-i486-2.txz: Rebuilt.
169 | n/ntp-4.2.6p3-i486-2.txz: Rebuilt.
170 | n/obexftp-0.23-i486-6.txz: Rebuilt.
171 | x/libdrm-2.4.25-i486-1.txz: Upgraded.
172 | x/mesa-7.10.2-i486-1.txz: Upgraded.
173 | x/xf86-video-nouveau-git_20110515_8378443-i486-1.txz: Upgraded.
174 | xap/gv-3.7.2-i486-1.txz: Upgraded.
175 | xap/imagemagick-6.6.9_8-i486-1.txz: Upgraded.
176 | xap/pidgin-2.7.11-i486-2.txz: Rebuilt.
177 | xap/xchat-2.8.8-i486-4.txz: Rebuilt.
178 | isolinux/initrd.img: Rebuilt.
179 | kernels/*: Rebuilt.
180 | usb-and-pxe-installers/usbboot.img: Rebuilt.
181 | extra/linux-2.6.38.7-nosmp-sdk/*: Rebuilt.
182 | +--------------------------+
183 | Fri May 13 20:30:07 UTC 2011
184 | l/apr-1.4.4-i486-1.txz: Upgraded.
185 | This fixes a possible denial of service due to an unconstrained, recursive
186 | invocation of apr_fnmatch(). This function has been reimplemented using a
187 | non-recursive algorithm. Thanks to William Rowe.
188 | For more information, see:
189 | http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-0419
190 | (* Security fix *)
191 | l/apr-util-1.3.11-i486-1.txz: Upgraded.
192 | n/httpd-2.2.18-i486-1.txz: Upgraded.
193 | This is a bug fix release, but since the upgrades to apr/apr-util require at
194 | least an httpd recompile we opted to upgrade to the newest httpd.
195 | +--------------------------+
196 | Thu May 5 23:23:20 UTC 2011
197 | a/coreutils-8.12-i486-1.txz: Upgraded.
198 | +--------------------------+
199 | Mon May 2 20:20:50 UTC 2011
200 | xap/mozilla-firefox-4.0.1-i486-1.txz: Upgraded.
201 | This release contains security fixes and improvements.
202 | For more information, see:
203 | http://www.mozilla.org/security/known-vulnerabilities/firefox40.html
204 | (* Security fix *)
205 | xap/mozilla-thunderbird-3.1.10-i486-1.txz: Upgraded.
206 | This release contains security fixes and improvements.
207 | For more information, see:
208 | http://www.mozilla.org/security/known-vulnerabilities/thunderbird31.html
209 | (* Security fix *)
210 | +--------------------------+
211 | Mon Apr 25 13:37:00 UTC 2011
212 | Slackware 13.37 x86 stable is released!
213 |
214 | Thanks to everyone who pitched in on this release: the Slackware team,
215 | the folks producing upstream code, and linuxquestions.org for providing
216 | a great forum for collaboration and testing.
217 |
218 | The ISOs are off to be replicated, a 6 CD-ROM 32-bit set and a dual-sided
219 | 32-bit/64-bit x86/x86_64 DVD. Please consider supporting the Slackware
220 | project by picking up a copy from store.slackware.com. We're taking
221 | pre-orders now, and offer a discount if you sign up for a subscription.
222 |
223 | As always, thanks to the Slackware community for testing, suggestions,
224 | and feedback. :-)
225 |
226 | Have fun!
227 | +--------------------------+
228 |
--------------------------------------------------------------------------------
/test/samples/etc/slackware-version:
--------------------------------------------------------------------------------
1 | Slackware 13.37.314159
2 |
--------------------------------------------------------------------------------
/test/samples/slackware-security.eml:
--------------------------------------------------------------------------------
1 |
2 | Delivered-To: vbatts@gmail.com
3 | Received: by 10.182.208.104 with SMTP id md8cs113312obc;
4 | Fri, 10 Feb 2012 10:51:37 -0800 (PST)
5 | Received: by 10.68.190.101 with SMTP id gp5mr18775734pbc.31.1328899893895;
6 | Fri, 10 Feb 2012 10:51:33 -0800 (PST)
7 | Return-Path:
8 | Received: from bob.slackware.com (slackware.com. [64.57.102.34])
9 | by mx.google.com with ESMTPS id y4si3642307pbb.58.2012.02.10.10.51.23
10 | (version=TLSv1/SSLv3 cipher=OTHER);
11 | Fri, 10 Feb 2012 10:51:33 -0800 (PST)
12 | Received-SPF: pass (google.com: best guess record for domain of owner-slackware-security@slackware.com designates 64.57.102.34 as permitted sender) client-ip=64.57.102.34;
13 | Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of owner-slackware-security@slackware.com designates 64.57.102.34 as permitted sender) smtp.mail=owner-slackware-security@slackware.com
14 | Received: from bob.slackware.com (IDENT:2@localhost [127.0.0.1])
15 | by bob.slackware.com (8.13.7/8.13.7) with ESMTP id q1AIpJDr014549;
16 | Fri, 10 Feb 2012 10:51:19 -0800
17 | Received: from localhost (daemon@localhost)
18 | by bob.slackware.com (8.13.7/8.12.9/Submit) with SMTP id q1AIpI5W014541;
19 | Fri, 10 Feb 2012 10:51:18 -0800
20 | Received: by bob.slackware.com (bulk_mailer v1.13); Fri, 10 Feb 2012 09:45:37 -0800
21 | Received: from bob.slackware.com (IDENT:2@localhost [127.0.0.1])
22 | by bob.slackware.com (8.13.7/8.13.7) with ESMTP id q1AHja9E006440;
23 | Fri, 10 Feb 2012 09:45:36 -0800
24 | Received: (from daemon@localhost)
25 | by bob.slackware.com (8.13.7/8.12.9/Submit) id q1AHjajG006439;
26 | Fri, 10 Feb 2012 09:45:36 -0800
27 | Received: from bob.slackware.com (IDENT:25@localhost [127.0.0.1])
28 | by bob.slackware.com (8.13.7/8.13.7) with ESMTP id q1AHjamH006435
29 | for ; Fri, 10 Feb 2012 09:45:36 -0800
30 | Received: (from root@localhost)
31 | by bob.slackware.com (8.13.7/8.12.9/Submit) id q1AHjaec006434
32 | for slackware-security@slackware.com; Fri, 10 Feb 2012 09:45:36 -0800
33 | Received: from bob.slackware.com (IDENT:3334@localhost [127.0.0.1])
34 | by bob.slackware.com (8.13.7/8.13.7) with ESMTP id q1AHiFi9006334
35 | for ; Fri, 10 Feb 2012 09:44:15 -0800
36 | Received: from localhost (security@localhost)
37 | by bob.slackware.com (8.13.7/8.12.9/Submit) with ESMTP id q1AHiFfk006330
38 | for ; Fri, 10 Feb 2012 09:44:15 -0800
39 | X-Authentication-Warning: bob.slackware.com: security owned process doing -bs
40 | Date: Fri, 10 Feb 2012 09:44:15 -0800 (PST)
41 | From: Slackware Security Team
42 | To: slackware-security@slackware.com
43 | Subject: [slackware-security] php (SSA:2012-041-02)
44 | Message-ID:
45 | User-Agent: Alpine 1.10 (LNX 962 2008-03-14)
46 | MIME-Version: 1.0
47 | Content-Type: TEXT/PLAIN; charset=US-ASCII
48 | Sender: owner-slackware-security@slackware.com
49 | Reply-To: Slackware Security Team
50 |
51 |
52 | -----BEGIN PGP SIGNED MESSAGE-----
53 | Hash: SHA1
54 |
55 | [slackware-security] php (SSA:2012-041-02)
56 |
57 | New php packages are available for Slackware 12.0, 12.1, 12.2, 13.0, 13.1,
58 | 13.37, and -current to fix security issues.
59 |
60 |
61 | Here are the details from the Slackware 13.37 ChangeLog:
62 | +--------------------------+
63 | patches/packages/php-5.3.10-i486-1_slack13.37.txz: Upgraded.
64 | Fixed arbitrary remote code execution vulnerability reported by Stefan
65 | Esser, CVE-2012-0830. (Stas, Dmitry)
66 | For more information, see:
67 | http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-0830
68 | (* Security fix *)
69 | +--------------------------+
70 |
71 |
72 | Where to find the new packages:
73 | +-----------------------------+
74 |
75 | Thanks to the friendly folks at the OSU Open Source Lab
76 | (http://osuosl.org) for donating FTP and rsync hosting
77 | to the Slackware project! :-)
78 |
79 | Also see the "Get Slack" section on http://slackware.com for
80 | additional mirror sites near you.
81 |
82 | Updated package for Slackware 12.0:
83 | ftp://ftp.slackware.com/pub/slackware/slackware-12.0/patches/packages/php-5.3.10-i486-1_slack12.0.tgz
84 |
85 | Updated package for Slackware 12.1:
86 | ftp://ftp.slackware.com/pub/slackware/slackware-12.1/patches/packages/php-5.3.10-i486-1_slack12.1.tgz
87 |
88 | Updated package for Slackware 12.2:
89 | ftp://ftp.slackware.com/pub/slackware/slackware-12.2/patches/packages/php-5.3.10-i486-1_slack12.2.tgz
90 |
91 | Updated package for Slackware 13.0:
92 | ftp://ftp.slackware.com/pub/slackware/slackware-13.0/patches/packages/php-5.3.10-i486-1_slack13.0.txz
93 |
94 | Updated package for Slackware x86_64 13.0:
95 | ftp://ftp.slackware.com/pub/slackware/slackware64-13.0/patches/packages/php-5.3.10-x86_64-1_slack13.0.txz
96 |
97 | Updated package for Slackware 13.1:
98 | ftp://ftp.slackware.com/pub/slackware/slackware-13.1/patches/packages/php-5.3.10-i486-1_slack13.1.txz
99 |
100 | Updated package for Slackware x86_64 13.1:
101 | ftp://ftp.slackware.com/pub/slackware/slackware64-13.1/patches/packages/php-5.3.10-x86_64-1_slack13.1.txz
102 |
103 | Updated package for Slackware 13.37:
104 | ftp://ftp.slackware.com/pub/slackware/slackware-13.37/patches/packages/php-5.3.10-i486-1_slack13.37.txz
105 |
106 | Updated package for Slackware x86_64 13.37:
107 | ftp://ftp.slackware.com/pub/slackware/slackware64-13.37/patches/packages/php-5.3.10-x86_64-1_slack13.37.txz
108 |
109 | Updated package for Slackware -current:
110 | ftp://ftp.slackware.com/pub/slackware/slackware-current/slackware/n/php-5.3.10-i486-1.txz
111 |
112 | Updated package for Slackware x86_64 -current:
113 | ftp://ftp.slackware.com/pub/slackware/slackware64-current/slackware64/n/php-5.3.10-x86_64-1.txz
114 |
115 |
116 | MD5 signatures:
117 | +-------------+
118 |
119 | Slackware 12.0 package:
120 | bf5512a57e0e7ba3c9d836636f056036 php-5.3.10-i486-1_slack12.0.tgz
121 |
122 | Slackware 12.1 package:
123 | 474400e31f8701a07aa97aeee956226e php-5.3.10-i486-1_slack12.1.tgz
124 |
125 | Slackware 12.2 package:
126 | f359c739e8db9130806c3cb256990804 php-5.3.10-i486-1_slack12.2.tgz
127 |
128 | Slackware 13.0 package:
129 | 5b38767541b0367dd64539537ca3cfc5 php-5.3.10-i486-1_slack13.0.txz
130 |
131 | Slackware x86_64 13.0 package:
132 | bcccb9fdde0e548d999447b352f4b322 php-5.3.10-x86_64-1_slack13.0.txz
133 |
134 | Slackware 13.1 package:
135 | 7bdee84117e3cd1ac8e6087d9c936355 php-5.3.10-i486-1_slack13.1.txz
136 |
137 | Slackware x86_64 13.1 package:
138 | 2d05770a236fdc52754e1ba9d657d6d7 php-5.3.10-x86_64-1_slack13.1.txz
139 |
140 | Slackware 13.37 package:
141 | 7555e89aa4dc5a6b68c2fcfd1b8a6dc3 php-5.3.10-i486-1_slack13.37.txz
142 |
143 | Slackware x86_64 13.37 package:
144 | cf6a47e0046b13b2adba13466b3b5e7e php-5.3.10-x86_64-1_slack13.37.txz
145 |
146 | Slackware -current package:
147 | 1191d7d49f21f0dba3c4f35cc19e6b88 n/php-5.3.10-i486-1.txz
148 |
149 | Slackware x86_64 -current package:
150 | 25a12f2407be6f03ff1dc50ad1b3c80b n/php-5.3.10-x86_64-1.txz
151 |
152 |
153 | Installation instructions:
154 | +------------------------+
155 |
156 | Upgrade the package as root:
157 | # upgradepkg php-5.3.10-i486-1_slack13.37.txz
158 |
159 | Then, restart the httpd daemon.
160 |
161 |
162 | +-----+
163 |
164 | Slackware Linux Security Team
165 | http://slackware.com/gpg-key
166 | security@slackware.com
167 |
168 | +------------------------------------------------------------------------+
169 | | To leave the slackware-security mailing list: |
170 | +------------------------------------------------------------------------+
171 | | Send an email to majordomo@slackware.com with this text in the body of |
172 | | the email message: |
173 | | |
174 | | unsubscribe slackware-security |
175 | | |
176 | | You will get a confirmation message back containing instructions to |
177 | | complete the process. Please do not reply to this email address. |
178 | +------------------------------------------------------------------------+
179 | -----BEGIN PGP SIGNATURE-----
180 | Version: GnuPG v1.4.11 (GNU/Linux)
181 |
182 | iEYEARECAAYFAk81VdsACgkQakRjwEAQIjOXUwCfezXUNa574h+RebDKgoGHoWoF
183 | ofoAniEEEENlY4sa2T1+N8KKJPS23J4D
184 | =gwHE
185 | -----END PGP SIGNATURE-----
186 |
--------------------------------------------------------------------------------
/test/samples/var/log/packages/bash-4.1.010-x86_64-1:
--------------------------------------------------------------------------------
1 | PACKAGE NAME: bash-4.1.010-x86_64-1
2 | COMPRESSED PACKAGE SIZE: 4K
3 | UNCOMPRESSED PACKAGE SIZE: 3770K
4 | PACKAGE LOCATION: ./bash-4.1.010-x86_64-1.txz
5 | PACKAGE DESCRIPTION:
6 | bash: bash (sh-compatible shell)
7 | bash:
8 | bash: The GNU Bourne-Again SHell. Bash is a sh-compatible command
9 | bash: interpreter that executes commands read from the standard input or
10 | bash: from a file. Bash also incorporates useful features from the Korn
11 | bash: and C shells (ksh and csh). Bash is ultimately intended to be a
12 | bash: conformant implementation of the IEEE Posix Shell and Tools
13 | bash: specification (IEEE Working Group 1003.2).
14 | bash:
15 | bash: Bash must be present for the system to boot properly.
16 | bash:
17 | FILE LIST:
18 | ./
19 | install/
20 | install/slack-desc
21 | install/doinst.sh
22 | bin/
23 | bin/bash4.new
24 | usr/
25 | usr/man/
26 | usr/man/man1/
27 | usr/man/man1/bash.1.gz
28 | usr/man/man1/rbash.1.gz
29 | usr/man/man1/builtins.1.gz
30 | usr/info/
31 | usr/info/bash.info.gz
32 | usr/doc/
33 | usr/doc/bash-4.1/
34 | usr/doc/bash-4.1/article.txt
35 | usr/doc/bash-4.1/CHANGES
36 | usr/doc/bash-4.1/Y2K
37 | usr/doc/bash-4.1/INSTALL
38 | usr/doc/bash-4.1/NOTES
39 | usr/doc/bash-4.1/INTRO
40 | usr/doc/bash-4.1/README
41 | usr/doc/bash-4.1/NEWS
42 | usr/doc/bash-4.1/MANIFEST
43 | usr/doc/bash-4.1/COPYING
44 | usr/doc/bash-4.1/ChangeLog
45 | usr/doc/bash-4.1/COMPAT
46 | usr/doc/bash-4.1/AUTHORS
47 | usr/doc/bash-4.1/FAQ
48 | usr/share/
49 | usr/share/locale/
50 | usr/share/locale/id/
51 | usr/share/locale/id/LC_MESSAGES/
52 | usr/share/locale/id/LC_MESSAGES/bash.mo
53 | usr/share/locale/sk/
54 | usr/share/locale/sk/LC_MESSAGES/
55 | usr/share/locale/sk/LC_MESSAGES/bash.mo
56 | usr/share/locale/fr/
57 | usr/share/locale/fr/LC_MESSAGES/
58 | usr/share/locale/fr/LC_MESSAGES/bash.mo
59 | usr/share/locale/hu/
60 | usr/share/locale/hu/LC_MESSAGES/
61 | usr/share/locale/hu/LC_MESSAGES/bash.mo
62 | usr/share/locale/zh_TW/
63 | usr/share/locale/zh_TW/LC_MESSAGES/
64 | usr/share/locale/zh_TW/LC_MESSAGES/bash.mo
65 | usr/share/locale/ja/
66 | usr/share/locale/ja/LC_MESSAGES/
67 | usr/share/locale/ja/LC_MESSAGES/bash.mo
68 | usr/share/locale/ga/
69 | usr/share/locale/ga/LC_MESSAGES/
70 | usr/share/locale/ga/LC_MESSAGES/bash.mo
71 | usr/share/locale/tr/
72 | usr/share/locale/tr/LC_MESSAGES/
73 | usr/share/locale/tr/LC_MESSAGES/bash.mo
74 | usr/share/locale/eo/
75 | usr/share/locale/eo/LC_MESSAGES/
76 | usr/share/locale/eo/LC_MESSAGES/bash.mo
77 | usr/share/locale/pt_BR/
78 | usr/share/locale/pt_BR/LC_MESSAGES/
79 | usr/share/locale/pt_BR/LC_MESSAGES/bash.mo
80 | usr/share/locale/de/
81 | usr/share/locale/de/LC_MESSAGES/
82 | usr/share/locale/de/LC_MESSAGES/bash.mo
83 | usr/share/locale/cs/
84 | usr/share/locale/cs/LC_MESSAGES/
85 | usr/share/locale/cs/LC_MESSAGES/bash.mo
86 | usr/share/locale/es/
87 | usr/share/locale/es/LC_MESSAGES/
88 | usr/share/locale/es/LC_MESSAGES/bash.mo
89 | usr/share/locale/et/
90 | usr/share/locale/et/LC_MESSAGES/
91 | usr/share/locale/et/LC_MESSAGES/bash.mo
92 | usr/share/locale/vi/
93 | usr/share/locale/vi/LC_MESSAGES/
94 | usr/share/locale/vi/LC_MESSAGES/bash.mo
95 | usr/share/locale/bg/
96 | usr/share/locale/bg/LC_MESSAGES/
97 | usr/share/locale/bg/LC_MESSAGES/bash.mo
98 | usr/share/locale/nl/
99 | usr/share/locale/nl/LC_MESSAGES/
100 | usr/share/locale/nl/LC_MESSAGES/bash.mo
101 | usr/share/locale/fi/
102 | usr/share/locale/fi/LC_MESSAGES/
103 | usr/share/locale/fi/LC_MESSAGES/bash.mo
104 | usr/share/locale/ru/
105 | usr/share/locale/ru/LC_MESSAGES/
106 | usr/share/locale/ru/LC_MESSAGES/bash.mo
107 | usr/share/locale/ro/
108 | usr/share/locale/ro/LC_MESSAGES/
109 | usr/share/locale/ro/LC_MESSAGES/bash.mo
110 | usr/share/locale/ca/
111 | usr/share/locale/ca/LC_MESSAGES/
112 | usr/share/locale/ca/LC_MESSAGES/bash.mo
113 | usr/share/locale/en@boldquot/
114 | usr/share/locale/en@boldquot/LC_MESSAGES/
115 | usr/share/locale/en@boldquot/LC_MESSAGES/bash.mo
116 | usr/share/locale/lt/
117 | usr/share/locale/lt/LC_MESSAGES/
118 | usr/share/locale/lt/LC_MESSAGES/bash.mo
119 | usr/share/locale/af/
120 | usr/share/locale/af/LC_MESSAGES/
121 | usr/share/locale/af/LC_MESSAGES/bash.mo
122 | usr/share/locale/pl/
123 | usr/share/locale/pl/LC_MESSAGES/
124 | usr/share/locale/pl/LC_MESSAGES/bash.mo
125 | usr/share/locale/sv/
126 | usr/share/locale/sv/LC_MESSAGES/
127 | usr/share/locale/sv/LC_MESSAGES/bash.mo
128 | usr/share/locale/en@quot/
129 | usr/share/locale/en@quot/LC_MESSAGES/
130 | usr/share/locale/en@quot/LC_MESSAGES/bash.mo
131 |
--------------------------------------------------------------------------------
/test/samples/var/log/packages/bash-completion-1.3-noarch-4:
--------------------------------------------------------------------------------
1 | PACKAGE NAME: bash-completion-1.3-noarch-4
2 | COMPRESSED PACKAGE SIZE: 120K
3 | UNCOMPRESSED PACKAGE SIZE: 770K
4 | PACKAGE LOCATION: ./bash-completion-1.3-noarch-4.txz
5 | PACKAGE DESCRIPTION:
6 | bash-completion: bash-completion (programmable completion for the bash shell)
7 | bash-completion:
8 | bash-completion: Adds programmable completion to the bash shell. A new file called
9 | bash-completion: /etc/bash_completion will be sourced for interactive bash shells
10 | bash-completion: adding all sorts of enhanced command completion features. Once
11 | bash-completion: installed, you may get a list of all commands that have associated
12 | bash-completion: completions with 'complete -p', and examine the code for the shell
13 | bash-completion: functions with 'declare -f'.
14 | bash-completion:
15 | bash-completion: Homepage: https://alioth.debian.org/projects/bash-completion/
16 | bash-completion:
17 | FILE LIST:
18 | ./
19 | install/
20 | install/slack-desc
21 | usr/
22 | usr/doc/
23 | usr/doc/bash-completion-1.3/
24 | usr/doc/bash-completion-1.3/TODO
25 | usr/doc/bash-completion-1.3/CHANGES
26 | usr/doc/bash-completion-1.3/README
27 | usr/doc/bash-completion-1.3/COPYING
28 | usr/doc/bash-completion-1.3/contrib/
29 | usr/doc/bash-completion-1.3/contrib/sbopkg
30 | usr/doc/bash-completion-1.3/contrib/slapt
31 | usr/doc/bash-completion-1.3/contrib/slackpkg
32 | usr/doc/bash-completion-1.3/contrib/rpm2tgz
33 | usr/doc/bash-completion-1.3/contrib/pkgtools
34 | usr/doc/bash-completion-1.3/AUTHORS
35 | etc/
36 | etc/bash_completion.d/
37 | etc/bash_completion.d/perl
38 | etc/bash_completion.d/e2fsprogs
39 | etc/bash_completion.d/lvm
40 | etc/bash_completion.d/k3b
41 | etc/bash_completion.d/man
42 | etc/bash_completion.d/rsync
43 | etc/bash_completion.d/heimdal
44 | etc/bash_completion.d/quota-tools
45 | etc/bash_completion.d/aptitude
46 | etc/bash_completion.d/rdesktop
47 | etc/bash_completion.d/apache2ctl
48 | etc/bash_completion.d/sysv-rc
49 | etc/bash_completion.d/cardctl
50 | etc/bash_completion.d/ifupdown
51 | etc/bash_completion.d/info
52 | etc/bash_completion.d/gpg2
53 | etc/bash_completion.d/ssh
54 | etc/bash_completion.d/apt-build
55 | etc/bash_completion.d/autorpm
56 | etc/bash_completion.d/hping2
57 | etc/bash_completion.d/openldap
58 | etc/bash_completion.d/open-iscsi
59 | etc/bash_completion.d/gzip
60 | etc/bash_completion.d/mount
61 | etc/bash_completion.d/mtx
62 | etc/bash_completion.d/rcs
63 | etc/bash_completion.d/sysbench
64 | etc/bash_completion.d/gcl
65 | etc/bash_completion.d/python
66 | etc/bash_completion.d/dhclient
67 | etc/bash_completion.d/ri
68 | etc/bash_completion.d/xm
69 | etc/bash_completion.d/lsof
70 | etc/bash_completion.d/iptables
71 | etc/bash_completion.d/yp-tools
72 | etc/bash_completion.d/xmllint
73 | etc/bash_completion.d/sqlite3
74 | etc/bash_completion.d/rpcdebug
75 | etc/bash_completion.d/xmms
76 | etc/bash_completion.d/xrandr
77 | etc/bash_completion.d/tar
78 | etc/bash_completion.d/wireless-tools
79 | etc/bash_completion.d/iconv
80 | etc/bash_completion.d/samba
81 | etc/bash_completion.d/ncftp
82 | etc/bash_completion.d/ipmitool
83 | etc/bash_completion.d/sshfs
84 | etc/bash_completion.d/cryptsetup
85 | etc/bash_completion.d/medusa
86 | etc/bash_completion.d/larch
87 | etc/bash_completion.d/unace
88 | etc/bash_completion.d/dsniff
89 | etc/bash_completion.d/ntpdate
90 | etc/bash_completion.d/gkrellm
91 | etc/bash_completion.d/xhost
92 | etc/bash_completion.d/dict
93 | etc/bash_completion.d/lilo
94 | etc/bash_completion.d/xmlwf
95 | etc/bash_completion.d/gnatmake
96 | etc/bash_completion.d/mc
97 | etc/bash_completion.d/portupgrade
98 | etc/bash_completion.d/mdadm
99 | etc/bash_completion.d/gdb
100 | etc/bash_completion.d/module-init-tools
101 | etc/bash_completion.d/cups
102 | etc/bash_completion.d/chkconfig
103 | etc/bash_completion.d/ipv6calc
104 | etc/bash_completion.d/rtcwake
105 | etc/bash_completion.d/sh
106 | etc/bash_completion.d/mysqladmin
107 | etc/bash_completion.d/bittorrent
108 | etc/bash_completion.d/lzma
109 | etc/bash_completion.d/freerdp
110 | etc/bash_completion.d/tcpdump
111 | etc/bash_completion.d/pkg_install
112 | etc/bash_completion.d/fuse
113 | etc/bash_completion.d/xrdb
114 | etc/bash_completion.d/monodevelop
115 | etc/bash_completion.d/coreutils
116 | etc/bash_completion.d/dpkg
117 | etc/bash_completion.d/cvsps
118 | etc/bash_completion.d/vpnc
119 | etc/bash_completion.d/nmap
120 | etc/bash_completion.d/gpg
121 | etc/bash_completion.d/screen
122 | etc/bash_completion.d/mutt
123 | etc/bash_completion.d/mkinitrd
124 | etc/bash_completion.d/munin-node
125 | etc/bash_completion.d/vncviewer
126 | etc/bash_completion.d/helpers/
127 | etc/bash_completion.d/helpers/perl
128 | etc/bash_completion.d/bitkeeper
129 | etc/bash_completion.d/qemu
130 | etc/bash_completion.d/getent
131 | etc/bash_completion.d/imagemagick
132 | etc/bash_completion.d/apt
133 | etc/bash_completion.d/unrar
134 | etc/bash_completion.d/lrzip
135 | etc/bash_completion.d/automake
136 | etc/bash_completion.d/pkg-config
137 | etc/bash_completion.d/brctl
138 | etc/bash_completion.d/xz
139 | etc/bash_completion.d/aspell
140 | etc/bash_completion.d/cpan2dist
141 | etc/bash_completion.d/findutils
142 | etc/bash_completion.d/xsltproc
143 | etc/bash_completion.d/kldload
144 | etc/bash_completion.d/minicom
145 | etc/bash_completion.d/abook
146 | etc/bash_completion.d/isql
147 | etc/bash_completion.d/wtf
148 | etc/bash_completion.d/rfkill
149 | etc/bash_completion.d/bzip2
150 | etc/bash_completion.d/sitecopy
151 | etc/bash_completion.d/rpmcheck
152 | etc/bash_completion.d/postfix
153 | etc/bash_completion.d/smartctl
154 | etc/bash_completion.d/ipsec
155 | etc/bash_completion.d/ldapvi
156 | etc/bash_completion.d/wol
157 | etc/bash_completion.d/pkgtools
158 | etc/bash_completion.d/svk
159 | etc/bash_completion.d/make
160 | etc/bash_completion.d/cvs
161 | etc/bash_completion.d/dselect
162 | etc/bash_completion.d/cfengine
163 | etc/bash_completion.d/chsh
164 | etc/bash_completion.d/mailman
165 | etc/bash_completion.d/mplayer
166 | etc/bash_completion.d/crontab
167 | etc/bash_completion.d/dvd+rw-tools
168 | etc/bash_completion.d/lzop
169 | etc/bash_completion.d/iftop
170 | etc/bash_completion.d/qdbus
171 | etc/bash_completion.d/cksfv
172 | etc/bash_completion.d/java
173 | etc/bash_completion.d/ant
174 | etc/bash_completion.d/configure
175 | etc/bash_completion.d/procps
176 | etc/bash_completion.d/cowsay
177 | etc/bash_completion.d/pm-utils
178 | etc/bash_completion.d/genisoimage
179 | etc/bash_completion.d/net-tools
180 | etc/bash_completion.d/links
181 | etc/bash_completion.d/rpm
182 | etc/bash_completion.d/bluez
183 | etc/bash_completion.d/resolvconf
184 | etc/bash_completion.d/autoconf
185 | etc/bash_completion.d/lintian
186 | etc/bash_completion.d/postgresql
187 | etc/bash_completion.d/iproute2
188 | etc/bash_completion.d/pine
189 | etc/bash_completion.d/jar
190 | etc/bash_completion.d/mcrypt
191 | etc/bash_completion.d/yum-arch
192 | etc/bash_completion.d/shadow
193 | etc/bash_completion.d/sysctl
194 | etc/bash_completion.d/p4
195 | etc/bash_completion.d/povray
196 | etc/bash_completion.d/xmodmap
197 | etc/bash_completion.d/service
198 | etc/bash_completion.d/strace
199 | etc/bash_completion.d/cpio
200 | etc/bash_completion.d/wodim
201 | etc/bash_completion.d/openssl
202 | etc/bash_completion.d/reportbug
203 | etc/bash_completion.d/freeciv
204 | etc/bash_completion.d/snownews
205 | etc/bash_completion.d/clisp
206 | etc/bash_completion.d/gcc
207 | etc/bash_completion.d/bind-utils
208 | etc/bash_completion.d/msynctool
209 | etc/bash_completion.d/rrdtool
210 | etc/bash_completion.d/lftp
211 | etc/bash_completion.d/update-alternatives
212 | etc/bash_completion.d/lisp
213 | etc/bash_completion.d/sbcl
214 | etc/bash_completion.d/wvdial
215 | etc/bash_completion.d/bash-builtins
216 | etc/bash_completion.d/util-linux
217 | etc/bash_completion.d/dd
218 | etc/profile.d/
219 | etc/profile.d/bash_completion.sh
220 | etc/bash_completion
221 |
--------------------------------------------------------------------------------
/test/samples/var/log/packages/kbd-1.15.2-x86_64-1:
--------------------------------------------------------------------------------
1 | PACKAGE NAME: kbd-1.15.2-x86_64-1
2 | COMPRESSED PACKAGE SIZE: 1073K
3 | UNCOMPRESSED PACKAGE SIZE: 3410K
4 | PACKAGE LOCATION: /var/log/mount/slackware64/a/kbd-1.15.2-x86_64-1.txz
5 | PACKAGE DESCRIPTION:
6 | kbd: kbd (keyboard maps and console fonts)
7 | kbd:
8 | kbd: Load and save keyboard mappings. Needed if you are not using the US
9 | kbd: keyboard map. This package also contains utilities to change your
10 | kbd: console fonts - if you install it you'll get a menu later on that lets
11 | kbd: you select from many different fonts. If you like one, you can make
12 | kbd: it your default font. A new default font can be chosen at any time by
13 | kbd: typing 'setconsolefont'.
14 | kbd:
15 | kbd:
16 | kbd:
17 | FILE LIST:
18 | ./
19 | etc/
20 | etc/rc.d/
21 | etc/rc.d/rc.font.new
22 | bin/
23 | bin/loadkeys
24 | usr/
25 | usr/share/
26 | usr/share/kbd/
27 | usr/share/kbd/consolefonts/
28 | usr/share/kbd/consolefonts/gr928-9x16.psfu.gz
29 | usr/share/kbd/consolefonts/163.cp.gz
30 | usr/share/kbd/consolefonts/sun12x22.psfu.gz
31 | usr/share/kbd/consolefonts/t.fnt.gz
32 | usr/share/kbd/consolefonts/Goha-12.psfu.gz
33 | usr/share/kbd/consolefonts/iso07.14.gz
34 | usr/share/kbd/consolefonts/iso05.16.gz
35 | usr/share/kbd/consolefonts/iso07.16.gz
36 | usr/share/kbd/consolefonts/lat9v-08.psfu.gz
37 | usr/share/kbd/consolefonts/LatArCyrHeb-19.psfu.gz
38 | usr/share/kbd/consolefonts/m.fnt.gz
39 | usr/share/kbd/consolefonts/s.fnt.gz
40 | usr/share/kbd/consolefonts/iso10.14.gz
41 | usr/share/kbd/consolefonts/lat9u-12.psfu.gz
42 | usr/share/kbd/consolefonts/r.fnt.gz
43 | usr/share/kbd/consolefonts/README.Greek
44 | usr/share/kbd/consolefonts/iso03.14.gz
45 | usr/share/kbd/consolefonts/ruscii_8x8.psfu.gz
46 | usr/share/kbd/consolefonts/lat0-08.psfu.gz
47 | usr/share/kbd/consolefonts/lat4-16+.psfu.gz
48 | usr/share/kbd/consolefonts/lat4-14.psfu.gz
49 | usr/share/kbd/consolefonts/koi8-14.psf.gz
50 | usr/share/kbd/consolefonts/lat1-14.psfu.gz
51 | usr/share/kbd/consolefonts/lat4-10.psfu.gz
52 | usr/share/kbd/consolefonts/LatArCyrHeb-08.psfu.gz
53 | usr/share/kbd/consolefonts/lat5-14.psfu.gz
54 | usr/share/kbd/consolefonts/Mik_8x16.gz
55 | usr/share/kbd/consolefonts/drdos8x6.psfu.gz
56 | usr/share/kbd/consolefonts/iso03.16.gz
57 | usr/share/kbd/consolefonts/gr737b-9x16-medieval.psfu.gz
58 | usr/share/kbd/consolefonts/Agafari-12.psfu.gz
59 | usr/share/kbd/consolefonts/koi8r-8x16.gz
60 | usr/share/kbd/consolefonts/iso02-12x22.psfu.gz
61 | usr/share/kbd/consolefonts/mod_s.fnt.gz
62 | usr/share/kbd/consolefonts/lat9v-10.psfu.gz
63 | usr/share/kbd/consolefonts/lat5-12.psfu.gz
64 | usr/share/kbd/consolefonts/cp850-8x14.psfu.gz
65 | usr/share/kbd/consolefonts/README.Arabic
66 | usr/share/kbd/consolefonts/iso04.16.gz
67 | usr/share/kbd/consolefonts/UniCyr_8x8.psf.gz
68 | usr/share/kbd/consolefonts/lat9u-08.psfu.gz
69 | usr/share/kbd/consolefonts/README.Cyrillic
70 | usr/share/kbd/consolefonts/ml.fnt.gz
71 | usr/share/kbd/consolefonts/iso02.16.gz
72 | usr/share/kbd/consolefonts/cp850-8x16.psfu.gz
73 | usr/share/kbd/consolefonts/mod_d.fnt.gz
74 | usr/share/kbd/consolefonts/scrawl_w.fnt.gz
75 | usr/share/kbd/consolefonts/default8x16.psfu.gz
76 | usr/share/kbd/consolefonts/lat0-12.psfu.gz
77 | usr/share/kbd/consolefonts/lat1-08.psfu.gz
78 | usr/share/kbd/consolefonts/165.cp.gz
79 | usr/share/kbd/consolefonts/koi8u_8x16.psfu.gz
80 | usr/share/kbd/consolefonts/default8x9.psfu.gz
81 | usr/share/kbd/consolefonts/gr737a-8x8.psfu.gz
82 | usr/share/kbd/consolefonts/ruscii_8x16.psfu.gz
83 | usr/share/kbd/consolefonts/koi8u_8x8.psfu.gz
84 | usr/share/kbd/consolefonts/lat9-10.psf.gz
85 | usr/share/kbd/consolefonts/sc.fnt.gz
86 | usr/share/kbd/consolefonts/alt-8x16.gz
87 | usr/share/kbd/consolefonts/iso04.14.gz
88 | usr/share/kbd/consolefonts/UniCyr_8x14.psf.gz
89 | usr/share/kbd/consolefonts/Cyr_a8x8.psfu.gz
90 | usr/share/kbd/consolefonts/viscii10-8x16.psfu.gz
91 | usr/share/kbd/consolefonts/iso08.16.gz
92 | usr/share/kbd/consolefonts/iso06.08.gz
93 | usr/share/kbd/consolefonts/README.cp1250
94 | usr/share/kbd/consolefonts/lat4a-10.psfu.gz
95 | usr/share/kbd/consolefonts/cp857.16.gz
96 | usr/share/kbd/consolefonts/drdos8x8.psfu.gz
97 | usr/share/kbd/consolefonts/lat4a-12.psfu.gz
98 | usr/share/kbd/consolefonts/lat2-08.psfu.gz
99 | usr/share/kbd/consolefonts/koi8r-8x14.gz
100 | usr/share/kbd/consolefonts/iso07u-16.psfu.gz
101 | usr/share/kbd/consolefonts/gr737d-8x16.psfu.gz
102 | usr/share/kbd/consolefonts/lat4-19.psfu.gz
103 | usr/share/kbd/consolefonts/lat9u-14.psfu.gz
104 | usr/share/kbd/consolefonts/gr737c-8x7.psfu.gz
105 | usr/share/kbd/consolefonts/lat2a-16.psfu.gz
106 | usr/share/kbd/consolefonts/iso02.08.gz
107 | usr/share/kbd/consolefonts/koi8r.8x8.psfu.gz
108 | usr/share/kbd/consolefonts/gr737a-9x14.psfu.gz
109 | usr/share/kbd/consolefonts/README.Ethiopic
110 | usr/share/kbd/consolefonts/iso08.14.gz
111 | usr/share/kbd/consolefonts/arm8.fnt.gz
112 | usr/share/kbd/consolefonts/cp866-8x8.psf.gz
113 | usr/share/kbd/consolefonts/iso04.08.gz
114 | usr/share/kbd/consolefonts/lat9w-12.psfu.gz
115 | usr/share/kbd/consolefonts/lat9-16.psf.gz
116 | usr/share/kbd/consolefonts/iso10.08.gz
117 | usr/share/kbd/consolefonts/Cyr_a8x16.psfu.gz
118 | usr/share/kbd/consolefonts/iso05.08.gz
119 | usr/share/kbd/consolefonts/lat9w-08.psfu.gz
120 | usr/share/kbd/consolefonts/164.cp.gz
121 | usr/share/kbd/consolefonts/mu.fnt.gz
122 | usr/share/kbd/consolefonts/iso10.16.gz
123 | usr/share/kbd/consolefonts/972.cp.gz
124 | usr/share/kbd/consolefonts/LatArCyrHeb-16.psfu.gz
125 | usr/share/kbd/consolefonts/c.fnt.gz
126 | usr/share/kbd/consolefonts/lat9v-12.psfu.gz
127 | usr/share/kbd/consolefonts/UniCyr_8x16.psf.gz
128 | usr/share/kbd/consolefonts/gr737c-8x16.psfu.gz
129 | usr/share/kbd/consolefonts/iso01-12x22.psfu.gz
130 | usr/share/kbd/consolefonts/lat4a-16.psfu.gz
131 | usr/share/kbd/consolefonts/lat9-12.psf.gz
132 | usr/share/kbd/consolefonts/cp865-8x8.psfu.gz
133 | usr/share/kbd/consolefonts/lat4a-16+.psfu.gz
134 | usr/share/kbd/consolefonts/lat7a-16.psf.gz
135 | usr/share/kbd/consolefonts/gr737b-8x11.psfu.gz
136 | usr/share/kbd/consolefonts/lat1-12.psfu.gz
137 | usr/share/kbd/consolefonts/iso09.08.gz
138 | usr/share/kbd/consolefonts/altc-8x16.gz
139 | usr/share/kbd/consolefonts/lat4-12.psfu.gz
140 | usr/share/kbd/consolefonts/lat1-10.psfu.gz
141 | usr/share/kbd/consolefonts/aply16.psf.gz
142 | usr/share/kbd/consolefonts/README.lat9
143 | usr/share/kbd/consolefonts/iso05.14.gz
144 | usr/share/kbd/consolefonts/lat0-10.psfu.gz
145 | usr/share/kbd/consolefonts/gr928a-8x16.psfu.gz
146 | usr/share/kbd/consolefonts/lat2-14.psfu.gz
147 | usr/share/kbd/consolefonts/gr928b-8x14.psfu.gz
148 | usr/share/kbd/consolefonts/README.cybercafe
149 | usr/share/kbd/consolefonts/cp866-8x16.psf.gz
150 | usr/share/kbd/consolefonts/cp865-8x16.psfu.gz
151 | usr/share/kbd/consolefonts/cp866-8x14.psf.gz
152 | usr/share/kbd/consolefonts/lat9u-16.psfu.gz
153 | usr/share/kbd/consolefonts/cp857.14.gz
154 | usr/share/kbd/consolefonts/cp1250.psfu.gz
155 | usr/share/kbd/consolefonts/cp865-8x14.psfu.gz
156 | usr/share/kbd/consolefonts/928.cp.gz
157 | usr/share/kbd/consolefonts/162.cp.gz
158 | usr/share/kbd/consolefonts/lat9v-16.psfu.gz
159 | usr/share/kbd/consolefonts/lat9w-10.psfu.gz
160 | usr/share/kbd/consolefonts/rl.fnt.gz
161 | usr/share/kbd/consolefonts/iso09.14.gz
162 | usr/share/kbd/consolefonts/koi8c-8x16.gz
163 | usr/share/kbd/consolefonts/README.psfu
164 | usr/share/kbd/consolefonts/iso06.14.gz
165 | usr/share/kbd/consolefonts/lat2-10.psfu.gz
166 | usr/share/kbd/consolefonts/lat2-12.psfu.gz
167 | usr/share/kbd/consolefonts/GohaClassic-16.psfu.gz
168 | usr/share/kbd/consolefonts/lat5-16.psfu.gz
169 | usr/share/kbd/consolefonts/drdos8x16.psfu.gz
170 | usr/share/kbd/consolefonts/koi8u_8x14.psfu.gz
171 | usr/share/kbd/consolefonts/gr737c-8x6.psfu.gz
172 | usr/share/kbd/consolefonts/cp850-8x8.psfu.gz
173 | usr/share/kbd/consolefonts/lat4a-08.psfu.gz
174 | usr/share/kbd/consolefonts/README.drdos
175 | usr/share/kbd/consolefonts/t850b.fnt.gz
176 | usr/share/kbd/consolefonts/lat0-14.psfu.gz
177 | usr/share/kbd/consolefonts/iso08.08.gz
178 | usr/share/kbd/consolefonts/iso01.14.gz
179 | usr/share/kbd/consolefonts/gr928-8x16-thin.psfu.gz
180 | usr/share/kbd/consolefonts/iso01.16.gz
181 | usr/share/kbd/consolefonts/lat9w-16.psfu.gz
182 | usr/share/kbd/consolefonts/GohaClassic-12.psfu.gz
183 | usr/share/kbd/consolefonts/Cyr_a8x14.psfu.gz
184 | usr/share/kbd/consolefonts/alt-8x8.gz
185 | usr/share/kbd/consolefonts/lat0-16.psfu.gz
186 | usr/share/kbd/consolefonts/LatArCyrHeb-16+.psfu.gz
187 | usr/share/kbd/consolefonts/cyr-sun16.psfu.gz
188 | usr/share/kbd/consolefonts/Agafari-16.psfu.gz
189 | usr/share/kbd/consolefonts/cp857.08.gz
190 | usr/share/kbd/consolefonts/737.cp.gz
191 | usr/share/kbd/consolefonts/README.lat7
192 | usr/share/kbd/consolefonts/LatArCyrHeb-14.psfu.gz
193 | usr/share/kbd/consolefonts/koi8r-8x8.gz
194 | usr/share/kbd/consolefonts/ERRORS
195 | usr/share/kbd/consolefonts/sd.fnt.gz
196 | usr/share/kbd/consolefonts/gr737c-8x14.psfu.gz
197 | usr/share/kbd/consolefonts/iso06.16.gz
198 | usr/share/kbd/consolefonts/partialfonts/
199 | usr/share/kbd/consolefonts/partialfonts/8859-4.a0-ff.16.gz
200 | usr/share/kbd/consolefonts/partialfonts/8859-7.a0-ff.16.gz
201 | usr/share/kbd/consolefonts/partialfonts/8859-7.a0-ff.14.gz
202 | usr/share/kbd/consolefonts/partialfonts/8859-1.a0-ff.14.gz
203 | usr/share/kbd/consolefonts/partialfonts/8859-6.a0-ff.08.gz
204 | usr/share/kbd/consolefonts/partialfonts/ascii.20-7f.14.gz
205 | usr/share/kbd/consolefonts/partialfonts/8859-2.a0-ff.14.gz
206 | usr/share/kbd/consolefonts/partialfonts/8859-8.a0-ff.16.gz
207 | usr/share/kbd/consolefonts/partialfonts/8859-1.a0-ff.16.gz
208 | usr/share/kbd/consolefonts/partialfonts/8859-6.a0-ff.16.gz
209 | usr/share/kbd/consolefonts/partialfonts/8859-8.a0-ff.08.gz
210 | usr/share/kbd/consolefonts/partialfonts/cp437.00-1f.16.gz
211 | usr/share/kbd/consolefonts/partialfonts/8859-8.a0-ff.14.gz
212 | usr/share/kbd/consolefonts/partialfonts/8859-5.a0-ff.16.gz
213 | usr/share/kbd/consolefonts/partialfonts/ascii.20-7f.08.gz
214 | usr/share/kbd/consolefonts/partialfonts/8859-4.a0-ff.14.gz
215 | usr/share/kbd/consolefonts/partialfonts/ascii.20-7f.16.gz
216 | usr/share/kbd/consolefonts/partialfonts/8859-1.a0-ff.08.gz
217 | usr/share/kbd/consolefonts/partialfonts/8859-10.a0-ff.08.gz
218 | usr/share/kbd/consolefonts/partialfonts/8859-2.a0-ff.16.gz
219 | usr/share/kbd/consolefonts/partialfonts/8859-7.a0-ff.08.gz
220 | usr/share/kbd/consolefonts/partialfonts/8859-10.a0-ff.14.gz
221 | usr/share/kbd/consolefonts/partialfonts/cp437.00-1f.08.gz
222 | usr/share/kbd/consolefonts/partialfonts/8859-2.a0-ff.08.gz
223 | usr/share/kbd/consolefonts/partialfonts/8859-3.a0-ff.16.gz
224 | usr/share/kbd/consolefonts/partialfonts/8859-9.a0-ff.16.gz
225 | usr/share/kbd/consolefonts/partialfonts/none.00-17.16.gz
226 | usr/share/kbd/consolefonts/partialfonts/8859-9.a0-ff.08.gz
227 | usr/share/kbd/consolefonts/partialfonts/8859-3.a0-ff.08.gz
228 | usr/share/kbd/consolefonts/partialfonts/8859-6.a0-ff.14.gz
229 | usr/share/kbd/consolefonts/partialfonts/8859-3.a0-ff.14.gz
230 | usr/share/kbd/consolefonts/partialfonts/none.00-17.08.gz
231 | usr/share/kbd/consolefonts/partialfonts/none.00-17.14.gz
232 | usr/share/kbd/consolefonts/partialfonts/8859-4.a0-ff.08.gz
233 | usr/share/kbd/consolefonts/partialfonts/8859-10.a0-ff.16.gz
234 | usr/share/kbd/consolefonts/partialfonts/8859-5.a0-ff.08.gz
235 | usr/share/kbd/consolefonts/partialfonts/cp437.00-1f.14.gz
236 | usr/share/kbd/consolefonts/partialfonts/8859-9.a0-ff.14.gz
237 | usr/share/kbd/consolefonts/partialfonts/8859-5.a0-ff.14.gz
238 | usr/share/kbd/consolefonts/880.cp.gz
239 | usr/share/kbd/consolefonts/cybercafe.fnt.gz
240 | usr/share/kbd/consolefonts/gr737c-8x8.psfu.gz
241 | usr/share/kbd/consolefonts/lat9-08.psf.gz
242 | usr/share/kbd/consolefonts/README.lat0
243 | usr/share/kbd/consolefonts/gr928b-8x16.psfu.gz
244 | usr/share/kbd/consolefonts/mr.fnt.gz
245 | usr/share/kbd/consolefonts/lat9u-10.psfu.gz
246 | usr/share/kbd/consolefonts/Goha-14.psfu.gz
247 | usr/share/kbd/consolefonts/iso03.08.gz
248 | usr/share/kbd/consolefonts/lat1-16.psfu.gz
249 | usr/share/kbd/consolefonts/greek-polytonic.psfu.gz
250 | usr/share/kbd/consolefonts/iso01.08.gz
251 | usr/share/kbd/consolefonts/lat7-14.psfu.gz
252 | usr/share/kbd/consolefonts/161.cp.gz
253 | usr/share/kbd/consolefonts/lat9-14.psf.gz
254 | usr/share/kbd/consolefonts/Agafari-14.psfu.gz
255 | usr/share/kbd/consolefonts/Goha-16.psfu.gz
256 | usr/share/kbd/consolefonts/lat2-16.psfu.gz
257 | usr/share/kbd/consolefonts/GohaClassic-14.psfu.gz
258 | usr/share/kbd/consolefonts/LatKaCyrHeb-14.psfu.gz
259 | usr/share/kbd/consolefonts/lat4a-14.psfu.gz
260 | usr/share/kbd/consolefonts/scrawl_s.fnt.gz
261 | usr/share/kbd/consolefonts/lat4-08.psfu.gz
262 | usr/share/kbd/consolefonts/ro.fnt.gz
263 | usr/share/kbd/consolefonts/iso09.16.gz
264 | usr/share/kbd/consolefonts/alt-8x14.gz
265 | usr/share/kbd/consolefonts/gr737a-9x16.psfu.gz
266 | usr/share/kbd/consolefonts/tcvn8x16.psf.gz
267 | usr/share/kbd/consolefonts/iso02.14.gz
268 | usr/share/kbd/consolefonts/b.fnt.gz
269 | usr/share/kbd/consolefonts/lat4a-19.psfu.gz
270 | usr/share/kbd/consolefonts/gr928-9x14.psfu.gz
271 | usr/share/kbd/consolefonts/drdos8x14.psfu.gz
272 | usr/share/kbd/consolefonts/README.12x22
273 | usr/share/kbd/consolefonts/lat4-16.psfu.gz
274 | usr/share/kbd/consolefonts/gr928a-8x14.psfu.gz
275 | usr/share/kbd/consolefonts/Lat2-Terminus16.psfu.gz
276 | usr/share/kbd/consolefonts/lat9v-14.psfu.gz
277 | usr/share/kbd/consolefonts/lat9w-14.psfu.gz
278 | usr/share/kbd/consolefonts/lat7a-14.psfu.gz
279 | usr/share/kbd/consolefonts/UniCyrExt_8x16.psf.gz
280 | usr/share/kbd/consolefonts/README.Lat2-Terminus16
281 | usr/share/kbd/consolefonts/README.Hebrew
282 | usr/share/kbd/keymaps/
283 | usr/share/kbd/keymaps/include/
284 | usr/share/kbd/keymaps/include/compose.latin4
285 | usr/share/kbd/keymaps/include/compose.8859_7
286 | usr/share/kbd/keymaps/include/compose.8859_8
287 | usr/share/kbd/keymaps/include/compose.latin2
288 | usr/share/kbd/keymaps/include/compose.latin1
289 | usr/share/kbd/keymaps/include/vim-compose.latin1
290 | usr/share/kbd/keymaps/include/compose.latin3
291 | usr/share/kbd/keymaps/include/compose.latin
292 | usr/share/kbd/keymaps/amiga/
293 | usr/share/kbd/keymaps/amiga/amiga-de.map.gz
294 | usr/share/kbd/keymaps/amiga/amiga-us.map.gz
295 | usr/share/kbd/keymaps/i386/
296 | usr/share/kbd/keymaps/i386/include/
297 | usr/share/kbd/keymaps/i386/include/azerty-layout.inc
298 | usr/share/kbd/keymaps/i386/include/qwertz-layout.inc
299 | usr/share/kbd/keymaps/i386/include/keypad.map.gz
300 | usr/share/kbd/keymaps/i386/include/euro.map.gz
301 | usr/share/kbd/keymaps/i386/include/windowkeys.map.gz
302 | usr/share/kbd/keymaps/i386/include/euro1.map.gz
303 | usr/share/kbd/keymaps/i386/include/ctrl.map.gz
304 | usr/share/kbd/keymaps/i386/include/euro2.map.gz
305 | usr/share/kbd/keymaps/i386/include/qwerty-layout.inc
306 | usr/share/kbd/keymaps/i386/include/linux-with-modeshift-altgr.inc
307 | usr/share/kbd/keymaps/i386/include/linux-with-two-alt-keys.inc
308 | usr/share/kbd/keymaps/i386/include/unicode.map.gz
309 | usr/share/kbd/keymaps/i386/include/linux-keys-extd.inc
310 | usr/share/kbd/keymaps/i386/include/applkey.map.gz
311 | usr/share/kbd/keymaps/i386/include/linux-keys-bare.inc
312 | usr/share/kbd/keymaps/i386/include/backspace.map.gz
313 | usr/share/kbd/keymaps/i386/include/linux-with-alt-and-altgr.inc
314 | usr/share/kbd/keymaps/i386/include/euro1.inc
315 | usr/share/kbd/keymaps/i386/include/compose.inc
316 | usr/share/kbd/keymaps/i386/colemak/
317 | usr/share/kbd/keymaps/i386/colemak/en-latin9.map.gz
318 | usr/share/kbd/keymaps/i386/azerty/
319 | usr/share/kbd/keymaps/i386/azerty/azerty.map.gz
320 | usr/share/kbd/keymaps/i386/azerty/fr-pc.map.gz
321 | usr/share/kbd/keymaps/i386/azerty/fr-old.map.gz
322 | usr/share/kbd/keymaps/i386/azerty/fr-latin1.map.gz
323 | usr/share/kbd/keymaps/i386/azerty/fr-latin0.map.gz
324 | usr/share/kbd/keymaps/i386/azerty/wangbe2.map.gz
325 | usr/share/kbd/keymaps/i386/azerty/fr.map.gz
326 | usr/share/kbd/keymaps/i386/azerty/fr-latin9.map.gz
327 | usr/share/kbd/keymaps/i386/azerty/wangbe.map.gz
328 | usr/share/kbd/keymaps/i386/azerty/be-latin1.map.gz
329 | usr/share/kbd/keymaps/i386/fgGIod/
330 | usr/share/kbd/keymaps/i386/fgGIod/tr_f-latin5.map.gz
331 | usr/share/kbd/keymaps/i386/fgGIod/trf-fgGIod.map.gz
332 | usr/share/kbd/keymaps/i386/qwertz/
333 | usr/share/kbd/keymaps/i386/qwertz/fr_CH-latin1.map.gz
334 | usr/share/kbd/keymaps/i386/qwertz/de-mobii.map.gz
335 | usr/share/kbd/keymaps/i386/qwertz/sk-prog-qwertz.map.gz
336 | usr/share/kbd/keymaps/i386/qwertz/de-latin1-nodeadkeys.map.gz
337 | usr/share/kbd/keymaps/i386/qwertz/sg-latin1.map.gz
338 | usr/share/kbd/keymaps/i386/qwertz/cz.map.gz
339 | usr/share/kbd/keymaps/i386/qwertz/de.map.gz
340 | usr/share/kbd/keymaps/i386/qwertz/sg-latin1-lk450.map.gz
341 | usr/share/kbd/keymaps/i386/qwertz/slovene.map.gz
342 | usr/share/kbd/keymaps/i386/qwertz/de_alt_UTF-8.map.gz
343 | usr/share/kbd/keymaps/i386/qwertz/de_CH-latin1.map.gz
344 | usr/share/kbd/keymaps/i386/qwertz/fr_CH.map.gz
345 | usr/share/kbd/keymaps/i386/qwertz/sg.map.gz
346 | usr/share/kbd/keymaps/i386/qwertz/sk-qwertz.map.gz
347 | usr/share/kbd/keymaps/i386/qwertz/cz-us-qwertz.map.gz
348 | usr/share/kbd/keymaps/i386/qwertz/hu.map.gz
349 | usr/share/kbd/keymaps/i386/qwertz/de-latin1.map.gz
350 | usr/share/kbd/keymaps/i386/qwertz/croat.map.gz
351 | usr/share/kbd/keymaps/i386/dvorak/
352 | usr/share/kbd/keymaps/i386/dvorak/dvorak-r.map.gz
353 | usr/share/kbd/keymaps/i386/dvorak/dvorak-fr.map.gz
354 | usr/share/kbd/keymaps/i386/dvorak/dvorak-l.map.gz
355 | usr/share/kbd/keymaps/i386/dvorak/no-dvorak.map.gz
356 | usr/share/kbd/keymaps/i386/dvorak/ANSI-dvorak.map.gz
357 | usr/share/kbd/keymaps/i386/dvorak/dvorak.map.gz
358 | usr/share/kbd/keymaps/i386/olpc/
359 | usr/share/kbd/keymaps/i386/olpc/pt-olpc.map.gz
360 | usr/share/kbd/keymaps/i386/olpc/es-olpc.map.gz
361 | usr/share/kbd/keymaps/i386/qwerty/
362 | usr/share/kbd/keymaps/i386/qwerty/pl1.map.gz
363 | usr/share/kbd/keymaps/i386/qwerty/pt-latin1.map.gz
364 | usr/share/kbd/keymaps/i386/qwerty/hu101.map.gz
365 | usr/share/kbd/keymaps/i386/qwerty/bg_pho-utf8.map.gz
366 | usr/share/kbd/keymaps/i386/qwerty/trq.map.gz
367 | usr/share/kbd/keymaps/i386/qwerty/se-ir209.map.gz
368 | usr/share/kbd/keymaps/i386/qwerty/ruwin_cplk-UTF-8.map.gz
369 | usr/share/kbd/keymaps/i386/qwerty/gr.map.gz
370 | usr/share/kbd/keymaps/i386/qwerty/bywin-cp1251.map.gz
371 | usr/share/kbd/keymaps/i386/qwerty/ruwin_ct_sh-UTF-8.map.gz
372 | usr/share/kbd/keymaps/i386/qwerty/ru.map.gz
373 | usr/share/kbd/keymaps/i386/qwerty/dk-latin1.map.gz
374 | usr/share/kbd/keymaps/i386/qwerty/ru_win.map.gz
375 | usr/share/kbd/keymaps/i386/qwerty/by.map.gz
376 | usr/share/kbd/keymaps/i386/qwerty/it.map.gz
377 | usr/share/kbd/keymaps/i386/qwerty/ru1.map.gz
378 | usr/share/kbd/keymaps/i386/qwerty/et.map.gz
379 | usr/share/kbd/keymaps/i386/qwerty/pt.map.gz
380 | usr/share/kbd/keymaps/i386/qwerty/et-nodeadkeys.map.gz
381 | usr/share/kbd/keymaps/i386/qwerty/ttwin_ct_sh-UTF-8.map.gz
382 | usr/share/kbd/keymaps/i386/qwerty/br-latin1-abnt2.map.gz
383 | usr/share/kbd/keymaps/i386/qwerty/us-acentos.map.gz
384 | usr/share/kbd/keymaps/i386/qwerty/speakup-jfw.map.gz
385 | usr/share/kbd/keymaps/i386/qwerty/ua-utf.map.gz
386 | usr/share/kbd/keymaps/i386/qwerty/ru-cp1251.map.gz
387 | usr/share/kbd/keymaps/i386/qwerty/ro_std.map.gz
388 | usr/share/kbd/keymaps/i386/qwerty/cz-lat2-prog.map.gz
389 | usr/share/kbd/keymaps/i386/qwerty/kazakh.map.gz
390 | usr/share/kbd/keymaps/i386/qwerty/br-abnt.map.gz
391 | usr/share/kbd/keymaps/i386/qwerty/cz-lat2.map.gz
392 | usr/share/kbd/keymaps/i386/qwerty/jp106.map.gz
393 | usr/share/kbd/keymaps/i386/qwerty/pl3.map.gz
394 | usr/share/kbd/keymaps/i386/qwerty/sk-qwerty.map.gz
395 | usr/share/kbd/keymaps/i386/qwerty/es.map.gz
396 | usr/share/kbd/keymaps/i386/qwerty/ruwin_cplk-CP1251.map.gz
397 | usr/share/kbd/keymaps/i386/qwerty/fi-old.map.gz
398 | usr/share/kbd/keymaps/i386/qwerty/il-phonetic.map.gz
399 | usr/share/kbd/keymaps/i386/qwerty/ro.map.gz
400 | usr/share/kbd/keymaps/i386/qwerty/speakupmap.map.gz
401 | usr/share/kbd/keymaps/i386/qwerty/ttwin_cplk-UTF-8.map.gz
402 | usr/share/kbd/keymaps/i386/qwerty/se-latin1.map.gz
403 | usr/share/kbd/keymaps/i386/qwerty/ruwin_alt-UTF-8.map.gz
404 | usr/share/kbd/keymaps/i386/qwerty/defkeymap_V1.0.map.gz
405 | usr/share/kbd/keymaps/i386/qwerty/ru4.map.gz
406 | usr/share/kbd/keymaps/i386/qwerty/us.map.gz
407 | usr/share/kbd/keymaps/i386/qwerty/bg-cp1251.map.gz
408 | usr/share/kbd/keymaps/i386/qwerty/bashkir.map.gz
409 | usr/share/kbd/keymaps/i386/qwerty/es-cp850.map.gz
410 | usr/share/kbd/keymaps/i386/qwerty/trf.map.gz
411 | usr/share/kbd/keymaps/i386/qwerty/ua-cp1251.map.gz
412 | usr/share/kbd/keymaps/i386/qwerty/cf.map.gz
413 | usr/share/kbd/keymaps/i386/qwerty/ruwin_cplk-KOI8-R.map.gz
414 | usr/share/kbd/keymaps/i386/qwerty/is-latin1-us.map.gz
415 | usr/share/kbd/keymaps/i386/qwerty/fi.map.gz
416 | usr/share/kbd/keymaps/i386/qwerty/bg_bds-cp1251.map.gz
417 | usr/share/kbd/keymaps/i386/qwerty/no-latin1.doc
418 | usr/share/kbd/keymaps/i386/qwerty/la-latin1.map.gz
419 | usr/share/kbd/keymaps/i386/qwerty/mk0.map.gz
420 | usr/share/kbd/keymaps/i386/qwerty/tr_q-latin5.map.gz
421 | usr/share/kbd/keymaps/i386/qwerty/pc110.map.gz
422 | usr/share/kbd/keymaps/i386/qwerty/nl.map.gz
423 | usr/share/kbd/keymaps/i386/qwerty/ru-yawerty.map.gz
424 | usr/share/kbd/keymaps/i386/qwerty/gr-pc.map.gz
425 | usr/share/kbd/keymaps/i386/qwerty/cz-qwerty.map.gz
426 | usr/share/kbd/keymaps/i386/qwerty/pl4.map.gz
427 | usr/share/kbd/keymaps/i386/qwerty/pt-latin9.map.gz
428 | usr/share/kbd/keymaps/i386/qwerty/br-latin1-us.map.gz
429 | usr/share/kbd/keymaps/i386/qwerty/it2.map.gz
430 | usr/share/kbd/keymaps/i386/qwerty/se-fi-ir209.map.gz
431 | usr/share/kbd/keymaps/i386/qwerty/lt.l4.map.gz
432 | usr/share/kbd/keymaps/i386/qwerty/fi-latin9.map.gz
433 | usr/share/kbd/keymaps/i386/qwerty/no-latin1.map.gz
434 | usr/share/kbd/keymaps/i386/qwerty/mk-cp1251.map.gz
435 | usr/share/kbd/keymaps/i386/qwerty/uk.map.gz
436 | usr/share/kbd/keymaps/i386/qwerty/is-latin1.map.gz
437 | usr/share/kbd/keymaps/i386/qwerty/lt.baltic.map.gz
438 | usr/share/kbd/keymaps/i386/qwerty/ua-ws.map.gz
439 | usr/share/kbd/keymaps/i386/qwerty/ttwin_alt-UTF-8.map.gz
440 | usr/share/kbd/keymaps/i386/qwerty/lt.map.gz
441 | usr/share/kbd/keymaps/i386/qwerty/sr-cy.map.gz
442 | usr/share/kbd/keymaps/i386/qwerty/no.map.gz
443 | usr/share/kbd/keymaps/i386/qwerty/nl2.map.gz
444 | usr/share/kbd/keymaps/i386/qwerty/mk-utf.map.gz
445 | usr/share/kbd/keymaps/i386/qwerty/ruwin_alt-CP1251.map.gz
446 | usr/share/kbd/keymaps/i386/qwerty/bg-cp855.map.gz
447 | usr/share/kbd/keymaps/i386/qwerty/by-cp1251.map.gz
448 | usr/share/kbd/keymaps/i386/qwerty/br-abnt2.map.gz
449 | usr/share/kbd/keymaps/i386/qwerty/sv-latin1.map.gz
450 | usr/share/kbd/keymaps/i386/qwerty/ruwin_ct_sh-KOI8-R.map.gz
451 | usr/share/kbd/keymaps/i386/qwerty/defkeymap.map.gz
452 | usr/share/kbd/keymaps/i386/qwerty/hypermap.m4
453 | usr/share/kbd/keymaps/i386/qwerty/dk.map.gz
454 | usr/share/kbd/keymaps/i386/qwerty/ru2.map.gz
455 | usr/share/kbd/keymaps/i386/qwerty/ruwin_ctrl-KOI8-R.map.gz
456 | usr/share/kbd/keymaps/i386/qwerty/fi-latin1.map.gz
457 | usr/share/kbd/keymaps/i386/qwerty/se-fi-lat6.map.gz
458 | usr/share/kbd/keymaps/i386/qwerty/se-lat6.map.gz
459 | usr/share/kbd/keymaps/i386/qwerty/tj_alt-UTF8.map.gz
460 | usr/share/kbd/keymaps/i386/qwerty/ru3.map.gz
461 | usr/share/kbd/keymaps/i386/qwerty/pl.map.gz
462 | usr/share/kbd/keymaps/i386/qwerty/ky_alt_sh-UTF-8.map.gz
463 | usr/share/kbd/keymaps/i386/qwerty/sk-prog-qwerty.map.gz
464 | usr/share/kbd/keymaps/i386/qwerty/emacs.map.gz
465 | usr/share/kbd/keymaps/i386/qwerty/il-heb.map.gz
466 | usr/share/kbd/keymaps/i386/qwerty/tralt.map.gz
467 | usr/share/kbd/keymaps/i386/qwerty/ruwin_alt-KOI8-R.map.gz
468 | usr/share/kbd/keymaps/i386/qwerty/it-ibm.map.gz
469 | usr/share/kbd/keymaps/i386/qwerty/ttwin_ctrl-UTF-8.map.gz
470 | usr/share/kbd/keymaps/i386/qwerty/pl2.map.gz
471 | usr/share/kbd/keymaps/i386/qwerty/bg_bds-utf8.map.gz
472 | usr/share/kbd/keymaps/i386/qwerty/mk.map.gz
473 | usr/share/kbd/keymaps/i386/qwerty/ruwin_ct_sh-CP1251.map.gz
474 | usr/share/kbd/keymaps/i386/qwerty/ru-ms.map.gz
475 | usr/share/kbd/keymaps/i386/qwerty/emacs2.map.gz
476 | usr/share/kbd/keymaps/i386/qwerty/speakup-jfw.readme
477 | usr/share/kbd/keymaps/i386/qwerty/ua-utf-ws.map.gz
478 | usr/share/kbd/keymaps/i386/qwerty/ruwin_ctrl-CP1251.map.gz
479 | usr/share/kbd/keymaps/i386/qwerty/ua.map.gz
480 | usr/share/kbd/keymaps/i386/qwerty/kyrgyz.map.gz
481 | usr/share/kbd/keymaps/i386/qwerty/il.map.gz
482 | usr/share/kbd/keymaps/i386/qwerty/ruwin_ctrl-UTF-8.map.gz
483 | usr/share/kbd/keymaps/i386/qwerty/bg_pho-cp1251.map.gz
484 | usr/share/kbd/keymaps/i386/qwerty/cz-cp1250.map.gz
485 | usr/share/kbd/keymaps/sun/
486 | usr/share/kbd/keymaps/sun/sunt5-fr-latin1.map.gz
487 | usr/share/kbd/keymaps/sun/sunkeymap.map.gz
488 | usr/share/kbd/keymaps/sun/sun-pl-altgraph.map.gz
489 | usr/share/kbd/keymaps/sun/sun-pl.map.gz
490 | usr/share/kbd/keymaps/sun/sunt5-cz-us.map.gz
491 | usr/share/kbd/keymaps/sun/sunt4-no-latin1.map.gz
492 | usr/share/kbd/keymaps/sun/sunt5-us-cz.map.gz
493 | usr/share/kbd/keymaps/sun/sunt4-es.map.gz
494 | usr/share/kbd/keymaps/sun/sunt5-fi-latin1.map.gz
495 | usr/share/kbd/keymaps/sun/sunt5-uk.map.gz
496 | usr/share/kbd/keymaps/sun/sunt4-fi-latin1.map.gz
497 | usr/share/kbd/keymaps/sun/sunt6-uk.map.gz
498 | usr/share/kbd/keymaps/sun/sundvorak.map.gz
499 | usr/share/kbd/keymaps/sun/sunt5-es.map.gz
500 | usr/share/kbd/keymaps/sun/sunt5-ru.map.gz
501 | usr/share/kbd/keymaps/sun/sunt5-de-latin1.map.gz
502 | usr/share/kbd/keymaps/mac/
503 | usr/share/kbd/keymaps/mac/include/
504 | usr/share/kbd/keymaps/mac/include/mac-azerty-layout.inc
505 | usr/share/kbd/keymaps/mac/include/mac-qwerty-layout.inc
506 | usr/share/kbd/keymaps/mac/include/mac-qwertz-layout.inc
507 | usr/share/kbd/keymaps/mac/include/mac-linux-keys-bare.inc
508 | usr/share/kbd/keymaps/mac/include/mac-euro2.map.gz
509 | usr/share/kbd/keymaps/mac/include/mac-euro.map.gz
510 | usr/share/kbd/keymaps/mac/all/
511 | usr/share/kbd/keymaps/mac/all/mac-template.map.gz
512 | usr/share/kbd/keymaps/mac/all/mac-be.map.gz
513 | usr/share/kbd/keymaps/mac/all/mac-pl.map.gz
514 | usr/share/kbd/keymaps/mac/all/mac-it.map.gz
515 | usr/share/kbd/keymaps/mac/all/mac-de-latin1-nodeadkeys.map.gz
516 | usr/share/kbd/keymaps/mac/all/mac-de_CH.map.gz
517 | usr/share/kbd/keymaps/mac/all/mac-de-latin1.map.gz
518 | usr/share/kbd/keymaps/mac/all/mac-uk.map.gz
519 | usr/share/kbd/keymaps/mac/all/mac-us.map.gz
520 | usr/share/kbd/keymaps/mac/all/mac-fr_CH-latin1.map.gz
521 | usr/share/kbd/keymaps/mac/all/mac-se.map.gz
522 | usr/share/kbd/keymaps/mac/all/mac-pt-latin1.map.gz
523 | usr/share/kbd/keymaps/mac/all/mac-fr.map.gz
524 | usr/share/kbd/keymaps/mac/all/mac-es.map.gz
525 | usr/share/kbd/keymaps/mac/all/mac-dvorak.map.gz
526 | usr/share/kbd/keymaps/mac/all/mac-fi-latin1.map.gz
527 | usr/share/kbd/keymaps/mac/all/mac-dk-latin1.map.gz
528 | usr/share/kbd/keymaps/atari/
529 | usr/share/kbd/keymaps/atari/atari-us.map.gz
530 | usr/share/kbd/keymaps/atari/atari-uk-falcon.map.gz
531 | usr/share/kbd/keymaps/atari/atari-se.map.gz
532 | usr/share/kbd/keymaps/atari/atari-de.map.gz
533 | usr/share/kbd/unimaps/
534 | usr/share/kbd/unimaps/iso01.uni
535 | usr/share/kbd/unimaps/lat1u.uni
536 | usr/share/kbd/unimaps/8859-3.a0-ff.uni
537 | usr/share/kbd/unimaps/tcvn.uni
538 | usr/share/kbd/unimaps/lat4.uni
539 | usr/share/kbd/unimaps/8859-6.a0-ff.uni
540 | usr/share/kbd/unimaps/8859-14.a0-ff.uni
541 | usr/share/kbd/unimaps/cp437.00-1f.uni
542 | usr/share/kbd/unimaps/iso02.uni
543 | usr/share/kbd/unimaps/lat9w.uni
544 | usr/share/kbd/unimaps/README
545 | usr/share/kbd/unimaps/iso10.uni
546 | usr/share/kbd/unimaps/lat9v.uni
547 | usr/share/kbd/unimaps/empty.uni
548 | usr/share/kbd/unimaps/cp850b.uni
549 | usr/share/kbd/unimaps/iso08.uni
550 | usr/share/kbd/unimaps/lat9u.uni
551 | usr/share/kbd/unimaps/cp737c.uni
552 | usr/share/kbd/unimaps/cp866.uni
553 | usr/share/kbd/unimaps/cp865a.uni
554 | usr/share/kbd/unimaps/iso07u.uni
555 | usr/share/kbd/unimaps/iso05.uni
556 | usr/share/kbd/unimaps/iso15.uni
557 | usr/share/kbd/unimaps/viscii.uni
558 | usr/share/kbd/unimaps/8859-4.a0-ff.uni
559 | usr/share/kbd/unimaps/lat7.uni
560 | usr/share/kbd/unimaps/cp850a.uni
561 | usr/share/kbd/unimaps/cp850.uni
562 | usr/share/kbd/unimaps/lat1.uni
563 | usr/share/kbd/unimaps/iso03.uni
564 | usr/share/kbd/unimaps/ECMA144.uni
565 | usr/share/kbd/unimaps/cp1250.uni
566 | usr/share/kbd/unimaps/cyralt.uni
567 | usr/share/kbd/unimaps/ethiopic.uni
568 | usr/share/kbd/unimaps/lat2.uni
569 | usr/share/kbd/unimaps/cybercafe.uni
570 | usr/share/kbd/unimaps/iso09.uni
571 | usr/share/kbd/unimaps/koi8r.uni
572 | usr/share/kbd/unimaps/8859-5.a0-ff.uni
573 | usr/share/kbd/unimaps/8859-15.a0-ff.uni
574 | usr/share/kbd/unimaps/8859-10.a0-ff.uni
575 | usr/share/kbd/unimaps/armscii8.uni
576 | usr/share/kbd/unimaps/cp866a.uni
577 | usr/share/kbd/unimaps/iso06.uni
578 | usr/share/kbd/unimaps/8859-9.a0-ff.uni
579 | usr/share/kbd/unimaps/8859-1.a0-ff.uni
580 | usr/share/kbd/unimaps/8859-13.a0-ff.uni
581 | usr/share/kbd/unimaps/lat2u.uni
582 | usr/share/kbd/unimaps/cp737.uni
583 | usr/share/kbd/unimaps/koi8u.uni
584 | usr/share/kbd/unimaps/cp737a.uni
585 | usr/share/kbd/unimaps/ascii.20-7f.uni
586 | usr/share/kbd/unimaps/ruscii.uni
587 | usr/share/kbd/unimaps/iso04.uni
588 | usr/share/kbd/unimaps/lat4u.uni
589 | usr/share/kbd/unimaps/def.uni
590 | usr/share/kbd/unimaps/cp865.uni
591 | usr/share/kbd/unimaps/cp850z.uni
592 | usr/share/kbd/unimaps/cp737b.uni
593 | usr/share/kbd/unimaps/8859-8.a0-ff.uni
594 | usr/share/kbd/unimaps/8859-7.a0-ff.uni
595 | usr/share/kbd/unimaps/iso07.uni
596 | usr/share/kbd/unimaps/cp437.uni
597 | usr/share/kbd/unimaps/8859-2.a0-ff.uni
598 | usr/share/kbd/consoletrans/
599 | usr/share/kbd/consoletrans/8859-9_to_uni.trans
600 | usr/share/kbd/consoletrans/viscii1.0_to_tcvn.trans
601 | usr/share/kbd/consoletrans/8859-4_to_uni.trans
602 | usr/share/kbd/consoletrans/cp861_to_uni.trans
603 | usr/share/kbd/consoletrans/cp869_to_uni.trans
604 | usr/share/kbd/consoletrans/cp855_to_uni.trans
605 | usr/share/kbd/consoletrans/cp1250_to_uni.trans
606 | usr/share/kbd/consoletrans/cp437_to_uni.trans
607 | usr/share/kbd/consoletrans/utflist
608 | usr/share/kbd/consoletrans/null
609 | usr/share/kbd/consoletrans/8859-8_to_uni.trans
610 | usr/share/kbd/consoletrans/viscii1.0_to_viscii1.1.trans
611 | usr/share/kbd/consoletrans/baltic.trans
612 | usr/share/kbd/consoletrans/cp853_to_uni.trans
613 | usr/share/kbd/consoletrans/cp860_to_uni.trans
614 | usr/share/kbd/consoletrans/8859-5_to_uni.trans
615 | usr/share/kbd/consoletrans/8859-13_to_uni.trans
616 | usr/share/kbd/consoletrans/vga2iso
617 | usr/share/kbd/consoletrans/cp852_to_uni.trans
618 | usr/share/kbd/consoletrans/cp866_to_uni.trans
619 | usr/share/kbd/consoletrans/8859-6_to_uni.trans
620 | usr/share/kbd/consoletrans/8859-15_to_uni.trans
621 | usr/share/kbd/consoletrans/cp863_to_uni.trans
622 | usr/share/kbd/consoletrans/cp874_to_uni.trans
623 | usr/share/kbd/consoletrans/8859-3_to_uni.trans
624 | usr/share/kbd/consoletrans/koi8-r_to_uni.trans
625 | usr/share/kbd/consoletrans/cp850_to_iso01.trans
626 | usr/share/kbd/consoletrans/koi8-u_to_uni.trans
627 | usr/share/kbd/consoletrans/8859-2_to_uni.trans
628 | usr/share/kbd/consoletrans/cp862_to_uni.trans
629 | usr/share/kbd/consoletrans/cp864_to_uni.trans
630 | usr/share/kbd/consoletrans/latin2u.trans
631 | usr/share/kbd/consoletrans/cp1251_to_uni.trans
632 | usr/share/kbd/consoletrans/8859-10_to_uni.trans
633 | usr/share/kbd/consoletrans/8859-14_to_uni.trans
634 | usr/share/kbd/consoletrans/8859-7_to_uni.trans
635 | usr/share/kbd/consoletrans/cp850_to_uni.trans
636 | usr/share/kbd/consoletrans/koi2alt
637 | usr/share/kbd/consoletrans/space
638 | usr/share/kbd/consoletrans/8859-1_to_uni.trans
639 | usr/share/kbd/consoletrans/cp857_to_uni.trans
640 | usr/share/kbd/consoletrans/cp437_to_iso01.trans
641 | usr/share/kbd/consoletrans/zero
642 | usr/share/kbd/consoletrans/trivial
643 | usr/share/kbd/consoletrans/iso02_to_cp1250.trans
644 | usr/share/kbd/consoletrans/koi8u2ruscii
645 | usr/share/kbd/consoletrans/cp737_to_uni.trans
646 | usr/share/kbd/consoletrans/cp775_to_uni.trans
647 | usr/share/kbd/consoletrans/cp865_to_uni.trans
648 | usr/share/locale/
649 | usr/share/locale/fr/
650 | usr/share/locale/fr/LC_MESSAGES/
651 | usr/share/locale/fr/LC_MESSAGES/kbd.mo
652 | usr/share/locale/vi/
653 | usr/share/locale/vi/LC_MESSAGES/
654 | usr/share/locale/vi/LC_MESSAGES/kbd.mo
655 | usr/share/locale/zh_CN/
656 | usr/share/locale/zh_CN/LC_MESSAGES/
657 | usr/share/locale/zh_CN/LC_MESSAGES/kbd.mo
658 | usr/share/locale/id/
659 | usr/share/locale/id/LC_MESSAGES/
660 | usr/share/locale/id/LC_MESSAGES/kbd.mo
661 | usr/share/locale/pl/
662 | usr/share/locale/pl/LC_MESSAGES/
663 | usr/share/locale/pl/LC_MESSAGES/kbd.mo
664 | usr/share/locale/ro/
665 | usr/share/locale/ro/LC_MESSAGES/
666 | usr/share/locale/ro/LC_MESSAGES/kbd.mo
667 | usr/share/locale/uk/
668 | usr/share/locale/uk/LC_MESSAGES/
669 | usr/share/locale/uk/LC_MESSAGES/kbd.mo
670 | usr/share/locale/da/
671 | usr/share/locale/da/LC_MESSAGES/
672 | usr/share/locale/da/LC_MESSAGES/kbd.mo
673 | usr/share/locale/nl/
674 | usr/share/locale/nl/LC_MESSAGES/
675 | usr/share/locale/nl/LC_MESSAGES/kbd.mo
676 | usr/share/locale/el/
677 | usr/share/locale/el/LC_MESSAGES/
678 | usr/share/locale/el/LC_MESSAGES/kbd.mo
679 | usr/share/locale/sv/
680 | usr/share/locale/sv/LC_MESSAGES/
681 | usr/share/locale/sv/LC_MESSAGES/kbd.mo
682 | usr/share/locale/es/
683 | usr/share/locale/es/LC_MESSAGES/
684 | usr/share/locale/es/LC_MESSAGES/kbd.mo
685 | usr/share/locale/de/
686 | usr/share/locale/de/LC_MESSAGES/
687 | usr/share/locale/de/LC_MESSAGES/kbd.mo
688 | usr/share/locale/gr/
689 | usr/share/locale/gr/LC_MESSAGES/
690 | usr/share/locale/gr/LC_MESSAGES/kbd.mo
691 | usr/share/locale/cs/
692 | usr/share/locale/cs/LC_MESSAGES/
693 | usr/share/locale/cs/LC_MESSAGES/kbd.mo
694 | usr/share/locale/tr/
695 | usr/share/locale/tr/LC_MESSAGES/
696 | usr/share/locale/tr/LC_MESSAGES/kbd.mo
697 | usr/man/
698 | usr/man/man8/
699 | usr/man/man8/loadunimap.8.gz
700 | usr/man/man8/setkeycodes.8.gz
701 | usr/man/man8/kbdrate.8.gz
702 | usr/man/man8/getkeycodes.8.gz
703 | usr/man/man8/mapscrn.8.gz
704 | usr/man/man8/resizecons.8.gz
705 | usr/man/man8/setfont.8.gz
706 | usr/man/man8/showconsolefont.8.gz
707 | usr/man/man5/
708 | usr/man/man5/keymaps.5.gz
709 | usr/man/man1/
710 | usr/man/man1/dumpkeys.1.gz
711 | usr/man/man1/psfgettable.1.gz
712 | usr/man/man1/fgconsole.1.gz
713 | usr/man/man1/chvt.1.gz
714 | usr/man/man1/psfstriptable.1.gz
715 | usr/man/man1/psfaddtable.1.gz
716 | usr/man/man1/setmetamode.1.gz
717 | usr/man/man1/deallocvt.1.gz
718 | usr/man/man1/openvt.1.gz
719 | usr/man/man1/loadkeys.1.gz
720 | usr/man/man1/kbd_mode.1.gz
721 | usr/man/man1/psfxtable.1.gz
722 | usr/man/man1/unicode_stop.1.gz
723 | usr/man/man1/showkey.1.gz
724 | usr/man/man1/unicode_start.1.gz
725 | usr/man/man1/setleds.1.gz
726 | usr/bin/
727 | usr/bin/openvt
728 | usr/bin/getkeycodes
729 | usr/bin/kbdrate
730 | usr/bin/unicode_start
731 | usr/bin/showkey
732 | usr/bin/chvt
733 | usr/bin/setconsolefont
734 | usr/bin/setleds
735 | usr/bin/loadunimap
736 | usr/bin/setkeycodes
737 | usr/bin/psfxtable
738 | usr/bin/mapscrn
739 | usr/bin/unicode_stop
740 | usr/bin/kbd_mode
741 | usr/bin/fgconsole
742 | usr/bin/setmetamode
743 | usr/bin/dumpkeys
744 | usr/bin/resizecons
745 | usr/bin/setfont
746 | usr/bin/deallocvt
747 | usr/bin/showconsolefont
748 | usr/doc/
749 | usr/doc/kbd-1.15.2/
750 | usr/doc/kbd-1.15.2/TODO
751 | usr/doc/kbd-1.15.2/kbd.FAQ.txt
752 | usr/doc/kbd-1.15.2/repeat/
753 | usr/doc/kbd-1.15.2/repeat/set_kbd_repeat-2
754 | usr/doc/kbd-1.15.2/repeat/set_kbd_repeat-1
755 | usr/doc/kbd-1.15.2/n474.doc
756 | usr/doc/kbd-1.15.2/kbd.FAQ-2.html
757 | usr/doc/kbd-1.15.2/ChangeLog
758 | usr/doc/kbd-1.15.2/kbd.FAQ-3.html
759 | usr/doc/kbd-1.15.2/README
760 | usr/doc/kbd-1.15.2/iso8859-10.txt
761 | usr/doc/kbd-1.15.2/iso8859-5.txt
762 | usr/doc/kbd-1.15.2/kbd.FAQ-20.html
763 | usr/doc/kbd-1.15.2/cp1252.txt
764 | usr/doc/kbd-1.15.2/README.Crosser
765 | usr/doc/kbd-1.15.2/console.docs
766 | usr/doc/kbd-1.15.2/kbd.FAQ-13.html
767 | usr/doc/kbd-1.15.2/kbd.FAQ-12.html
768 | usr/doc/kbd-1.15.2/kbd.FAQ-17.html
769 | usr/doc/kbd-1.15.2/kbd.FAQ-5.html
770 | usr/doc/kbd-1.15.2/kbd.FAQ-21.html
771 | usr/doc/kbd-1.15.2/iso8859-3.txt
772 | usr/doc/kbd-1.15.2/kbd.FAQ-9.html
773 | usr/doc/kbd-1.15.2/keysyms.h.info
774 | usr/doc/kbd-1.15.2/kbd.FAQ-14.html
775 | usr/doc/kbd-1.15.2/iso8859-11.txt
776 | usr/doc/kbd-1.15.2/iso8859-15.txt
777 | usr/doc/kbd-1.15.2/kbd.FAQ-6.html
778 | usr/doc/kbd-1.15.2/kbd.FAQ-1.html
779 | usr/doc/kbd-1.15.2/iso8859-14.txt
780 | usr/doc/kbd-1.15.2/dvorak/
781 | usr/doc/kbd-1.15.2/dvorak/ANSI-dvorak.gif
782 | usr/doc/kbd-1.15.2/dvorak/dvorak-r.xmodmap
783 | usr/doc/kbd-1.15.2/dvorak/dvorak.diffs
784 | usr/doc/kbd-1.15.2/dvorak/dvorak-l.xmodmap
785 | usr/doc/kbd-1.15.2/dvorak/dvorak.xmodmap
786 | usr/doc/kbd-1.15.2/dvorak/dvorak.txt
787 | usr/doc/kbd-1.15.2/as400.kbd
788 | usr/doc/kbd-1.15.2/iso8859.info
789 | usr/doc/kbd-1.15.2/font-formats/
790 | usr/doc/kbd-1.15.2/font-formats/font-formats.html
791 | usr/doc/kbd-1.15.2/font-formats/font-formats-1.html
792 | usr/doc/kbd-1.15.2/font-formats/font-formats-3.html
793 | usr/doc/kbd-1.15.2/font-formats/font-formats.sgml
794 | usr/doc/kbd-1.15.2/font-formats/font-formats-2.html
795 | usr/doc/kbd-1.15.2/font-formats/font-formats-5.html
796 | usr/doc/kbd-1.15.2/font-formats/font-formats-4.html
797 | usr/doc/kbd-1.15.2/iso8859-7.txt
798 | usr/doc/kbd-1.15.2/iso8859-8.txt
799 | usr/doc/kbd-1.15.2/kbd.FAQ-22.html
800 | usr/doc/kbd-1.15.2/kbd.FAQ-10.html
801 | usr/doc/kbd-1.15.2/COPYING
802 | usr/doc/kbd-1.15.2/kbd.FAQ-7.html
803 | usr/doc/kbd-1.15.2/iso8859-9.txt
804 | usr/doc/kbd-1.15.2/scancodes/
805 | usr/doc/kbd-1.15.2/scancodes/README
806 | usr/doc/kbd-1.15.2/iso8859-1.txt
807 | usr/doc/kbd-1.15.2/utf/
808 | usr/doc/kbd-1.15.2/utf/README
809 | usr/doc/kbd-1.15.2/utf/utflist
810 | usr/doc/kbd-1.15.2/utf/ethiopic
811 | usr/doc/kbd-1.15.2/utf/utfdemo
812 | usr/doc/kbd-1.15.2/utf/\342\231\252\342\231\254
813 | usr/doc/kbd-1.15.2/kbd.FAQ.html
814 | usr/doc/kbd-1.15.2/A20/
815 | usr/doc/kbd-1.15.2/A20/A20.html
816 | usr/doc/kbd-1.15.2/A20/xfix-286mode2
817 | usr/doc/kbd-1.15.2/kbd.FAQ-15.html
818 | usr/doc/kbd-1.15.2/iso8859-6.txt
819 | usr/doc/kbd-1.15.2/kbd.FAQ-16.html
820 | usr/doc/kbd-1.15.2/kbd.FAQ-23.html
821 | usr/doc/kbd-1.15.2/kbd.FAQ-8.html
822 | usr/doc/kbd-1.15.2/kbd.FAQ-11.html
823 | usr/doc/kbd-1.15.2/kbd.FAQ-18.html
824 | usr/doc/kbd-1.15.2/cirrus.videomodes
825 | usr/doc/kbd-1.15.2/kbd.FAQ-19.html
826 | usr/doc/kbd-1.15.2/kbd.FAQ-4.html
827 | usr/doc/kbd-1.15.2/iso8859-13.txt
828 | usr/doc/kbd-1.15.2/iso8859-4.txt
829 | usr/doc/kbd-1.15.2/iso8859-2.txt
830 | install/
831 | install/doinst.sh
832 | install/slack-desc
833 | var/
834 | var/log/
835 | var/log/setup/
836 | var/log/setup/setup.setconsolefont
837 |
--------------------------------------------------------------------------------
/test/samples/var/log/removed_packages/bash-4.1.007-x86_64-1-upgraded-2011-03-18,09:27:55:
--------------------------------------------------------------------------------
1 | PACKAGE NAME: bash-4.1.007-x86_64-1
2 | COMPRESSED PACKAGE SIZE: 939K
3 | UNCOMPRESSED PACKAGE SIZE: 3760K
4 | PACKAGE LOCATION: /var/log/mount/slackware64/a/bash-4.1.007-x86_64-1.txz
5 | PACKAGE DESCRIPTION:
6 | bash: bash (sh-compatible shell)
7 | bash:
8 | bash: The GNU Bourne-Again SHell. Bash is a sh-compatible command
9 | bash: interpreter that executes commands read from the standard input or
10 | bash: from a file. Bash also incorporates useful features from the Korn
11 | bash: and C shells (ksh and csh). Bash is ultimately intended to be a
12 | bash: conformant implementation of the IEEE Posix Shell and Tools
13 | bash: specification (IEEE Working Group 1003.2).
14 | bash:
15 | bash: Bash must be present for the system to boot properly.
16 | bash:
17 | FILE LIST:
18 | ./
19 | install/
20 | install/slack-desc
21 | install/doinst.sh
22 | usr/
23 | usr/share/
24 | usr/share/locale/
25 | usr/share/locale/pl/
26 | usr/share/locale/pl/LC_MESSAGES/
27 | usr/share/locale/pl/LC_MESSAGES/bash.mo
28 | usr/share/locale/ja/
29 | usr/share/locale/ja/LC_MESSAGES/
30 | usr/share/locale/ja/LC_MESSAGES/bash.mo
31 | usr/share/locale/fi/
32 | usr/share/locale/fi/LC_MESSAGES/
33 | usr/share/locale/fi/LC_MESSAGES/bash.mo
34 | usr/share/locale/et/
35 | usr/share/locale/et/LC_MESSAGES/
36 | usr/share/locale/et/LC_MESSAGES/bash.mo
37 | usr/share/locale/de/
38 | usr/share/locale/de/LC_MESSAGES/
39 | usr/share/locale/de/LC_MESSAGES/bash.mo
40 | usr/share/locale/pt_BR/
41 | usr/share/locale/pt_BR/LC_MESSAGES/
42 | usr/share/locale/pt_BR/LC_MESSAGES/bash.mo
43 | usr/share/locale/zh_TW/
44 | usr/share/locale/zh_TW/LC_MESSAGES/
45 | usr/share/locale/zh_TW/LC_MESSAGES/bash.mo
46 | usr/share/locale/ro/
47 | usr/share/locale/ro/LC_MESSAGES/
48 | usr/share/locale/ro/LC_MESSAGES/bash.mo
49 | usr/share/locale/eo/
50 | usr/share/locale/eo/LC_MESSAGES/
51 | usr/share/locale/eo/LC_MESSAGES/bash.mo
52 | usr/share/locale/ru/
53 | usr/share/locale/ru/LC_MESSAGES/
54 | usr/share/locale/ru/LC_MESSAGES/bash.mo
55 | usr/share/locale/af/
56 | usr/share/locale/af/LC_MESSAGES/
57 | usr/share/locale/af/LC_MESSAGES/bash.mo
58 | usr/share/locale/hu/
59 | usr/share/locale/hu/LC_MESSAGES/
60 | usr/share/locale/hu/LC_MESSAGES/bash.mo
61 | usr/share/locale/vi/
62 | usr/share/locale/vi/LC_MESSAGES/
63 | usr/share/locale/vi/LC_MESSAGES/bash.mo
64 | usr/share/locale/ga/
65 | usr/share/locale/ga/LC_MESSAGES/
66 | usr/share/locale/ga/LC_MESSAGES/bash.mo
67 | usr/share/locale/es/
68 | usr/share/locale/es/LC_MESSAGES/
69 | usr/share/locale/es/LC_MESSAGES/bash.mo
70 | usr/share/locale/en@quot/
71 | usr/share/locale/en@quot/LC_MESSAGES/
72 | usr/share/locale/en@quot/LC_MESSAGES/bash.mo
73 | usr/share/locale/ca/
74 | usr/share/locale/ca/LC_MESSAGES/
75 | usr/share/locale/ca/LC_MESSAGES/bash.mo
76 | usr/share/locale/id/
77 | usr/share/locale/id/LC_MESSAGES/
78 | usr/share/locale/id/LC_MESSAGES/bash.mo
79 | usr/share/locale/en@boldquot/
80 | usr/share/locale/en@boldquot/LC_MESSAGES/
81 | usr/share/locale/en@boldquot/LC_MESSAGES/bash.mo
82 | usr/share/locale/sk/
83 | usr/share/locale/sk/LC_MESSAGES/
84 | usr/share/locale/sk/LC_MESSAGES/bash.mo
85 | usr/share/locale/cs/
86 | usr/share/locale/cs/LC_MESSAGES/
87 | usr/share/locale/cs/LC_MESSAGES/bash.mo
88 | usr/share/locale/nl/
89 | usr/share/locale/nl/LC_MESSAGES/
90 | usr/share/locale/nl/LC_MESSAGES/bash.mo
91 | usr/share/locale/bg/
92 | usr/share/locale/bg/LC_MESSAGES/
93 | usr/share/locale/bg/LC_MESSAGES/bash.mo
94 | usr/share/locale/sv/
95 | usr/share/locale/sv/LC_MESSAGES/
96 | usr/share/locale/sv/LC_MESSAGES/bash.mo
97 | usr/share/locale/lt/
98 | usr/share/locale/lt/LC_MESSAGES/
99 | usr/share/locale/lt/LC_MESSAGES/bash.mo
100 | usr/share/locale/tr/
101 | usr/share/locale/tr/LC_MESSAGES/
102 | usr/share/locale/tr/LC_MESSAGES/bash.mo
103 | usr/share/locale/fr/
104 | usr/share/locale/fr/LC_MESSAGES/
105 | usr/share/locale/fr/LC_MESSAGES/bash.mo
106 | usr/man/
107 | usr/man/man1/
108 | usr/man/man1/rbash.1.gz
109 | usr/man/man1/builtins.1.gz
110 | usr/man/man1/bash.1.gz
111 | usr/info/
112 | usr/info/bash.info.gz
113 | usr/doc/
114 | usr/doc/bash-4.1/
115 | usr/doc/bash-4.1/Y2K
116 | usr/doc/bash-4.1/FAQ
117 | usr/doc/bash-4.1/INTRO
118 | usr/doc/bash-4.1/INSTALL
119 | usr/doc/bash-4.1/COPYING
120 | usr/doc/bash-4.1/ChangeLog
121 | usr/doc/bash-4.1/README
122 | usr/doc/bash-4.1/NEWS
123 | usr/doc/bash-4.1/CHANGES
124 | usr/doc/bash-4.1/NOTES
125 | usr/doc/bash-4.1/COMPAT
126 | usr/doc/bash-4.1/article.txt
127 | usr/doc/bash-4.1/AUTHORS
128 | usr/doc/bash-4.1/MANIFEST
129 | bin/
130 | bin/bash4.new
131 |
--------------------------------------------------------------------------------
/test/samples/var/log/removed_packages/choqok-0.9.90-x86_64-1_SBo:
--------------------------------------------------------------------------------
1 | PACKAGE NAME: choqok-0.9.90-x86_64-1_SBo
2 | COMPRESSED PACKAGE SIZE: 1080K
3 | UNCOMPRESSED PACKAGE SIZE: 3310K
4 | PACKAGE LOCATION: /tmp/sbopkg/sbopkg-sbooutputdir/choqok-0.9.90-x86_64-1_SBo.tgz
5 | PACKAGE DESCRIPTION:
6 | choqok: choqok (micro-blogging client for KDE4)
7 | choqok:
8 | choqok: Choqok is a micro-blogging client for KDE4, supporting twitter.com
9 | choqok: and identi.ca services. The name comes from an ancient Persian word
10 | choqok: meaning 'sparrow'.
11 | choqok:
12 | choqok: Home: http://choqok.gnufolks.org
13 | choqok:
14 | choqok:
15 | choqok:
16 | choqok:
17 | FILE LIST:
18 | ./
19 | install/
20 | install/slack-desc
21 | install/doinst.sh
22 | usr/
23 | usr/include/
24 | usr/include/choqok/
25 | usr/include/choqok/choqok_export.h
26 | usr/include/choqok/shortener.h
27 | usr/include/choqok/uploader.h
28 | usr/include/choqok/microblogwidget.h
29 | usr/include/choqok/choqokappearancesettings.h
30 | usr/include/choqok/choqokbehaviorsettings.h
31 | usr/include/choqok/mediamanager.h
32 | usr/include/choqok/pluginmanager.h
33 | usr/include/choqok/passwordmanager.h
34 | usr/include/choqok/timelinewidget.h
35 | usr/include/choqok/choqoktextedit.h
36 | usr/include/choqok/textbrowser.h
37 | usr/include/choqok/choqoktools.h
38 | usr/include/choqok/postwidget.h
39 | usr/include/choqok/mainwindow.h
40 | usr/include/choqok/quickpost.h
41 | usr/include/choqok/shortenmanager.h
42 | usr/include/choqok/notifymanager.h
43 | usr/include/choqok/microblog.h
44 | usr/include/choqok/twitterapihelper/
45 | usr/include/choqok/twitterapihelper/twitterapisearch.h
46 | usr/include/choqok/twitterapihelper/twitterapiaccount.h
47 | usr/include/choqok/twitterapihelper/twitterapipostwidget.h
48 | usr/include/choqok/twitterapihelper/twitterapisearchdialog.h
49 | usr/include/choqok/twitterapihelper/twitterapiwhoiswidget.h
50 | usr/include/choqok/twitterapihelper/twitterapimicroblog.h
51 | usr/include/choqok/twitterapihelper/twitterapishowthread.h
52 | usr/include/choqok/twitterapihelper/twitterapicomposerwidget.h
53 | usr/include/choqok/twitterapihelper/twitterapitextedit.h
54 | usr/include/choqok/twitterapihelper/twitterapimicroblogwidget.h
55 | usr/include/choqok/twitterapihelper/twitterapisearchtimelinewidget.h
56 | usr/include/choqok/twitterapihelper/twitterapidmessagedialog.h
57 | usr/include/choqok/choqoktypes.h
58 | usr/include/choqok/uploadmediadialog.h
59 | usr/include/choqok/editaccountwidget.h
60 | usr/include/choqok/choqokuiglobal.h
61 | usr/include/choqok/dbushandler.h
62 | usr/include/choqok/accountmanager.h
63 | usr/include/choqok/choqokid.h
64 | usr/include/choqok/composerwidget.h
65 | usr/include/choqok/plugin.h
66 | usr/include/choqok/account.h
67 | usr/lib64/
68 | usr/lib64/libtwitterapihelper.so.0.9.5
69 | usr/lib64/kde4/
70 | usr/lib64/kde4/choqok_ur1_ca.so
71 | usr/lib64/kde4/choqok_imagepreview.so
72 | usr/lib64/kde4/choqok_laconica.so
73 | usr/lib64/kde4/choqok_u_nu.so
74 | usr/lib64/kde4/choqok_nowlistening.so
75 | usr/lib64/kde4/choqok_bit_ly.so
76 | usr/lib64/kde4/kcm_choqok_accountsconfig.so
77 | usr/lib64/kde4/kcm_choqok_bit_ly.so
78 | usr/lib64/kde4/kcm_choqok_yourls.so
79 | usr/lib64/kde4/kcm_choqok_yfrog.so
80 | usr/lib64/kde4/choqok_tinyarro_ws.so
81 | usr/lib64/kde4/choqok_yourls.so
82 | usr/lib64/kde4/choqok_digg.so
83 | usr/lib64/kde4/choqok_twitter.so
84 | usr/lib64/kde4/choqok_searchaction.so
85 | usr/lib64/kde4/kcm_choqok_tinyarro_ws.so
86 | usr/lib64/kde4/kcm_choqok_behaviorconfig.so
87 | usr/lib64/kde4/choqok_tighturl.so
88 | usr/lib64/kde4/choqok_goo_gl.so
89 | usr/lib64/kde4/choqok_ur_ly.so
90 | usr/lib64/kde4/choqok_videopreview.so
91 | usr/lib64/kde4/kcm_choqok_twitpic.so
92 | usr/lib64/kde4/choqok_filter.so
93 | usr/lib64/kde4/choqok_yfrog.so
94 | usr/lib64/kde4/choqok_twitpic.so
95 | usr/lib64/kde4/choqok_is_gd.so
96 | usr/lib64/kde4/kcm_choqok_pluginconfig.so
97 | usr/lib64/kde4/choqok_three_ly.so
98 | usr/lib64/kde4/choqok_urls_io.so
99 | usr/lib64/kde4/kcm_choqok_untiny.so
100 | usr/lib64/kde4/kcm_choqok_appearanceconfig.so
101 | usr/lib64/kde4/konqchoqokplugin.so
102 | usr/lib64/kde4/choqok_untiny.so
103 | usr/lib64/kde4/kcm_choqok_nowlistening.so
104 | usr/lib64/libchoqok.so.0.9.90
105 | usr/bin/
106 | usr/bin/choqok
107 | usr/share/
108 | usr/share/locale/
109 | usr/share/locale/et/
110 | usr/share/locale/et/LC_MESSAGES/
111 | usr/share/locale/et/LC_MESSAGES/choqok.mo
112 | usr/share/locale/pl/
113 | usr/share/locale/pl/LC_MESSAGES/
114 | usr/share/locale/pl/LC_MESSAGES/choqok.mo
115 | usr/share/locale/pt_BR/
116 | usr/share/locale/pt_BR/LC_MESSAGES/
117 | usr/share/locale/pt_BR/LC_MESSAGES/choqok.mo
118 | usr/share/locale/es/
119 | usr/share/locale/es/LC_MESSAGES/
120 | usr/share/locale/es/LC_MESSAGES/choqok.mo
121 | usr/share/locale/hr/
122 | usr/share/locale/hr/LC_MESSAGES/
123 | usr/share/locale/hr/LC_MESSAGES/choqok.mo
124 | usr/share/locale/fi/
125 | usr/share/locale/fi/LC_MESSAGES/
126 | usr/share/locale/fi/LC_MESSAGES/choqok.mo
127 | usr/share/locale/ca@valencia/
128 | usr/share/locale/ca@valencia/LC_MESSAGES/
129 | usr/share/locale/ca@valencia/LC_MESSAGES/choqok.mo
130 | usr/share/locale/nb/
131 | usr/share/locale/nb/LC_MESSAGES/
132 | usr/share/locale/nb/LC_MESSAGES/choqok.mo
133 | usr/share/locale/sv/
134 | usr/share/locale/sv/LC_MESSAGES/
135 | usr/share/locale/sv/LC_MESSAGES/choqok.mo
136 | usr/share/locale/da/
137 | usr/share/locale/da/LC_MESSAGES/
138 | usr/share/locale/da/LC_MESSAGES/choqok.mo
139 | usr/share/locale/ja/
140 | usr/share/locale/ja/LC_MESSAGES/
141 | usr/share/locale/ja/LC_MESSAGES/choqok.mo
142 | usr/share/locale/en_GB/
143 | usr/share/locale/en_GB/LC_MESSAGES/
144 | usr/share/locale/en_GB/LC_MESSAGES/choqok.mo
145 | usr/share/locale/ca/
146 | usr/share/locale/ca/LC_MESSAGES/
147 | usr/share/locale/ca/LC_MESSAGES/choqok.mo
148 | usr/share/locale/pt/
149 | usr/share/locale/pt/LC_MESSAGES/
150 | usr/share/locale/pt/LC_MESSAGES/choqok.mo
151 | usr/share/locale/bg/
152 | usr/share/locale/bg/LC_MESSAGES/
153 | usr/share/locale/bg/LC_MESSAGES/choqok.mo
154 | usr/share/locale/fr/
155 | usr/share/locale/fr/LC_MESSAGES/
156 | usr/share/locale/fr/LC_MESSAGES/choqok.mo
157 | usr/share/locale/nl/
158 | usr/share/locale/nl/LC_MESSAGES/
159 | usr/share/locale/nl/LC_MESSAGES/choqok.mo
160 | usr/share/locale/uk/
161 | usr/share/locale/uk/LC_MESSAGES/
162 | usr/share/locale/uk/LC_MESSAGES/choqok.mo
163 | usr/share/locale/de/
164 | usr/share/locale/de/LC_MESSAGES/
165 | usr/share/locale/de/LC_MESSAGES/choqok.mo
166 | usr/share/locale/hu/
167 | usr/share/locale/hu/LC_MESSAGES/
168 | usr/share/locale/hu/LC_MESSAGES/choqok.mo
169 | usr/share/locale/zh_CN/
170 | usr/share/locale/zh_CN/LC_MESSAGES/
171 | usr/share/locale/zh_CN/LC_MESSAGES/choqok.mo
172 | usr/share/kde4/
173 | usr/share/kde4/services/
174 | usr/share/kde4/services/choqok_tinyarro_ws.desktop
175 | usr/share/kde4/services/choqok_yourls.desktop
176 | usr/share/kde4/services/choqok_nowlistening.desktop
177 | usr/share/kde4/services/choqok_u_nu.desktop
178 | usr/share/kde4/services/choqok_ur1_ca.desktop
179 | usr/share/kde4/services/choqok_twitpic.desktop
180 | usr/share/kde4/services/choqok_filter.desktop
181 | usr/share/kde4/services/choqok_goo_gl.desktop
182 | usr/share/kde4/services/choqok_bit_ly_config.desktop
183 | usr/share/kde4/services/choqok_yourls_config.desktop
184 | usr/share/kde4/services/choqok_twitpic_config.desktop
185 | usr/share/kde4/services/choqok_imagepreview.desktop
186 | usr/share/kde4/services/choqok_yfrog.desktop
187 | usr/share/kde4/services/choqok_untiny_config.desktop
188 | usr/share/kde4/services/choqok_nowlistening_config.desktop
189 | usr/share/kde4/services/choqok_urls_io.desktop
190 | usr/share/kde4/services/choqok_laconica.desktop
191 | usr/share/kde4/services/choqok_appearanceconfig.desktop
192 | usr/share/kde4/services/choqok_accountsconfig.desktop
193 | usr/share/kde4/services/choqok_digg.desktop
194 | usr/share/kde4/services/choqok_bit_ly.desktop
195 | usr/share/kde4/services/choqok_behaviorconfig.desktop
196 | usr/share/kde4/services/choqok_pluginconfig.desktop
197 | usr/share/kde4/services/choqok_twitter.desktop
198 | usr/share/kde4/services/choqok_yfrog_config.desktop
199 | usr/share/kde4/services/choqok_ur_ly.desktop
200 | usr/share/kde4/services/choqok_is_gd.desktop
201 | usr/share/kde4/services/choqok_tinyarro_ws_config.desktop
202 | usr/share/kde4/services/choqok_untiny.desktop
203 | usr/share/kde4/services/choqok_tighturl.desktop
204 | usr/share/kde4/services/choqok_searchaction.desktop
205 | usr/share/kde4/services/choqok_three_ly.desktop
206 | usr/share/kde4/services/choqok_videopreview.desktop
207 | usr/share/kde4/services/ServiceMenus/
208 | usr/share/kde4/services/ServiceMenus/choqok_share.desktop
209 | usr/share/kde4/services/ServiceMenus/choqok_upload.desktop
210 | usr/share/kde4/servicetypes/
211 | usr/share/kde4/servicetypes/choqokplugin.desktop
212 | usr/share/kde4/servicetypes/choqokshortenerplugin.desktop
213 | usr/share/kde4/servicetypes/choqokuploaderplugin.desktop
214 | usr/share/apps/
215 | usr/share/apps/choqok_filter/
216 | usr/share/apps/choqok_filter/filterui.rc
217 | usr/share/apps/khtml/
218 | usr/share/apps/khtml/kpartplugins/
219 | usr/share/apps/khtml/kpartplugins/konqchoqok.rc
220 | usr/share/apps/khtml/kpartplugins/konqchoqok.desktop
221 | usr/share/apps/choqok_nowlistening/
222 | usr/share/apps/choqok_nowlistening/nowlisteningui.rc
223 | usr/share/apps/cmake/
224 | usr/share/apps/cmake/modules/
225 | usr/share/apps/cmake/modules/FindChoqok.cmake
226 | usr/share/apps/cmake/modules/FindQJson.cmake
227 | usr/share/apps/cmake/modules/FindQtOAuth.cmake
228 | usr/share/apps/choqok_searchaction/
229 | usr/share/apps/choqok_searchaction/searchactionui.rc
230 | usr/share/apps/dbus-1/
231 | usr/share/apps/dbus-1/services/
232 | usr/share/apps/dbus-1/services/org.kde.choqok.service
233 | usr/share/apps/choqok/
234 | usr/share/apps/choqok/choqokui.rc
235 | usr/share/apps/choqok/choqok.notifyrc
236 | usr/share/apps/choqok/images/
237 | usr/share/apps/choqok/images/splash_screen.png
238 | usr/share/applications/
239 | usr/share/applications/kde4/
240 | usr/share/applications/kde4/choqok.desktop
241 | usr/share/icons/
242 | usr/share/icons/hicolor/
243 | usr/share/icons/hicolor/48x48/
244 | usr/share/icons/hicolor/48x48/apps/
245 | usr/share/icons/hicolor/48x48/apps/twitter_microblog.png
246 | usr/share/icons/hicolor/48x48/apps/laconica_microblog.png
247 | usr/share/icons/hicolor/48x48/apps/choqok.png
248 | usr/share/icons/hicolor/22x22/
249 | usr/share/icons/hicolor/22x22/apps/
250 | usr/share/icons/hicolor/22x22/apps/twitpic_uploader.png
251 | usr/share/icons/hicolor/22x22/apps/twitter_microblog.png
252 | usr/share/icons/hicolor/22x22/apps/laconica_microblog.png
253 | usr/share/icons/hicolor/22x22/apps/choqok.png
254 | usr/share/icons/hicolor/22x22/apps/yfrog_uploader.png
255 | usr/share/icons/hicolor/32x32/
256 | usr/share/icons/hicolor/32x32/apps/
257 | usr/share/icons/hicolor/32x32/apps/twitpic_uploader.png
258 | usr/share/icons/hicolor/32x32/apps/twitter_microblog.png
259 | usr/share/icons/hicolor/32x32/apps/laconica_microblog.png
260 | usr/share/icons/hicolor/32x32/apps/choqok.png
261 | usr/share/icons/hicolor/32x32/apps/yfrog_uploader.png
262 | usr/share/icons/hicolor/16x16/
263 | usr/share/icons/hicolor/16x16/apps/
264 | usr/share/icons/hicolor/16x16/apps/twitpic_uploader.png
265 | usr/share/icons/hicolor/16x16/apps/twitter_microblog.png
266 | usr/share/icons/hicolor/16x16/apps/laconica_microblog.png
267 | usr/share/icons/hicolor/16x16/apps/choqok.png
268 | usr/share/icons/hicolor/16x16/apps/yfrog_uploader.png
269 | usr/share/icons/hicolor/16x16/actions/
270 | usr/share/icons/hicolor/16x16/actions/retweet.png
271 | usr/share/icons/hicolor/64x64/
272 | usr/share/icons/hicolor/64x64/apps/
273 | usr/share/icons/hicolor/64x64/apps/choqok.png
274 | usr/share/icons/hicolor/128x128/
275 | usr/share/icons/hicolor/128x128/apps/
276 | usr/share/icons/hicolor/128x128/apps/choqok.png
277 | usr/share/config.kcfg/
278 | usr/share/config.kcfg/choqokbehaviorsettings.kcfg
279 | usr/share/config.kcfg/yfrogsettings.kcfg
280 | usr/share/config.kcfg/bit_ly_settings.kcfg
281 | usr/share/config.kcfg/choqokappearancesettings.kcfg
282 | usr/share/config.kcfg/yourlssettings.kcfg
283 | usr/share/config.kcfg/twitpicsettings.kcfg
284 | usr/share/config.kcfg/nowlisteningsettings.kcfg
285 | usr/share/config.kcfg/untinysettings.kcfg
286 | usr/share/config.kcfg/tinyarro_ws_settings.kcfg
287 | usr/doc/
288 | usr/doc/choqok-0.9.90/
289 | usr/doc/choqok-0.9.90/choqok.SlackBuild
290 | usr/doc/choqok-0.9.90/README
291 | usr/doc/choqok-0.9.90/TODO
292 | usr/doc/choqok-0.9.90/CMakeLists.txt
293 | usr/doc/choqok-0.9.90/AUTHORS
294 | usr/doc/choqok-0.9.90/COPYING
295 |
--------------------------------------------------------------------------------
/test/samples/var/log/removed_scripts/bash-4.1.007-x86_64-1-upgraded-2011-03-18,09:27:55:
--------------------------------------------------------------------------------
1 | if [ -r bin/bash ]; then
2 | mv bin/bash bin/bash.old
3 | fi
4 | mv bin/bash4.new bin/bash
5 | if [ -f bin/bash.old ]; then
6 | rm -f bin/bash.old
7 | fi
8 | if [ ! -r etc/shells ]; then
9 | touch etc/shells
10 | chmod 644 etc/shells
11 | fi
12 | if grep -wq /bin/bash etc/shells ; then
13 | true
14 | else
15 | echo /bin/bash >> etc/shells
16 | fi
17 | ( cd usr/bin ; rm -rf bash )
18 | ( cd usr/bin ; ln -sf /bin/bash bash )
19 |
--------------------------------------------------------------------------------
/test/samples/var/log/removed_scripts/choqok-0.9.90-x86_64-1_SBo:
--------------------------------------------------------------------------------
1 | if [ -x /usr/bin/update-desktop-database ]; then
2 | /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
3 | fi
4 |
5 | if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
6 | if [ -x /usr/bin/gtk-update-icon-cache ]; then
7 | /usr/bin/gtk-update-icon-cache usr/share/icons/hicolor >/dev/null 2>&1
8 | fi
9 | fi
10 |
11 | ( cd usr/lib64 ; rm -rf libtwitterapihelper.so )
12 | ( cd usr/lib64 ; ln -sf libtwitterapihelper.so.0 libtwitterapihelper.so )
13 | ( cd usr/lib64 ; rm -rf libchoqok.so )
14 | ( cd usr/lib64 ; ln -sf libchoqok.so.0 libchoqok.so )
15 | ( cd usr/lib64 ; rm -rf libchoqok.so.0 )
16 | ( cd usr/lib64 ; ln -sf libchoqok.so.0.9.90 libchoqok.so.0 )
17 | ( cd usr/lib64 ; rm -rf libtwitterapihelper.so.0 )
18 | ( cd usr/lib64 ; ln -sf libtwitterapihelper.so.0.9.5 libtwitterapihelper.so.0 )
19 |
--------------------------------------------------------------------------------
/test/samples/var/log/scripts/bash-4.1.010-x86_64-1:
--------------------------------------------------------------------------------
1 | if [ -r bin/bash ]; then
2 | mv bin/bash bin/bash.old
3 | fi
4 | mv bin/bash4.new bin/bash
5 | if [ -f bin/bash.old ]; then
6 | rm -f bin/bash.old
7 | fi
8 | if [ ! -r etc/shells ]; then
9 | touch etc/shells
10 | chmod 644 etc/shells
11 | fi
12 | if grep -wq /bin/bash etc/shells ; then
13 | true
14 | else
15 | echo /bin/bash >> etc/shells
16 | fi
17 | ( cd usr/bin ; rm -rf bash )
18 | ( cd usr/bin ; ln -sf /bin/bash bash )
19 |
--------------------------------------------------------------------------------
/test/samples/var/log/scripts/kbd-1.15.2-x86_64-1:
--------------------------------------------------------------------------------
1 |
2 | config() {
3 | NEW="$1"
4 | OLD="$(dirname $NEW)/$(basename $NEW .new)"
5 | # If there's no config file by that name, mv it over:
6 | if [ ! -r $OLD ]; then
7 | mv $NEW $OLD
8 | elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
9 | # toss the redundant copy
10 | rm $NEW
11 | fi
12 | # Otherwise, we leave the .new copy for the admin to consider...
13 | }
14 |
15 | # Leave any new rc.font with the same permissions as the old one:
16 | # This is a kludge, but it's because there's no --reference option
17 | # on busybox's 'chmod':
18 | if [ -e etc/rc.d/rc.font ]; then
19 | if [ -x etc/rc.d/rc.font ]; then
20 | chmod 755 etc/rc.d/rc.font.new
21 | else
22 | chmod 644 etc/rc.d/rc.font.new
23 | fi
24 | fi
25 | # Then config() it:
26 | config etc/rc.d/rc.font.new
27 |
28 | ( cd usr/share/kbd/keymaps/i386/qwerty ; rm -rf ko.map.gz )
29 | ( cd usr/share/kbd/keymaps/i386/qwerty ; ln -sf us.map.gz ko.map.gz )
30 | ( cd usr/share/kbd/keymaps ; rm -rf ppc )
31 | ( cd usr/share/kbd/keymaps ; ln -sf mac ppc )
32 | ( cd usr/bin ; rm -rf loadkeys )
33 | ( cd usr/bin ; ln -sf ../../bin/loadkeys loadkeys )
34 | ( cd usr/bin ; rm -rf psfgettable )
35 | ( cd usr/bin ; ln -sf psfxtable psfgettable )
36 | ( cd usr/bin ; rm -rf psfaddtable )
37 | ( cd usr/bin ; ln -sf psfxtable psfaddtable )
38 | ( cd usr/bin ; rm -rf psfstriptable )
39 | ( cd usr/bin ; ln -sf psfxtable psfstriptable )
40 |
--------------------------------------------------------------------------------
/test/test_basic.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | # http://en.wikibooks.org/wiki/Ruby_Programming/Unit_testing
3 |
4 | $:.insert(0, File.expand_path(File.dirname(File.expand_path(__FILE__)) + "/../lib/"))
5 |
6 | require 'test/unit'
7 | require 'slackware'
8 |
9 | class TestBasics < Test::Unit::TestCase
10 | def setup
11 | end
12 |
13 | def teardown
14 | end
15 |
16 | def test_utils_version
17 | assert_not_nil(Slackware::UTILS_VERSION)
18 | end
19 | def test_slackware_version
20 | assert_not_nil(Slackware::SLACKWARE_VERSION)
21 | end
22 | def test_slackware_system_version
23 | assert_not_nil(Slackware::System.version)
24 | end
25 | end
26 |
27 | # vim : set sw=2 sts=2 et :
28 |
--------------------------------------------------------------------------------
/test/test_changelog.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | # http://en.wikibooks.org/wiki/Ruby_Programming/Unit_testing
3 |
4 | $:.insert(0, File.expand_path(File.dirname(File.expand_path(__FILE__)) + "/../lib/"))
5 |
6 | require 'test/unit'
7 | require 'slackware'
8 |
9 | class TestChangeLog < Test::Unit::TestCase
10 | def setup
11 | @changlog_file = File.dirname(File.expand_path(__FILE__)) + "/samples/ChangeLog.txt"
12 | @changelog = Slackware::ChangeLog.new()
13 | end
14 |
15 | def teardown
16 | end
17 |
18 | def test_new_changelog_empty
19 | c = Slackware::ChangeLog.new()
20 | assert_not_nil(c)
21 | c = nil
22 | end
23 | def test_new_changelog_file
24 | c = Slackware::ChangeLog.new(:file => @changlog_file)
25 | assert_not_nil(c)
26 | c = nil
27 | end
28 | def test_parse_changelog
29 | c = Slackware::ChangeLog.parse(@changlog_file)
30 | assert_not_nil(c)
31 | c = nil
32 | end
33 | def test_open_changelog
34 | c = Slackware::ChangeLog.open(@changlog_file)
35 | assert_not_nil(c)
36 | c = nil
37 | end
38 | def test_new_changelog_update_empty
39 | c = Slackware::ChangeLog::Update.new()
40 | assert_not_nil(c)
41 | c = nil
42 | end
43 | def test_new_changelog_entry_empty
44 | c = Slackware::ChangeLog::Entry.new()
45 | assert_not_nil(c)
46 | c = nil
47 | end
48 |
49 | # testing entries
50 |
51 | def test_sort
52 | c = Slackware::ChangeLog.parse(@changlog_file)
53 | assert_equal(1303738620, c.sort.first.date.to_i)
54 | end
55 | def test_latest
56 | c = Slackware::ChangeLog.parse(@changlog_file)
57 | assert_equal(1310679281, c.latest.date.to_i)
58 | end
59 | def test_updates
60 | c = Slackware::ChangeLog.parse(@changlog_file)
61 | assert_equal(13, c.updates.length)
62 | end
63 | def test_entries
64 | c = Slackware::ChangeLog.parse(@changlog_file)
65 | assert_equal(80, c.entries.length)
66 | end
67 | def test_security
68 | c = Slackware::ChangeLog.parse(@changlog_file)
69 | assert_equal(12, c.security.length)
70 | end
71 | def test_pkgs_removed
72 | c = Slackware::ChangeLog.parse(@changlog_file)
73 | assert_equal(0, c.pkgs_removed.length)
74 | end
75 | def test_pkgs_added
76 | c = Slackware::ChangeLog.parse(@changlog_file)
77 | assert_equal(0, c.pkgs_added.length)
78 | end
79 | def test_pkgs_upgraded
80 | c = Slackware::ChangeLog.parse(@changlog_file)
81 | assert_equal(52, c.pkgs_upgraded.length)
82 | end
83 | def test_pkgs_rebuilt
84 | c = Slackware::ChangeLog.parse(@changlog_file)
85 | assert_equal(28, c.pkgs_rebuilt.length)
86 | end
87 |
88 | # testing constants
89 | def test_abbr_daynames
90 | assert(Slackware::ChangeLog::ABBR_DAYNAMES.count == 7)
91 | end
92 | def test_abbr_monthnames
93 | assert(Slackware::ChangeLog::ABBR_MONTHNAMES.count == 12)
94 | end
95 | def test_re_date
96 | assert(Slackware::ChangeLog::RE_DATE.class == Regexp)
97 | end
98 | def test_re_changelog_break
99 | assert(Slackware::ChangeLog::RE_CHANGELOG_BREAK.class == Regexp)
100 | end
101 | def test_re_package_entry
102 | assert(Slackware::ChangeLog::RE_PACKAGE_ENTRY.class == Regexp)
103 | end
104 | def test_re_security_fix
105 | assert(Slackware::ChangeLog::RE_SECURITY_FIX.class == Regexp)
106 | end
107 |
108 | # testing the methods
109 | def test_method_file
110 | assert_respond_to(@changelog, :file)
111 | end
112 | def test_method_updates
113 | assert_respond_to(@changelog, :updates)
114 | end
115 | def test_method_entries
116 | assert_respond_to(@changelog, :entries)
117 | end
118 | def test_method_security
119 | assert_respond_to(@changelog, :security)
120 | end
121 | def test_method_pkgs_removed
122 | assert_respond_to(@changelog, :pkgs_removed)
123 | end
124 | def test_method_pkgs_added
125 | assert_respond_to(@changelog, :pkgs_added)
126 | end
127 | def test_method_pkgs_upgraded
128 | assert_respond_to(@changelog, :pkgs_upgraded)
129 | end
130 | def test_method_pkgs_rebuilt
131 | assert_respond_to(@changelog, :pkgs_rebuilt)
132 | end
133 | def test_method_parse
134 | assert_respond_to(@changelog, :parse)
135 | end
136 | def test_method_inspect
137 | assert_respond_to(@changelog, :inspect)
138 | end
139 |
140 | end
141 |
142 | class TestChangeLogUpdate < Test::Unit::TestCase
143 | def setup
144 | @update = Slackware::ChangeLog::Update.new()
145 | end
146 | def teardown
147 | @update = nil
148 | end
149 |
150 | def test_method_date
151 | assert_respond_to(@update, :date)
152 | end
153 | def test_method_notes
154 | assert_respond_to(@update, :notes)
155 | end
156 | def test_method_entries
157 | assert_respond_to(@update, :entries)
158 | end
159 |
160 | def test_method_date_eq
161 | assert_respond_to(@update, :date=)
162 | end
163 | def test_method_notes_eq
164 | assert_respond_to(@update, :notes=)
165 | end
166 |
167 | end
168 |
169 | class TestChangeLogEntry < Test::Unit::TestCase
170 | def setup
171 | @entry = Slackware::ChangeLog::Entry.new()
172 | end
173 | def teardown
174 | @entry = nil
175 | end
176 |
177 | def test_method_package
178 | assert_respond_to(@entry, :package)
179 | end
180 | def test_method_section
181 | assert_respond_to(@entry, :section)
182 | end
183 | def test_method_action
184 | assert_respond_to(@entry, :action)
185 | end
186 | def test_method_notes
187 | assert_respond_to(@entry, :notes)
188 | end
189 | def test_method_security
190 | assert_respond_to(@entry, :security)
191 | end
192 |
193 | def test_method_package_eq
194 | assert_respond_to(@entry, :package=)
195 | end
196 | def test_method_section_eq
197 | assert_respond_to(@entry, :section=)
198 | end
199 | def test_method_action_eq
200 | assert_respond_to(@entry, :action=)
201 | end
202 | def test_method_notes_eq
203 | assert_respond_to(@entry, :notes=)
204 | end
205 | def test_method_security_eq
206 | assert_respond_to(@entry, :security=)
207 | end
208 | end
209 |
210 | # vim : set sw=2 sts=2 et :
211 |
--------------------------------------------------------------------------------
/test/test_execution.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | # http://en.wikibooks.org/wiki/Ruby_Programming/Unit_testing
3 |
4 | $bin_path = File.expand_path(File.dirname(File.expand_path(__FILE__)) + "/../bin/")
5 | $lib_path = File.expand_path(File.dirname(File.expand_path(__FILE__)) + "/../lib/")
6 | $:.insert(0, $lib_path)
7 |
8 | require 'test/unit'
9 |
10 | class TestExecution < Test::Unit::TestCase
11 | def setup
12 | @prev_root_env = ENV["ROOT"]
13 | @prev_rubylib_env = ENV["RUBYLIB"]
14 | ENV["ROOT"] = File.join(File.dirname(File.expand_path(__FILE__)), 'samples')
15 | ENV["RUBYLIB"] = $lib_path
16 | end
17 | def teardown
18 | ENV["RUBYLIB"] = @prev_rubylib_env
19 | ENV["ROOT"] = @prev_root_env
20 | end
21 |
22 | def test_slp
23 | res = nil
24 | IO.popen("ruby %s/slp bash" % $bin_path) {|io| res = io.read }
25 | pid = $?
26 | assert_equal(2, res.split("\n").length, "the command did not return the correct number of results")
27 | assert_equal(true, pid.success?, "the process did not return successfully")
28 | end
29 |
30 | def test_slf
31 | res = nil
32 | IO.popen("ruby %s/slf bin/bash" % $bin_path) {|io| res = io.read }
33 | pid = $?
34 | assert_equal("bin/bash4.new", res.split(": ").last.chomp, "the expected file was not found")
35 | assert_equal(true, pid.success?, "the process did not return successfully")
36 | end
37 |
38 | def test_slt
39 | res = nil
40 | IO.popen("ruby %s/slt -e -p ^bash$ " % $bin_path) {|io| res = io.read }
41 | pid = $?
42 | assert_equal("1328035381", res.chomp.split(": ").last, "the command did not return the expected time of the package")
43 | assert_equal(true, pid.success?, "the process did not return successfully")
44 | end
45 |
46 | def test_slu
47 | res = nil
48 | IO.popen("ruby %s/slu -p ^bash$ " % $bin_path) {|io| res = io.read }
49 | pid = $?
50 | assert_equal(2, res.split("\n").length, "the command did not return the correct number of results")
51 | assert_equal(true, pid.success?, "the process did not return successfully")
52 | end
53 |
54 | def test_sli
55 | res = nil
56 | IO.popen("ruby %s/sli -p ^bash$ " % $bin_path) {|io| res = io.read }
57 | pid = $?
58 | assert_equal(13, res.split("\n").length, "the command did not return the correct number of results")
59 | assert_equal(true, pid.success?, "the process did not return successfully")
60 | end
61 |
62 | def test_sll
63 | res = nil
64 | IO.popen("ruby %s/sll bash" % $bin_path) {|io| res = io.read }
65 | pid = $?
66 | assert_equal(316, res.split("\n").length, "the command did not return the correct number of results")
67 | assert_equal(true, pid.success?, "the process did not return successfully")
68 | end
69 |
70 | def test_slo
71 | res = nil
72 | IO.popen("ruby %s/slo " % $bin_path) {|io| res = io.read }
73 | pid = $?
74 | assert_equal("", res.chomp, "the expected file was not found")
75 | assert_equal(true, pid.success?, "the process did not return successfully")
76 | end
77 | end
78 |
79 | # vim : set sw=2 sts=2 et :
80 |
--------------------------------------------------------------------------------
/test/test_package.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 |
3 | $:.insert(0, File.expand_path(File.dirname(File.expand_path(__FILE__)) + "/../lib/"))
4 |
5 | require 'test/unit'
6 | require 'slackware'
7 |
8 | def log(msg)
9 | Slackware::Log.instance.info(File.basename(__FILE__)) { msg }
10 | end
11 |
12 | class TestPackage < Test::Unit::TestCase
13 | def setup
14 | @root_prev = ENV["ROOT"]
15 | ENV["ROOT"] = File.expand_path(File.join(File.dirname(__FILE__), 'samples'))
16 | log( "ROOT: #{ENV["ROOT"]} ")
17 | end
18 | def teardown
19 | ENV["ROOT"] = @root_prev
20 | end
21 |
22 | def test_upgrade_time
23 | upgraded = []
24 | removed = []
25 | Slackware::System.removed_packages().each do |pkg|
26 | if pkg.upgrade_time
27 | upgraded << pkg
28 | else
29 | removed << pkg
30 | end
31 | end
32 |
33 | assert_equal(1, upgraded.length, "only one upgraded package to test")
34 | assert_equal(1, removed.length, "only one removed package to test")
35 |
36 | res = upgraded.map {|i| i.upgrade_time.class }.uniq
37 | assert_equal(1, res.length, "should only be 1")
38 | assert_equal(Time, res.first, "should only be a Time")
39 |
40 | res = removed.map {|i| i.upgrade_time.class }.uniq
41 | assert_equal(1, res.length, "should only be 1")
42 | assert_equal(NilClass, res.first, "should only be a nil")
43 | end
44 |
45 | end
46 |
47 | # vim : set sw=2 sts=2 et :
48 |
--------------------------------------------------------------------------------
/test/test_paths.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 |
3 | $:.insert(0, File.expand_path(File.dirname(File.expand_path(__FILE__)) + "/../lib/"))
4 |
5 | require 'test/unit'
6 | require 'slackware'
7 |
8 | def log(msg)
9 | Slackware::Log.instance.info(File.basename(__FILE__)) { msg }
10 | end
11 |
12 | class TestPaths < Test::Unit::TestCase
13 | def setup
14 | @root_prev = ENV["ROOT"]
15 | ENV["ROOT"] = nil
16 | @alt_root = File.join(File.dirname(__FILE__), 'samples')
17 | end
18 | def teardown
19 | ENV["ROOT"] = @root_prev
20 | end
21 |
22 | def _no_root(&block)
23 | ENV["ROOT"] = nil
24 | yield
25 | end
26 |
27 | def _alt_root(&block)
28 | ENV["ROOT"] = @alt_root
29 | yield
30 | ENV["ROOT"] = @root_prev
31 | end
32 |
33 | def test_root_dir
34 | _no_root {
35 | a = Slackware::Paths.root_dir()
36 | assert_equal('/', a, 'root path is not properly deduced')
37 | }
38 | end
39 |
40 | def test_installed_packages
41 | _no_root {
42 | assert_equal("/var/log/packages/",Slackware::Paths.installed_packages())
43 | }
44 | end
45 | def test_removed_packages
46 | _no_root {
47 | assert_equal("/var/log/removed_packages/",Slackware::Paths.removed_packages())
48 | }
49 | end
50 | def test_installed_scripts
51 | _no_root {
52 | assert_equal("/var/log/scripts/",Slackware::Paths.installed_scripts())
53 | }
54 | end
55 | def test_removed_scripts
56 | _no_root {
57 | assert_equal("/var/log/removed_scripts/",Slackware::Paths.removed_scripts())
58 | }
59 | end
60 |
61 | def test_root_dir_alt
62 | _alt_root {
63 | a = Slackware::Paths.root_dir()
64 | assert_equal(ENV["ROOT"], a, 'root path is not properly deduced')
65 | }
66 | end
67 |
68 | def test_installed_packages_alt
69 | _alt_root {
70 | assert_equal(File.join(ENV["ROOT"],"var/log/packages",''),Slackware::Paths.installed_packages())
71 | }
72 | end
73 | def test_removed_packages_alt
74 | _alt_root {
75 | assert_equal(File.join(ENV["ROOT"],"var/log/removed_packages",''),Slackware::Paths.removed_packages())
76 | }
77 | end
78 | def test_installed_scripts_alt
79 | _alt_root {
80 | assert_equal(File.join(ENV["ROOT"],"var/log/scripts",''),Slackware::Paths.installed_scripts())
81 | }
82 | end
83 | def test_removed_scripts_alt
84 | _alt_root {
85 | assert_equal(File.join(ENV["ROOT"],"var/log/removed_scripts",''),Slackware::Paths.removed_scripts())
86 | }
87 | end
88 | end
89 |
90 | # vim : set sw=2 sts=2 et :
91 |
--------------------------------------------------------------------------------
/test/test_repo.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | # http://en.wikibooks.org/wiki/Ruby_Programming/Unit_testing
3 |
4 | $:.insert(0, File.expand_path(File.dirname(File.expand_path(__FILE__)) + "/../lib/"))
5 |
6 | require 'test/unit'
7 | require 'slackware'
8 |
9 | class TestRepoDefaults < Test::Unit::TestCase
10 | def setup
11 | # #
12 | @repo = Slackware::Repo.new
13 | end
14 |
15 | def teardown
16 | # nothing really
17 | @repo = nil
18 | end
19 |
20 | def test_packages
21 | assert_equal(nil, @repo.packages)
22 | end
23 |
24 | def test_proto
25 | t_proto = "ftp://"
26 | @repo.proto = t_proto
27 | assert_equal(t_proto, @repo.proto)
28 | end
29 |
30 | def test_mirror
31 | t_mirror = "ftp.osuosl.org"
32 | @repo.mirror = t_mirror
33 | assert_equal(t_mirror, @repo.mirror)
34 | end
35 |
36 | def test_path
37 | t_path = "/pub/slackware/"
38 | @repo.path = t_path
39 | assert_equal(t_path, @repo.path)
40 | end
41 |
42 | def test_version
43 | t_version = "13.1"
44 | @repo.version = t_version
45 | assert_equal(t_version, @repo.version)
46 | end
47 |
48 | def test_arch
49 | t_arch = "64"
50 | @repo.arch = t_arch
51 | assert_equal(t_arch, @repo.arch)
52 | end
53 | end
54 |
55 | class TestRepoFunctions < Test::Unit::TestCase
56 | def setup
57 | # #
58 | @repo = Slackware::Repo.new
59 | end
60 |
61 | def teardown
62 | # nothing really
63 | @repo = nil
64 | end
65 |
66 | def test_get_packages
67 | #pkgs = @repo.get_packages # FIXME time out ...
68 | #assert_equal(true, pkgs.count > 100)
69 | true
70 | end
71 |
72 | def test_set_packages
73 | #@repo.set_packages # FIXME time out ...
74 | #assert_equal(true, @repo.packages.count > 100)
75 | true
76 | end
77 | end
78 | # vim : set sw=2 sts=2 et :
79 |
--------------------------------------------------------------------------------
/test/test_system.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 |
3 | $:.insert(0, File.expand_path(File.dirname(File.expand_path(__FILE__)) + "/../lib/"))
4 |
5 | require 'test/unit'
6 | require 'slackware'
7 |
8 | def log(msg)
9 | Slackware::Log.instance.info(File.basename(__FILE__)) { msg }
10 | end
11 |
12 | class TestSystem < Test::Unit::TestCase
13 | def setup
14 | @root_prev = ENV["ROOT"]
15 | ENV["ROOT"] = File.expand_path(File.join(File.dirname(__FILE__), 'samples'))
16 | log( "ROOT: #{ENV["ROOT"]} ")
17 | end
18 | def teardown
19 | ENV["ROOT"] = @root_prev
20 | end
21 |
22 | def test_installed_packages
23 | a = Slackware::System.installed_packages()
24 | log(a)
25 | assert_equal(3, a.length, "There should only two packages showing as installed")
26 | end
27 | def test_removed_packages
28 | a = Slackware::System.removed_packages()
29 | log(a)
30 | assert_equal(2, a.length, "There should only two packages showing as removed")
31 | end
32 | def test_installed_scripts
33 | a = Slackware::System.installed_scripts()
34 | log(a)
35 | assert_equal(2, a.length, "There should only two scripts showing as installed")
36 | end
37 | def test_removed_scripts
38 | a = Slackware::System.removed_scripts()
39 | log(a)
40 | assert_equal(2, a.length, "There should only two scripts showing as removed")
41 | end
42 |
43 | def test_find_installed
44 | a = Slackware::System.find_installed('bash')
45 | log(a)
46 | assert_equal(2, a.length, "bash and bash-completion should match")
47 | end
48 | def test_find_removed
49 | a = Slackware::System.find_removed('bash')
50 | log(a)
51 | assert_equal(1, a.length, "There should only be one bash package removed")
52 | end
53 | def test_upgrades
54 | a = Slackware::System.upgrades('bash')
55 | log(a)
56 | assert_equal(1, a.length, "There should only be one bash package upgrades")
57 |
58 | a = Slackware::System.upgrades('fart')
59 | assert_equal(0, a.length, "There should not be any fart upgrades")
60 | end
61 |
62 | def test_is_upgraded
63 | a = Slackware::System.is_upgraded?('bash')
64 | assert_equal(true, a, "bash should have an upgrade present")
65 |
66 | a = Slackware::System.is_upgraded?('fart')
67 | assert_equal(false, a, "fart should not have an upgrade present")
68 | end
69 |
70 | def test_tags_used
71 | a = Slackware::System.tags_used()
72 | log(a)
73 | assert_equal(1, a.length, "There should only one tags showing")
74 | assert_equal("", a.first[:tag], "Only testing stock tags so far")
75 | assert_equal(3, a.first[:count], "Only testing two stock tags so far")
76 | end
77 |
78 | def test_with_tag
79 | a = Slackware::System.with_tag("")
80 | log(a)
81 | assert_equal(3, a.count, "Only testing two stock tags so far")
82 | end
83 |
84 | def test_arch_used
85 | a = Slackware::System.arch_used()
86 | log(a)
87 | assert_equal(2, a.count, "Only testing noarch and x86_64 so far")
88 | assert_equal(%w{ noarch x86_64 }.sort, a.sort, "Only testing noarch and x86_64 so far")
89 | end
90 |
91 | def test_owns_file
92 | a = Slackware::System.owns_file('/bin/bash')
93 | log( 'owns_file' )
94 | log( a )
95 | assert_equal(1, a.count, "Only the bash package should own this pattern")
96 | pkg = a.first.first
97 | assert_equal('bash', pkg.name, "Only the bash package should own this pattern")
98 | end
99 |
100 | def test_removed_after
101 | t = Time.at(1)
102 | a = Slackware::System.removed_after(t)
103 | assert_equal(1, a.length, "check the times on the packages")
104 | end
105 |
106 | def test_removed_before
107 | t = Time.now()
108 | a = Slackware::System.removed_before(t)
109 | assert_equal(1, a.length, "check the times on the packages")
110 | end
111 |
112 | def test_installed_after
113 | t = Time.at(1)
114 | a = Slackware::System.installed_after(t)
115 | assert_equal(5, a.length, "check the times on the packages")
116 | end
117 |
118 | def test_installed_before
119 | t = Time.now
120 | a = Slackware::System.installed_before(t)
121 | assert_equal(5, a.length, "check the times on the packages")
122 | end
123 |
124 | def test_version
125 | a = Slackware::System.version()
126 | assert_not_nil(a, "The version of Slackware should be set")
127 | end
128 | end
129 |
130 | # vim : set sw=2 sts=2 et :
131 |
--------------------------------------------------------------------------------
/test/test_version.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 |
3 | $:.insert(0, File.expand_path(File.dirname(File.expand_path(__FILE__)) + "/../lib/"))
4 |
5 | require 'test/unit'
6 | require 'slackware/log'
7 |
8 | def log(msg)
9 | Slackware::Log.instance.info(File.basename(__FILE__)) { msg }
10 | end
11 |
12 | class TestVersion < Test::Unit::TestCase
13 | def setup
14 | @root_prev = ENV["ROOT"]
15 | ENV["ROOT"] = File.join(File.dirname(File.expand_path(__FILE__)), 'samples')
16 | log( "ROOT: #{ENV["ROOT"]} ")
17 | end
18 | def teardown
19 | ENV["ROOT"] = @root_prev
20 | end
21 |
22 | def test_version
23 | # sticking it here, so that the variable is setup *after* the ROOT environment is declared
24 | require 'slackware/version'
25 | a = Slackware::SLACKWARE_VERSION
26 | log(a)
27 | assert_equal("13.37.314159", a, "the version of slackware deduced, does not match")
28 | end
29 | end
30 |
31 | # vim : set sw=2 sts=2 et :
32 |
--------------------------------------------------------------------------------