tazpkg diff tazpkg @ rev 840
Add a bunch of modules with new-style support of 'root' (not all commands are modules yet); strip and compress resources.
author | Aleksej Bobylev <al.bobylev@gmail.com> |
---|---|
date | Fri Aug 28 16:10:34 2015 +0300 (2015-08-28) |
parents | b1da66280a9d |
children | 0560ba4306a1 |
line diff
1.1 --- a/tazpkg Sun Aug 16 19:29:19 2015 +0100 1.2 +++ b/tazpkg Fri Aug 28 16:10:34 2015 +0300 1.3 @@ -71,19 +71,19 @@ 1.4 PACKAGE="${PACKAGE%.tazpkg}" 1.5 fi 1.6 TARGET_DIR="$3" 1.7 -TOP_DIR="$(pwd)" 1.8 +export TOP_DIR="$(pwd)" 1.9 TMP_DIR="/tmp/$RANDOM" 1.10 INSTALL_LIST='' 1.11 SAVE_CACHE_DIR="$CACHE_DIR" 1.12 1.13 # Path to tazpkg used dir and configuration files 1.14 MIRROR="$PKGS_DB/mirror" 1.15 -export BLOCKED="$PKGS_DB/blocked-packages.list" 1.16 -export UP_LIST="$PKGS_DB/packages.up" 1.17 +BLOCKED="$PKGS_DB/blocked-packages.list" 1.18 +UP_LIST="$PKGS_DB/packages.up" 1.19 DEFAULT_MIRROR="$ONLINE_PKGS" 1.20 1.21 # TazPkg version 1.22 -VERSION=$(awk -F$'\t' '$1=="tazpkg"{print $2}' $PKGS_DB/installed.info) 1.23 +export VERSION=$(awk -F$'\t' '$1=="tazpkg"{print $2}' $PKGS_DB/installed.info) 1.24 # User Agent 1.25 export UA="TazPkg-$VERSION" 1.26 1.27 @@ -100,94 +100,6 @@ 1.28 im() { tty -s; } 1.29 1.30 1.31 -# Print the usage. 1.32 - 1.33 -usage () { 1.34 - cat <<EOT 1.35 - 1.36 -$(_ 'SliTaz package manager - Version: %s' $(colorize 34 $VERSION)) 1.37 - 1.38 -$(boldify "$(_ 'Usage:')") 1.39 - $(_ 'tazpkg [command] [package|dir|pattern|list|cat|--opt] [dir|--opt]') 1.40 - 1.41 -$(boldify "$(_ 'SHell:')") tazpkg shell 1.42 - 1.43 -$(boldify "$(_ 'Commands:')") 1.44 -$(optlist "\ 1.45 - usage $(_ 'Print this short usage') 1.46 --h help $(_ 'Show help on the TazPkg commands') 1.47 --a activity $(_ 'Show TazPkg activity log') 1.48 --cc clean-cache $(_ 'Clean all packages downloaded in cache directory') 1.49 - shell $(_ 'Run interactive TazPkg shell') 1.50 - 1.51 --l list $(_ 'List installed packages on the system') 1.52 --lm list-mirror $(_ 'List all available packages on the mirror') 1.53 - list-config $(_ 'List the configuration files') 1.54 - 1.55 --s search $(_ 'Search for a package by pattern or name') 1.56 --sp search-pkgname $(_ 'Search on mirror for package having a particular file') 1.57 --sf search-file $(_ 'Search for file in all installed packages files') 1.58 - 1.59 --g get $(_ 'Download a package into the current directory') 1.60 --i install $(_ 'Install a local package') 1.61 --gi get-install $(_ 'Download and install a package from the mirror') 1.62 - install-list $(_ 'Install all packages from a list of packages') 1.63 - get-install-list $(_ 'Download and install a list of packages from the mirror') 1.64 --r remove $(_ 'Remove the specified package and all installed files') 1.65 - reconfigure $(_ 'Replay post install script from package') 1.66 - link $(_ 'Link a package from another SliTaz installation') 1.67 - set-release $(_ 'Change release and update packages') 1.68 - add-flavor $(_ 'Install the flavor list of packages') 1.69 - install-flavor $(_ 'Install the flavor list of packages and remove other ones') 1.70 - 1.71 - info $(_ 'Print information about a package') 1.72 --d desc $(_ 'Print description of a package') 1.73 --lf list-files $(_ 'List the files installed with a package') 1.74 --b|u block|unblock $(_ 'Block an installed package version or unblock it for upgrade') 1.75 - check $(_ 'Verify consistency of installed packages') 1.76 - bugs $(_ 'Show known bugs in packages') 1.77 - depends $(_ 'Display dependencies tree') 1.78 - rdepends $(_ 'Display reverse dependencies tree') 1.79 --e extract $(_ 'Extract a (*.tazpkg) package into a directory') 1.80 - pack $(_ 'Pack an unpacked or prepared package tree') 1.81 - repack $(_ 'Create a package archive from an installed package') 1.82 - repack-config $(_ 'Create a package archive with configuration files') 1.83 - recompress $(_ 'Rebuild a package with a better compression ratio') 1.84 - convert $(_ 'Convert alien package to tazpkg') 1.85 - list-suggested $(_ 'Print list of suggested packages') 1.86 - 1.87 - recharge $(_ 'Recharge your packages.list from the mirror') 1.88 - up|help-up $(_ 'Check packages %s to list and install latest upgrades' $CHECKSUM) 1.89 --sm setup-mirror $(_ 'Change the mirror URL configuration') 1.90 - setup-undigest $(_ 'Update an undigest mirror') 1.91 - list-undigest $(_ 'List undigest mirrors') 1.92 - add-undigest $(_ 'Add an undigest mirror') 1.93 - remove-undigest $(_ 'Remove an undigest mirror') 1.94 -") 1.95 -EOT 1.96 -} 1.97 - 1.98 - 1.99 -usage_up() { 1.100 - cat <<EOT 1.101 -$(emsg "<b>$(_ 'Usage for command up:')</b>") tazpkg up [$(_ 'option')] 1.102 - 1.103 - * $(longline "$(_ 'Without options run in interactive mode and ask before install')") 1.104 - 1.105 -$(boldify "$(_ 'Where options are:')") 1.106 -$(optlist "\ 1.107 --c --check $(_ 'Check only for available upgrades') 1.108 --r --recharge $(_ 'Force recharge of packages list and check') 1.109 --i --install $(_ 'Check for upgrades and install them all') 1.110 -") 1.111 - 1.112 -$(boldify "$(_ 'Example:')") 1.113 - tazpkg up --recharge --install 1.114 - tazpkg up -c -r 1.115 -EOT 1.116 -} 1.117 - 1.118 - 1.119 # Check if dir exists 1.120 1.121 check_dir() { 1.122 @@ -320,10 +232,9 @@ 1.123 tazpkg recharge 1.124 else 1.125 newline 1.126 - _ 'Unable to find the list "%s"' $list_path 1.127 - _ \ 1.128 -"You must probably run 'tazpkg recharge' as root to get the latest list of 1.129 -packages available on the mirror." 1.130 + _ 'Unable to find the list "%s"' "$list_path" 1.131 + longline "$(_ "You must probably run '%s' as root to get the \ 1.132 +latest list of packages available on the mirror." 'tazpkg recharge')" 1.133 newline 1.134 exit 0 1.135 fi 1.136 @@ -337,7 +248,7 @@ 1.137 check_for_installed_info() { 1.138 info_path="$ROOT$PKGS_DB/installed.info" 1.139 if [ ! -f "$info_path" ]; then 1.140 - if [ "$(id -u)" == '0' ]; then 1.141 + if [ $(id -u) -eq 0 ]; then 1.142 _ 'File "%s" generated. Please wait...' 'installed.info' 1.143 for pkg in $ROOT$PKGS_DB/installed/*/receipt; do 1.144 unset_receipt 1.145 @@ -927,36 +838,6 @@ 1.146 } 1.147 1.148 1.149 -# Check for loop in deps tree. 1.150 - 1.151 -check_for_deps_loop() { 1.152 - local list pkg="$1" deps 1.153 - shift 1.154 - [ -n "$1" ] || return 1.155 - list='' 1.156 - 1.157 - # Filter out already processed deps 1.158 - for i in $@; do 1.159 - case " $ALL_DEPS" in 1.160 - *\ $i\ *) ;; 1.161 - *) list="$list $i";; 1.162 - esac 1.163 - done 1.164 - ALL_DEPS="$ALL_DEPS$list " 1.165 - for i in $list; do 1.166 - [ -f $i/receipt ] || continue 1.167 - deps="$(DEPENDS=""; . $i/receipt; echo $DEPENDS)" 1.168 - case " $deps " in 1.169 - *\ $pkg\ *) 1.170 - print_pkgname 1.171 - echo -e "$MSG $i"; MSG='';; 1.172 - *) 1.173 - check_for_deps_loop $pkg $deps;; 1.174 - esac 1.175 - done 1.176 -} 1.177 - 1.178 - 1.179 # Check for missing deps listed in a receipt packages. 1.180 1.181 check_for_deps() { 1.182 @@ -1056,258 +937,6 @@ 1.183 } 1.184 1.185 1.186 -# Search pattern in installed packages. 1.187 - 1.188 -search_in_installed_packages() { 1.189 - _ 'Installed packages'; separator '-' 1.190 - num='0' 1.191 - TMPLIST="$(mktemp)" 1.192 - 1.193 - awk -F$'\t' -vpattern="$PATTERN" -vt="$TMPLIST" ' 1.194 - BEGIN { IGNORECASE = 1 } 1.195 - index($1 "-" $2, pattern) { 1.196 - printf "%-24s%-18s%s\n", $1, $2, $3; 1.197 - printf "1" >> t 1.198 - }' "$PKGS_DB/installed.info" | translate_category 1.199 - num="$(wc -m < $TMPLIST)"; rm $TMPLIST 1.200 - 1.201 - footer "$(_p \ 1.202 - '%s installed package found for "%s"' \ 1.203 - '%s installed packages found for "%s"' $num \ 1.204 - $num "$PATTERN")" 1.205 -} 1.206 - 1.207 - 1.208 -# Search in packages.list for available pkgs. 1.209 - 1.210 -search_in_packages_list() { 1.211 - _ 'Available packages'; separator '-' 1.212 - num='0' 1.213 - TMPLIST="$(mktemp)" 1.214 - 1.215 - for i in $PKGS_DB/packages.info $PKGS_DB/undigest/*/packages.info; do 1.216 - [ -e "$i" ] && awk -F$'\t' -vpattern="$PATTERN" -vt="$TMPLIST" ' 1.217 - BEGIN { IGNORECASE = 1 } 1.218 - index($1 "-" $2, pattern) { 1.219 - printf "%-24s%-18s%s\n", $1, $2, $3; 1.220 - printf "1" >> t 1.221 - }' "$i" | translate_category 1.222 - done 1.223 - 1.224 - for i in $PKGS_DB/extra.list $PKGS_DB/undigest/*/extra.list; do 1.225 - [ -e "$i" ] && awk -F'|' -vpattern="$PATTERN" -vt="$TMPLIST" ' 1.226 - BEGIN { IGNORECASE = 1 } 1.227 - index($1 "-" $5, pattern) { 1.228 - printf "%-24s%-18s%s\n", $1 " (extra)", $5, $4; 1.229 - printf "1" >> t 1.230 - }' "$i" | translate_category 1.231 - done 1.232 - 1.233 - if [ ! -f "$PKGS_DB/packages.info" ]; then 1.234 - newline 1.235 - longline "$(_ \ 1.236 -"No \"%s\" found to check for mirrored packages. For more results, please run \ 1.237 -\"%s\" once as root before searching." 'packages.info' 'tazpkg recharge')" 1.238 - newline 1.239 - fi 1.240 - 1.241 - num="$(wc -m < $TMPLIST)"; rm $TMPLIST 1.242 - footer "$(_p \ 1.243 - '%s available package found for "%s"' \ 1.244 - '%s available packages found for "%s"' $num \ 1.245 - $num $PATTERN)" 1.246 -} 1.247 - 1.248 - 1.249 -# search --mirror: Search in packages.txt for available pkgs and give more 1.250 -# info than --list or default. 1.251 - 1.252 -search_in_packages_txt() { 1.253 - _ 'Matching packages name with version and desc'; separator '-' 1.254 - num='0' 1.255 - TMPLIST="$(mktemp)" 1.256 - 1.257 - for i in $PKGS_DB/packages.info $PKGS_DB/undigest/*/packages.info; do 1.258 - [ -e "$i" ] && awk -F$'\t' -vpattern="$PATTERN" -vt="$TMPLIST" ' 1.259 - BEGIN { IGNORECASE = 1 } 1.260 - index($1 " " $2 " " $4, pattern) { 1.261 - split($7, s, " "); 1.262 - printf "%s\n%s\n%s\n%s (%s installed)\n\n", $1, $2, $4, s[1], s[2]; 1.263 - printf "1" >> t; 1.264 - }' "$i" 1.265 - done 1.266 - 1.267 - if [ ! -f "$PKGS_DB/packages.info" ]; then 1.268 - newline 1.269 - longline "$(_ \ 1.270 -"No \"%s\" found to check for mirrored packages. For more results, please run \ 1.271 -\"%s\" once as root before searching." 'packages.info' 'tazpkg recharge')" 1.272 - newline 1.273 - fi 1.274 - 1.275 - num="$(wc -m < $TMPLIST)"; rm $TMPLIST 1.276 - footer "$(_p \ 1.277 - '%s available package found for "%s"' \ 1.278 - '%s available packages found for "%s"' $num \ 1.279 - $num $PATTERN)" 1.280 -} 1.281 - 1.282 - 1.283 -# Install package-list from a flavor 1.284 - 1.285 -install_flavor() { 1.286 - check_root $@ 1.287 - 1.288 - # Get repositories priority list. 1.289 - look_for_priority 1.290 - 1.291 - FLAVOR="$1" 1.292 - mkdir -p $TMP_DIR 1.293 - [ -f $FLAVOR.flavor ] && cp $FLAVOR.flavor $TMP_DIR 1.294 - cd $TMP_DIR 1.295 - if [ -f $FLAVOR.flavor ] || download $FLAVOR.flavor; then 1.296 - zcat < $FLAVOR.flavor | cpio --quiet -i >/dev/null 1.297 - 1.298 - while read file; do 1.299 - for pkg in $(ls -d $INSTALLED/${file%%-*}*); do 1.300 - [ -f $pkg/receipt ] || continue 1.301 - EXTRAVERSION='' 1.302 - . $pkg/receipt 1.303 - [ "$PACKAGE-$VERSION$EXTRAVERSION" == "$file" ] && break 1.304 - done 1.305 - [ "$PACKAGE-$VERSION$EXTRAVERSION" == "$file" ] && continue 1.306 - cd $CACHE_DIR 1.307 - download $file.tazpkg 1.308 - cd $TMP_DIR 1.309 - tazpkg install $CACHE_DIR/$file.tazpkg --forced 1.310 - done < $FLAVOR.pkglist 1.311 - 1.312 - [ -f $FLAVOR.nonfree ] && while read pkg; do 1.313 - [ -d $INSTALLED/$pkg ] || continue 1.314 - [ -d $INSTALLED/get-$pkg ] && tazpkg get-install get-$pkg 1.315 - get-$pkg 1.316 - done < $FLAVOR.nonfree 1.317 - 1.318 - # option "--purge" 1.319 - [ -n "$purge" ] && for pkg in $(ls $INSTALLED); do 1.320 - [ -f $INSTALLED/$pkg/receipt ] || continue 1.321 - EXTRAVERSION='' 1.322 - . $INSTALLED/$pkg/receipt 1.323 - grep -q "^$PACKAGE-$VERSION$EXTRAVERSION$" $FLAVOR.pkglist && continue 1.324 - grep -qs "^$PACKAGE$" $FLAVOR.nonfree && continue 1.325 - tazpkg remove "$PACKAGE" 1.326 - done 1.327 - else 1.328 - _ "Can't find flavor \"%s\". Abort." $FLAVOR 1.329 - fi 1.330 - cd "$TOP_DIR" 1.331 - rm -rf $TMP_DIR 1.332 -} 1.333 - 1.334 - 1.335 -# Update mirror URLs 1.336 - 1.337 -setup_mirror() { 1.338 - # Backup old list. 1.339 - if [ -f "$1/mirror" ]; then 1.340 - cp -f $1/mirror $1/mirror.bak 1.341 - fi 1.342 - title 'Current mirror(s)' 1.343 - echo " $(cat $1/mirror 2> /dev/null)" 1.344 - longline "$(_ \ 1.345 -"Please enter URL of the new mirror (http, ftp or local path). You must specify \ 1.346 -the complete address to the directory of the packages and packages.list file.")" 1.347 - newline 1.348 - 1.349 - _n 'New mirror(s) URL: ' 1.350 - NEW_MIRROR_URL="$2" 1.351 - if [ -n "$NEW_MIRROR_URL" ]; then 1.352 - echo $NEW_MIRROR_URL 1.353 - else 1.354 - read NEW_MIRROR_URL 1.355 - fi 1.356 - 1.357 - if [ -z "$NEW_MIRROR_URL" ]; then 1.358 - _ 'Nothing has been changed.' 1.359 - else 1.360 - _ 'Setting mirror(s) to: "%s"' $NEW_MIRROR_URL 1.361 - rm -f $1/mirror 1.362 - for i in $NEW_MIRROR_URL; do 1.363 - echo "${i%/}/" >> $1/mirror 1.364 - done 1.365 - fi 1.366 - newline 1.367 -} 1.368 - 1.369 - 1.370 -# recursive dependencies scan 1.371 - 1.372 -dep_scan() { 1.373 - for i in $1; do 1.374 - case " $ALL_DEPS " in 1.375 - *\ $i\ *) continue;; 1.376 - esac 1.377 - ALL_DEPS="$ALL_DEPS $i" 1.378 - 1.379 - if [ -z "$mark" ]; then 1.380 - ii="$i" 1.381 - else 1.382 - ii="- $i"; grep -q ^$i$'\t' "$PKGS_DB/installed.info" && ii="+ $i" 1.383 - fi 1.384 - [ -n "$2" ] && echo "$2$ii ($(awk -F$'\t' -vp="$i" ' 1.385 - $1==p{split($7,s," ");print s[2]}' "$PKGS_DB/packages.info"))" 1.386 - 1.387 - DEPENDS="$(awk -F$'\t' -vp="$i" '$1==p{print $8 " "}' "$PKGS_DB/installed.info")" 1.388 - [ -z "$DEPENDS" ] && \ 1.389 - DEPENDS="$(awk -F$'\t' -vp="$i" '$1==p{print $8 " "}' "$PKGS_DB/packages.info")" 1.390 - [ -n "$DEPENDS" ] && dep_scan "$DEPENDS" "$2 " 1.391 - done 1.392 -} 1.393 - 1.394 - 1.395 -# recursive reverse dependencies scan 1.396 - 1.397 -rdep_scan() { 1.398 - SEARCH="$1" 1.399 - 1.400 - DB='installed'; [ -n "$all" ] && DB='packages' 1.401 - 1.402 - awk -F$'\t' '$8 {print $1 " " $8}' "$PKGS_DB/$DB.info" | \ 1.403 - busybox awk -F' ' -v search="$SEARCH" ' 1.404 -function show_deps(pkg, space, i, n, mydeps) { 1.405 - if (processed[pkg]) return 1.406 - processed[pkg] = 1; 1.407 - 1.408 - if (space) printf "%s %s\n", space, pkg; 1.409 - 1.410 - n = split(deps[pkg], mydeps, " "); 1.411 - for (i = 1; i <= n; i++) 1.412 - show_deps(mydeps[i], "==" space); 1.413 -} 1.414 - 1.415 -{ 1.416 - for (i = 2; i <= NF; i++) 1.417 - deps[$i] = deps[$i] " " $1; 1.418 -} 1.419 - 1.420 -END { 1.421 - show_deps(search, "") 1.422 -} 1.423 -' | while read spc pkg; do 1.424 - if [ -z "$mark" ]; then 1.425 - pkgi="$pkg" 1.426 - else 1.427 - pkgi="- $pkg"; grep -q ^$pkg$'\t' "$PKGS_DB/installed.info" && pkgi="+ $pkg" 1.428 - fi 1.429 - 1.430 - echo -n $spc | sed 's/=/ /g' 1.431 - 1.432 - echo "$pkgi ($(awk -F$'\t' -vp="$pkg" '$1==p{split($7,s," ");print s[2]}' \ 1.433 - "$PKGS_DB/$DB.info"))" 1.434 - done 1.435 -} 1.436 - 1.437 - 1.438 update_desktop_database() { 1.439 if [ -f "$1/usr/bin/update-desktop-database" ] && [ -n "$updatedesktopdb" ]; then 1.440 chroot "$1/" /usr/bin/update-desktop-database /usr/share/applications 2>/dev/null 1.441 @@ -1343,15 +972,6 @@ 1.442 } 1.443 1.444 1.445 -# Print package name if not printed yet 1.446 -print_pkgname() { 1.447 - if [ "$PACKAGE" != "$PACKAGE_PRINTED" ]; then 1.448 - [ -n "$PACKAGE_PRINTED" ] && footer 1.449 - title 'Package %s' "$PACKAGE-$VERSION$EXTRAVERSION" 1.450 - PACKAGE_PRINTED="$PACKAGE" 1.451 - fi 1.452 -} 1.453 - 1.454 1.455 1.456 ################### 1.457 @@ -1366,10 +986,8 @@ 1.458 b|blocked) @@MODULES@@/list blocked ;; 1.459 c|cat|categories) @@MODULES@@/list categories;; 1.460 l|linked) @@MODULES@@/list linked ;; 1.461 - '') check_for_installed_info 1.462 - @@MODULES@@/list installed ;; 1.463 - *) check_for_installed_info 1.464 - @@MODULES@@/list installed_of_category "$@";; 1.465 + '') @@MODULES@@/list installed ;; 1.466 + *) @@MODULES@@/list installed_of_category "$@";; 1.467 esac 1.468 ;; 1.469 -lb) @@MODULES@@/list blocked ;; 1.470 @@ -1393,166 +1011,44 @@ 1.471 1.472 desc|-d) 1.473 # Display package description 1.474 - unset desc 1.475 - 1.476 - # 1) Localized description 1.477 - for LC in $LANG ${LANG%_*}; do 1.478 - [ -e "$PKGS_DB/descriptions.$LC.txt" ] && 1.479 - desc="$(awk -vRS='' -vFS='\n' -vOFS='\n' -vp="$PACKAGE" ' 1.480 - $1 == p { $1 = ""; print $0; exit; } 1.481 - ' "$PKGS_DB/descriptions.$LC.txt" | sed '1d')" 1.482 - done 1.483 - 1.484 - # 2) Installed description 1.485 - if [ -z "$desc" -a -s "$INSTALLED/$PACKAGE/description.txt" ]; then 1.486 - desc="$(cat "$INSTALLED/$PACKAGE/description.txt")" 1.487 - fi 1.488 - 1.489 - # 3) Mirrored description 1.490 - if [ -z "$desc" -a -s "$PKGS_DB/descriptions.txt" ]; then 1.491 - desc="$(awk -vRS='' -vFS='\n' -vOFS='\n' -vp="$PACKAGE" ' 1.492 - $1 == p { $1 = ""; print $0; exit; } 1.493 - ' "$PKGS_DB/descriptions.txt" | sed '1d')" 1.494 - fi 1.495 - 1.496 - # 4) Short description only in terminal 1.497 - if [ -z "$desc" ] && im; then 1.498 - desc="$(print_short_description "$PACKAGE")" 1.499 - fi 1.500 - 1.501 - if [ -n "$desc" ]; then 1.502 - # Title and footer only in terminal 1.503 - im && title 'Description of package "%s"' "$PACKAGE" 1.504 - echo "$desc" 1.505 - im && footer 1.506 - else 1.507 - im && _ 'Description absent.' 1.508 - fi 1.509 + @@MODULES@@/description "$2" 1.510 ;; 1.511 1.512 1.513 search|-s) 1.514 # Search for a package by pattern or name. 1.515 - PATTERN="$2" 1.516 - if [ -z "$PATTERN" ]; then tazpkg -h search; exit 1; fi 1.517 + if [ -z "$2" ]; then tazpkg -h search; exit 1; fi 1.518 1.519 - title 'Search result for "%s"' "$PATTERN" 1.520 - # Default is to search in installed pkgs and the raw list. 1.521 + # Extend short options to long analogs 1.522 case "$3" in 1.523 - -i) installed='yes';; 1.524 - -l) list='yes';; 1.525 - -m) mirror='yes';; 1.526 + -i) export installed='yes';; 1.527 + -l) export list='yes';; 1.528 + -m) export mirror='yes';; 1.529 esac 1.530 1.531 - [ -n "$installed" ] && search_in_installed_packages 1.532 - [ -n "$list" ] && search_in_packages_list 1.533 - [ -n "$mirror" ] && search_in_packages_txt 1.534 - if [ -z "$installed$list$mirror" ]; then 1.535 - search_in_installed_packages 1.536 - search_in_packages_list 1.537 - fi 1.538 + @@MODULES@@/search pkg "$2" 1.539 ;; 1.540 1.541 1.542 search-file|-sf) 1.543 # Search for a file by pattern or name in all files.list. 1.544 - if [ -z "$2" ]; then 1.545 - newline 1.546 - _ 'Please specify a pattern or file name to search for.' 1.547 - echo "$(_ 'Example:') 'tazpkg search-file libnss'" 1.548 - newline 1.549 - exit 0 1.550 - fi 1.551 - title 'Search result for file "%s"' "$2" 1.552 - TMPLIST=$(mktemp) 1.553 + if [ -z "$2" ]; then tazpkg -h search-file; exit 1; fi 1.554 1.555 - if [ -n "$mirror" ]; then 1.556 - TMPDIR=$(mktemp -d) 1.557 - for i in $PKGS_DB/files.list.lzma $PKGS_DB/undigest/*/files.list.lzma; do 1.558 - [ -f $i ] || continue 1.559 - lzcat $i | awk -F: -vtmp="$TMPLIST" -vdir="$TMPDIR" \ 1.560 - -vfile="$2" -vcfile="$(colorize 32 $2)" ' 1.561 - BEGIN { efile = gensub("\+", "\\\+", "g", file); } 1.562 - index($2, file) { 1.563 - gsub(efile, cfile, $2); 1.564 - print $2 >> dir"/"$1; 1.565 - printf "1" >> tmp; 1.566 - }' 1.567 - done 1.568 - 1.569 - for pkg in $(cd $TMPDIR; ls); do 1.570 - newline 1.571 - emsg "<c 33>$(_ 'Package %s:' $pkg)</c>" 1.572 - cat $TMPDIR/$pkg 1.573 - done 1.574 - 1.575 - rm -r $TMPDIR 1.576 - 1.577 - else 1.578 - 1.579 - # Check all pkg files.list in search match which specify the package 1.580 - # name and the full path to the file(s). 1.581 - for pkg in $INSTALLED/*; do 1.582 - if grep -qs "$2" $pkg/files.list; then 1.583 - . $pkg/receipt 1.584 - newline 1.585 - emsg "<c 33>$(_ 'Package %s:' "$PACKAGE")</c>" 1.586 - awk -vtmp="$TMPLIST" -vfile="$2" -vcfile="$(colorize 32 $2)" ' 1.587 - BEGIN { efile = gensub("\+", "\\\+", "g", file); } 1.588 - index($0, file) { 1.589 - gsub(efile, cfile); 1.590 - print " "$0; 1.591 - printf "1" >> tmp; 1.592 - } 1.593 - ' $pkg/files.list 1.594 - fi 1.595 - done 1.596 - 1.597 - fi 1.598 - 1.599 - num=$(wc -m < $TMPLIST); rm $TMPLIST 1.600 - footer "$(_p '%s file' '%s files' "$num" \ 1.601 - "$(colorize 32 $num)")" 1.602 + @@MODULES@@/search file "$2" 1.603 ;; 1.604 1.605 1.606 search-pkgname|-sp) 1.607 # Search for a package name 1.608 - if [ -z "$2" ]; then 1.609 - newline 1.610 - _ 'Please specify a pattern or file name to search for.' 1.611 - echo "$(_ 'Example:') 'tazpkg search-pkgname libnss'" 1.612 - newline 1.613 - exit 0 1.614 - fi 1.615 - title 'Search result for package "%s"' "$2" 1.616 + if [ -z "$2" ]; then tazpkg -h search-pkgname; exit 1; fi 1.617 1.618 - # Search for a file on mirror and output only the package name 1.619 - TMPLIST=$(mktemp) 1.620 - for i in $PKGS_DB/files.list.lzma $PKGS_DB/undigest/*/files.list.lzma; do 1.621 - [ -f "$i" ] || continue 1.622 - lzcat $i | awk -F: -vT=$TMPLIST -vterm="$2" ' 1.623 - BEGIN { P = "" } 1.624 - index($2, term) { 1.625 - if ($1 != P) { 1.626 - print $1; 1.627 - printf "1" >> T; 1.628 - P = $1 1.629 - } 1.630 - }' 1.631 - done 1.632 - match=$(wc -m < $TMPLIST) 1.633 - rm $TMPLIST 1.634 - 1.635 - footer "$(emsg "$(_p \ 1.636 - '%s package' '%s packages' $match \ 1.637 - "<c 32>$match</c>")")" 1.638 + @@MODULES@@/search file2 "$2" 1.639 ;; 1.640 1.641 1.642 install|-i) 1.643 # Install .tazpkg packages. 1.644 - check_root $@ 1.645 + check_root $1 1.646 check_for_package_on_cmdline 1.647 check_for_package_file 1.648 check_for_installed_info 1.649 @@ -1564,17 +1060,6 @@ 1.650 1.651 [ -n "$list" ] && INSTALL_LIST="$list" 1.652 1.653 - if [ -n "$rootconfig" ]; then # What about this parameter? Is it obsolete? 1.654 - if [ -n "$root" ]; then 1.655 - CACHE_DIR="$root/$CACHE_DIR" 1.656 - SAVE_CACHE_DIR="$CACHE_DIR" 1.657 - PKGS_DB="$root/$PKGS_DB" 1.658 - else 1.659 - echo "rootconfig needs --root= option used." >&2 1.660 - exit 1 1.661 - fi 1.662 - fi 1.663 - 1.664 # Get repositories priority list. 1.665 look_for_priority 1.666 1.667 @@ -1592,21 +1077,14 @@ 1.668 1.669 install-list|get-install-list) 1.670 # Install a set of packages from a list. 1.671 - check_root $@ 1.672 + check_root $1 1.673 1.674 - if [ -z "$2" ]; then 1.675 - newline 1.676 - longline "$(_ \ 1.677 -"Please change directory (cd) to the packages repository and specify the \ 1.678 -list of packages to install.")" 1.679 - echo "$(_ 'Example:') $(emsg '<b>tazpkg install-list</b> <c 33>packages.list</c>')" 1.680 - exit 0 1.681 - fi 1.682 + if [ -z "$2" ]; then tazpkg -h "$1"; exit 1; fi 1.683 1.684 # Check if the packages list exists. 1.685 if [ ! -f "$2" ]; then 1.686 _ 'Unable to find list "%s"' "$2" 1.687 - exit 0 1.688 + exit 1 1.689 fi 1.690 1.691 LIST=$(cat $2) 1.692 @@ -1634,176 +1112,47 @@ 1.693 [ -d "$root/var/lib/tazpkg/installed" ] && 1.694 tazpkg $COMMAND $pkg --list="$2" "$3" "$4" "$5" 1.695 done 1.696 - rm -f $2-processed ;; 1.697 + rm -f $2-processed 1.698 + ;; 1.699 1.700 1.701 add-flavor) 1.702 # Install a set of packages from a flavor. 1.703 - install_flavor $2 ;; 1.704 - 1.705 - 1.706 + check_root $1 1.707 + shift; @@MODULES@@/flavor $@ 1.708 + ;; 1.709 install-flavor) 1.710 # Install a set of packages from a flavor and purge other ones. 1.711 - install_flavor $2 --purge ;; 1.712 + check_root $1 1.713 + shift; purge='yes' @@MODULES@@/flavor $@ 1.714 + ;; 1.715 1.716 1.717 set-release) 1.718 # Change current release and upgrade packages. 1.719 + check_root $1 1.720 + if [ -z "$2" ]; then tazpkg -h "$1"; exit 1; fi 1.721 RELEASE="$2" 1.722 - if [ -z "$RELEASE" ]; then 1.723 - newline 1.724 - _ 'Please specify the release you want on the command line.' 1.725 - echo "$(_ 'Example:') tazpkg set-release cooking" 1.726 - newline 1.727 - exit 0 1.728 - fi 1.729 - rm $PKGS_DB/mirror 1.730 - echo "$RELEASE" > /etc/slitaz-release 1.731 + rm "$PKGS_DB/mirror" 1.732 + echo "$RELEASE" > "$root/etc/slitaz-release" 1.733 tazpkg recharge && tazpkg upgrade 1.734 1.735 # Install missing depends 1.736 - cd $INSTALLED 1.737 + cd "$INSTALLED" 1.738 for i in * ; do 1.739 - DEPENDS='' 1.740 - . $i/receipt 1.741 - for j in $DEPENDS ; do 1.742 - [ -d $j ] || tazpkg get-install $j 1.743 + unset DEPENDS; . "$i/receipt" 1.744 + for j in $DEPENDS; do 1.745 + [ -d "$j" ] || tazpkg get-install "$j" 1.746 done 1.747 - done ;; 1.748 + done 1.749 + ;; 1.750 1.751 1.752 remove|-r) 1.753 # Remove packages. 1.754 - check_root $@ 1.755 + check_root $1 1.756 check_for_package_on_cmdline 1.757 - check_for_installed_info 1.758 - 1.759 - [ -n "$root" ] && ROOT="$root" 1.760 - 1.761 - if [ ! -f "$ROOT$INSTALLED/$PACKAGE/receipt" ]; then 1.762 - newline; _ 'Package "%s" is not installed.' "$PACKAGE" 1.763 - exit 0 1.764 - fi 1.765 - 1.766 - . "$ROOT$INSTALLED/$PACKAGE/receipt" 1.767 - 1.768 - # Info #1: dependent packages (to be processed later) 1.769 - ALTERED="$(awk -F$'\t' -vp=" $PACKAGE " ' 1.770 - index(" " $8 " ", p) { printf " %s\n", $1 } 1.771 - ' $ROOT/$PKGS_DB/installed.info)" 1.772 - 1.773 - if [ -n "$ALTERED" ]; then 1.774 - _ 'The following packages depend on package "%s":' "$PACKAGE" 1.775 - echo "$ALTERED" 1.776 - fi 1.777 - 1.778 - # Info #2: changed packages (to be processed later) 1.779 - REFRESH=$(cd $ROOT$INSTALLED ; grep -sl "^$PACKAGE$" */modifiers) 1.780 - 1.781 - if [ -n "$REFRESH" ]; then 1.782 - _ 'The following packages have been modified by package "%s":' "$PACKAGE" 1.783 - for i in $REFRESH; do 1.784 - echo " ${i%/modifiers}" 1.785 - done 1.786 - fi 1.787 - 1.788 - # Confirmation 1.789 - if im && [ -z "$auto" ]; then 1.790 - confirm "$(_ 'Remove package "%s" (%s)? (y/N)' "$PACKAGE" "$VERSION$EXTRAVERSION")" 1.791 - if [ "$?" -ne 0 ]; then 1.792 - newline; _ 'Uninstallation of package "%s" cancelled.' "$PACKAGE" 1.793 - exit 0 1.794 - fi 1.795 - fi 1.796 - # We are here: non-interactive mode, or --auto, or answer 'y' 1.797 - 1.798 - # Removing package 1.799 - title 'Removing package "%s"' "$PACKAGE" 1.800 - 1.801 - # [1/4] Pre-remove commands 1.802 - if grep -q ^pre_remove "$ROOT$INSTALLED/$PACKAGE/receipt"; then 1.803 - action "Execution of pre-remove commands..." 1.804 - pre_remove $ROOT 1.805 - status 1.806 - fi 1.807 - 1.808 - # [2/4] Removing files 1.809 - action "Removing all files installed..." 1.810 - if [ -f "$ROOT$INSTALLED/$PACKAGE/modifiers" ]; then 1.811 - for file in $(cat "$ROOT$INSTALLED/$PACKAGE/files.list"); do 1.812 - for mod in $(cat "$ROOT$INSTALLED/$PACKAGE/modifiers"); do 1.813 - [ -f "$ROOT$INSTALLED/$mod/files.list" ] && \ 1.814 - [ $(grep "^$(echo $file | grepesc)$" $ROOT$INSTALLED/$mod/files.list | wc -l) -gt 1 ] && \ 1.815 - continue 2 1.816 - done 1.817 - remove_with_path $ROOT$file 1.818 - done 1.819 - else 1.820 - for file in $(cat "$ROOT$INSTALLED/$PACKAGE/files.list"); do 1.821 - remove_with_path $ROOT$file 1.822 - done 1.823 - fi 1.824 - status 1.825 - 1.826 - # [3/4] Post-remove commands 1.827 - if grep -q ^post_remove "$ROOT$INSTALLED/$PACKAGE/receipt"; then 1.828 - action 'Execution of post-remove commands...' 1.829 - post_remove $ROOT 1.830 - status 1.831 - fi 1.832 - 1.833 - # [4/4] Remove package receipt and remove it from databases 1.834 - action 'Removing package receipt...' 1.835 - rm -rf "$ROOT$INSTALLED/$PACKAGE" 1.836 - sed -i "/ $PACKAGE-$VERSION$EXTRAVERSION.tazpkg$/d" $PKGS_DB/installed.$SUM 1.837 - sed -i "/^$PACKAGE /d" $PKGS_DB/installed.info 1.838 - status 1.839 - 1.840 - footer "$(_ 'Package "%s" (%s) removed.' "$PACKAGE" "$VERSION$EXTRAVERSION")" 1.841 - 1.842 - # Log this activity 1.843 - log_pkg Removed 1.844 - 1.845 - # Stop if non-interactive mode and no --auto option 1.846 - if ! im && [ -z "$auto" ]; then exit 0; fi 1.847 - 1.848 - # Process dependent packages 1.849 - if [ -n "$ALTERED" ]; then 1.850 - if [ -n "$auto" ]; then 1.851 - answer=0 1.852 - else 1.853 - confirm "$(_ 'Remove packages depending on package "%s"? (y/N)' "$PACKAGE")" 1.854 - answer=$? 1.855 - fi 1.856 - if [ "$answer" -eq 0 ]; then 1.857 - for i in $ALTERED; do 1.858 - if [ -d "$ROOT$INSTALLED/$i" ]; then 1.859 - echo "tazpkg remove $i $ROOTOPTS" 1.860 - fi 1.861 - done 1.862 - fi 1.863 - fi 1.864 - 1.865 - # Process changed packages 1.866 - if [ -n "$REFRESH" ]; then 1.867 - if [ -n "$auto" ]; then 1.868 - answer=0 1.869 - else 1.870 - confirm "$(_ 'Reinstall packages modified by package "%s"? (y/N)' "$PACKAGE")" 1.871 - answer=$? 1.872 - fi 1.873 - if [ "$answer" -eq 0 ]; then 1.874 - for i in $REFRESH; do 1.875 - if [ "$(wc -l < $ROOT$INSTALLED/$i)" -gt 1 ]; then 1.876 - _ 'Check %s for reinstallation' "$INSTALLED/$i" 1.877 - continue 1.878 - fi 1.879 - rm -r $ROOT$INSTALLED/$i 1.880 - tazpkg get-install ${i%/modifiers} $ROOTOPTS --forced 1.881 - done 1.882 - fi 1.883 - fi 1.884 - 1.885 + shift; @@MODULES@@/remove $@ 1.886 ;; 1.887 1.888 1.889 @@ -1861,7 +1210,8 @@ 1.890 1.891 cd "$TOP_DIR" 1.892 rm -rf $TMP_DIR 1.893 - separator; newline ;; 1.894 + separator; newline 1.895 + ;; 1.896 1.897 1.898 repack-config) 1.899 @@ -1907,77 +1257,7 @@ 1.900 # Create SliTaz package archive from an installed package. 1.901 check_for_package_on_cmdline 1.902 check_for_receipt 1.903 - EXTRAVERSION='' 1.904 - . "$INSTALLED/$PACKAGE/receipt" 1.905 - title 'Repacking "%s"' "$PACKAGE-$VERSION$EXTRAVERSION.tazpkg" 1.906 - 1.907 - if grep -qs ^NO_REPACK= "$INSTALLED/$PACKAGE/receipt"; then 1.908 - _ "Can't repack package \"%s\"" "$PACKAGE" 1.909 - exit 1 1.910 - fi 1.911 - 1.912 - if [ -s "$INSTALLED/$PACKAGE/modifiers" ]; then 1.913 - _ "Can't repack, \"%s\" files have been modified by:" "$PACKAGE" 1.914 - for i in $(cat "$INSTALLED/$PACKAGE/modifiers"); do 1.915 - echo " $i" 1.916 - done 1.917 - exit 1 1.918 - fi 1.919 - 1.920 - MISSING='' 1.921 - while read i; do 1.922 - [ -e "$i" ] && continue 1.923 - [ -L "$i" ] || MISSING="$MISSING\n $i" 1.924 - done < "$INSTALLED/$PACKAGE/files.list" 1.925 - if [ -n "$MISSING" ]; then 1.926 - _n "Can't repack, the following files are lost:" 1.927 - echo -e "$MISSING" 1.928 - exit 1 1.929 - fi 1.930 - 1.931 - mkdir -p $TMP_DIR; cd $TMP_DIR 1.932 - FILES="fs.cpio.lzma\n" 1.933 - for i in $(ls "$INSTALLED/$PACKAGE"); do 1.934 - case $i in 1.935 - volatile.cpio.gz|modifiers) ;; 1.936 - *) cp "$INSTALLED/$PACKAGE/$i" .; FILES="$FILES$i\n" ;; 1.937 - esac 1.938 - done 1.939 - 1.940 - ln -s / rootfs 1.941 - mkdir tmp 1.942 - sed 's/^/rootfs/' < files.list | cpio -o -H newc --quiet | \ 1.943 - { cd tmp ; cpio -idm --quiet >/dev/null; cd ..; } 1.944 - mv tmp/rootfs fs 1.945 - 1.946 - if [ -f "$INSTALLED/$PACKAGE/volatile.cpio.gz" ]; then 1.947 - zcat "$INSTALLED/$PACKAGE/volatile.cpio.gz" | \ 1.948 - { cd fs; cpio -idm --quiet; cd ..; } 1.949 - fi 1.950 - 1.951 - if fgrep -q repack_cleanup "$INSTALLED/$PACKAGE/receipt"; then 1.952 - . "$INSTALLED/$PACKAGE/receipt" 1.953 - repack_cleanup fs 1.954 - fi 1.955 - 1.956 - if [ -f "$INSTALLED/$PACKAGE/$CHECKSUM" ]; then 1.957 - sed 's, , fs,' < "$INSTALLED/$PACKAGE/$CHECKSUM" | \ 1.958 - $CHECKSUM -s -c || { 1.959 - _ "Can't repack, %s error." "$CHECKSUM" 1.960 - cd "$TOP_DIR" 1.961 - rm -rf $TMP_DIR 1.962 - exit 1 1.963 - } 1.964 - fi 1.965 - 1.966 - find fs | cpio -o -H newc --quiet | lzma e fs.cpio.lzma -si 1.967 - echo -e "$FILES" | cpio -o -H newc --quiet > \ 1.968 - "$TOP_DIR/$PACKAGE-$VERSION$EXTRAVERSION.tazpkg" 1.969 - cd "$TOP_DIR" 1.970 - \rm -R $TMP_DIR 1.971 - _ 'Package "%s" repacked successfully.' "$PACKAGE" 1.972 - _ 'Size: %s' "$(du -sh "$PACKAGE-$VERSION$EXTRAVERSION.tazpkg")" 1.973 - newline 1.974 + shift; @@MODULES@@/repack $@ 1.975 ;; 1.976 1.977 1.978 @@ -1985,65 +1265,7 @@ 1.979 # Create SliTaz package archive using cpio and lzma. 1.980 # TODO: Cook also pack packages, we should share code in libpkg.sh 1.981 check_for_package_on_cmdline 1.982 - cd "$PACKAGE" 1.983 - if [ ! -f 'receipt' ]; then 1.984 - _ 'Receipt is missing. Please read the documentation.' 1.985 - exit 0 1.986 - fi 1.987 - 1.988 - title 'Packing package "%s"' "$PACKAGE" 1.989 - # Create files.list with redirecting find outpout. 1.990 - 1.991 - action 'Creating the list of files...' 1.992 - cd fs 1.993 - find . -type f -print > ../files.list 1.994 - find . -type l -print >> ../files.list 1.995 - cd ..; sed -i s/'^.'/''/ files.list 1.996 - status 1.997 - 1.998 - action 'Creating %s of files...' "$CHECKSUM" 1.999 - while read file; do 1.1000 - [ -L "fs$file" ] && continue 1.1001 - [ -f "fs$file" ] || continue 1.1002 - case "$file" in 1.1003 - /lib/modules/*/modules.*|*.pyc) continue;; 1.1004 - esac 1.1005 - $CHECKSUM "fs$file" | sed 's/ fs/ /' 1.1006 - done < files.list > $CHECKSUM 1.1007 - status 1.1008 - 1.1009 - UNPACKED_SIZE=$(du -chs fs receipt files.list $CHECKSUM \ 1.1010 - description.txt 2>/dev/null | awk 'END { print $1 }') 1.1011 - 1.1012 - # Build cpio archives. 1.1013 - action "Compressing the FS..." 1.1014 - find fs | cpio -o -H newc --quiet | case "$TAZPKG_PACK" in 1.1015 - gzip) gzip -9 > fs.cpio.gz ;; 1.1016 - *) lzma e fs.cpio.lzma -si ;; 1.1017 - esac 1.1018 - rm -rf fs 1.1019 - status 1.1020 - 1.1021 - PACKED_SIZE=$(du -chs fs.cpio.lzma receipt files.list \ 1.1022 - $CHECKSUM description.txt 2>/dev/null | awk 'END { print $1 }') 1.1023 - 1.1024 - action "Updating receipt sizes..." 1.1025 - sed -i s/^PACKED_SIZE.*$// receipt 1.1026 - sed -i s/^UNPACKED_SIZE.*$// receipt 1.1027 - sed -i "s/^PACKAGE=/PACKED_SIZE=\"$PACKED_SIZE\"\nUNPACKED_SIZE=\"$UNPACKED_SIZE\"\nPACKAGE=/" receipt 1.1028 - status 1.1029 - 1.1030 - action "Creating full cpio archive..." 1.1031 - find . -print | cpio -o -H newc --quiet > "../$PACKAGE.tazpkg" 1.1032 - status 1.1033 - 1.1034 - action "Restoring original package tree..." 1.1035 - unlzma < fs.cpio.lzma | cpio -idm --quiet 1.1036 - status 1.1037 - 1.1038 - rm fs.cpio.lzma && cd .. 1.1039 - footer "$(_ 'Package "%s" compressed successfully.' "$PACKAGE")" 1.1040 - _ 'Size: %s' "$(ls -lh "$PACKAGE.tazpkg" | awk '{print $5}')" 1.1041 + shift; @@MODULES@@/pack $@ 1.1042 ;; 1.1043 1.1044 1.1045 @@ -2053,19 +1275,13 @@ 1.1046 # WARNING: The 'mirrors' file has all SliTaz mirrors but 'mirror' 1.1047 # must have only the chosen main mirror. 1.1048 # 1.1049 - check_root $@ 1.1050 - @@MODULES@@/recharge $2 1.1051 + check_root $1 1.1052 + shift; @@MODULES@@/recharge $@ 1.1053 ;; 1.1054 1.1055 1.1056 - help-up) 1.1057 - # Options available for the command: up 1.1058 - newline; usage_up; newline 1.1059 - exit 1 ;; 1.1060 - 1.1061 - 1.1062 up|upgrade) 1.1063 - check_root $@ 1.1064 + check_root $1 1.1065 # 1.1066 # This is the new way to upgrade packages making 'upgrade' and 1.1067 # upgradeable out-of-date. This new way is much, much more faster! 1.1068 @@ -2105,194 +1321,21 @@ 1.1069 EOT 1.1070 fi 1.1071 done 1.1072 - footer "$MSG" ;; 1.1073 + footer "$MSG" 1.1074 + ;; 1.1075 1.1076 1.1077 check) 1.1078 # Check installed packages set. 1.1079 - #check_root $@ 1.1080 + shift; @@MODULES@@/check $@ 1.1081 + ;; 1.1082 1.1083 - # Get repositories priority list. 1.1084 - look_for_priority 1.1085 1.1086 - cd $INSTALLED 1.1087 - if [ -z "$2" -o -n "$full" ]; then PACKAGES="$(ls)"; else PACKAGES="$2"; fi 1.1088 - PACKAGE_PRINTED='' 1.1089 - 1.1090 - for PACKAGE in $PACKAGES; do 1.1091 - 1.1092 - if [ ! -f "$PACKAGE/receipt" ]; then 1.1093 - print_pkgname 1.1094 - _ 'The package installation has not completed' 1.1095 - continue 1.1096 - fi 1.1097 - 1.1098 - DEPENDS='' 1.1099 - EXTRAVERSION='' 1.1100 - . "$PACKAGE/receipt" 1.1101 - if [ -s "$PACKAGE/modifiers" ]; then 1.1102 - print_pkgname 1.1103 - _ 'The package has been modified by:' 1.1104 - awk '{print " " $0}' "$PACKAGE/modifiers" 1.1105 - fi 1.1106 - 1.1107 - MSG="$(_n 'Files lost from package:')\n" 1.1108 - while read file; do 1.1109 - [ -e "$file" ] && continue 1.1110 - if [ -L "$file" ]; then 1.1111 - MSG="$MSG $(_n 'target of symlink')" 1.1112 - fi 1.1113 - print_pkgname 1.1114 - echo -e "$MSG $file" 1.1115 - MSG='' 1.1116 - done < "$PACKAGE/files.list" 1.1117 - 1.1118 - MSG="$(_n 'Missing dependencies for package:')\n" 1.1119 - for i in $DEPENDS; do 1.1120 - [ -d $i ] && continue 1.1121 - [ -d $(equivalent_pkg $i) ] && continue 1.1122 - print_pkgname 1.1123 - echo -e "$MSG $i" 1.1124 - MSG='' 1.1125 - done 1.1126 - 1.1127 - MSG="$(_n 'Dependencies loop between package and:')\n" 1.1128 - ALL_DEPS='' 1.1129 - check_for_deps_loop "$PACKAGE" "$DEPENDS" 1.1130 - done 1.1131 - [ -n "$PACKAGE_PRINTED" ] && footer 1.1132 - 1.1133 - _ 'Looking for known bugs...' 1.1134 - if [ -z "$2" -o -n "$full" ]; then tazpkg bugs; else tazpkg bugs "$2"; fi 1.1135 - 1.1136 - 1.1137 - if [ -n "$full" ]; then 1.1138 - separator 1.1139 - 1.1140 - title 'Mismatch checksum of installed files:' 1.1141 - 1.1142 - for PACKAGE in $PACKAGES; do 1.1143 - file="$PACKAGE/$CHECKSUM" 1.1144 - CONFIG_FILES='' 1.1145 - . "$PACKAGE/receipt" 1.1146 - [ -s "$file" ] || continue 1.1147 - while read md5 f; do 1.1148 - [ -f $f ] || continue 1.1149 - for i in $CONFIG_FILES; do 1.1150 - case "$f" in 1.1151 - $i|$i/*) continue 2;; 1.1152 - esac 1.1153 - done 1.1154 - echo "$md5 $f" 1.1155 - done < "$file" | busybox $CHECKSUM -c - 2>/dev/null | \ 1.1156 - grep -v OK$ | sed "s/: FAILED$//" 1.1157 - done 1.1158 - footer 1.1159 - 1.1160 - title 'Check file providers:' 1.1161 - FILES=' ' 1.1162 - for PACKAGE in $PACKAGES; do 1.1163 - for file in $(cat "$PACKAGE/files.list"); do 1.1164 - [ -d "$file" ] && continue 1.1165 - case "$FILES" in 1.1166 - *\ $file\ *) continue;; 1.1167 - esac 1.1168 - [ $(grep "^$(echo $file | grepesc)$" */files.list 2> /dev/null | \ 1.1169 - wc -l) -gt 1 ] || continue 1.1170 - FILES="$FILES$file " 1.1171 - newline 1.1172 - _ 'The following packages provide file "%s":' $file 1.1173 - grep -l "^$(echo $file | grepesc)$" */files.list | \ 1.1174 - while read f; do 1.1175 - pkg=${f%/files.list} 1.1176 - if [ -f $pkg/modifiers ]; then 1.1177 - overriders=$(_n '(overridden by %s)' "$(tr '\n' ' ' < $pkg/modifiers | sed 's| $||')") 1.1178 - else 1.1179 - overriders='' 1.1180 - fi 1.1181 - echo -n " * $pkg $overriders" 1.1182 - newline 1.1183 - done 1.1184 - done 1.1185 - done 1.1186 - footer 1.1187 - 1.1188 - if [ -n "$full" ]; then 1.1189 - title 'Alien files:' 1.1190 - MSG="$(_n 'No package has installed the following files:')\n" 1.1191 - find /etc /bin /sbin /lib /usr /var/www -not -type d 2>/dev/null | \ 1.1192 - while read file; do 1.1193 - case "$file" in *\[*) continue;; esac 1.1194 - grep -q "^$(echo $file | grepesc)$" */files.list && continue 1.1195 - echo -e "$MSG $file" 1.1196 - MSG='' 1.1197 - done 1.1198 - footer 1.1199 - fi 1.1200 - fi 1.1201 - _ 'Check completed.'; newline ;; 1.1202 - 1.1203 - 1.1204 - block|-b) 1.1205 - # Add a pkg name to the list of blocked packages. 1.1206 + block|-b|unblock|-u|chblock) 1.1207 + # Add/remove a pkg name to the list of blocked packages. 1.1208 check_root $@ 1.1209 check_for_package_on_cmdline 1.1210 - newline 1.1211 - if [ ! -d "$INSTALLED/$PACKAGE" ]; then 1.1212 - _ 'Package "%s" is not installed.' "$PACKAGE"; exit 1.1213 - fi 1.1214 - if grep -qs "^$PACKAGE" $BLOCKED; then 1.1215 - _ 'Package "%s" is already blocked.' "$PACKAGE" 1.1216 - else 1.1217 - echo "$PACKAGE" >> $BLOCKED 1.1218 - # Log this activity 1.1219 - . "$INSTALLED/$PACKAGE/receipt"; log_pkg Blocked 1.1220 - _ 'Package "%s" blocked.' "$PACKAGE" 1.1221 - fi 1.1222 - newline 1.1223 - ;; 1.1224 - 1.1225 - 1.1226 - unblock|-u) 1.1227 - # Remove a pkg name from the list of blocked packages. 1.1228 - check_root $@ 1.1229 - check_for_package_on_cmdline 1.1230 - newline 1.1231 - if [ ! -d "$INSTALLED/$PACKAGE" ]; then 1.1232 - _ 'Package "%s" is not installed.' "$PACKAGE"; exit 1.1233 - fi 1.1234 - if grep -qs "^$PACKAGE" $BLOCKED; then 1.1235 - sed -i "/^$PACKAGE\$/d" $BLOCKED 1.1236 - # Log this activity 1.1237 - . "$INSTALLED/$PACKAGE/receipt"; log_pkg Unblocked 1.1238 - _ 'Package "%s" unblocked.' "$PACKAGE" 1.1239 - else 1.1240 - _ 'Package "%s" is not blocked.' "$PACKAGE" 1.1241 - fi 1.1242 - newline 1.1243 - ;; 1.1244 - 1.1245 - 1.1246 - chblock) 1.1247 - # Change package's blocked status. 1.1248 - check_root $@ 1.1249 - check_for_package_on_cmdline 1.1250 - newline 1.1251 - if [ ! -d "$INSTALLED/$PACKAGE" ]; then 1.1252 - _ 'Package "%s" is not installed.' "$PACKAGE"; exit 1.1253 - fi 1.1254 - if grep -qs "^$PACKAGE" $BLOCKED; then 1.1255 - sed -i "/^$PACKAGE\$/d" $BLOCKED 1.1256 - # Log this activity 1.1257 - . "$INSTALLED/$PACKAGE/receipt"; log_pkg Unblocked 1.1258 - _ 'Package "%s" unblocked.' "$PACKAGE" 1.1259 - else 1.1260 - echo "$PACKAGE" >> $BLOCKED 1.1261 - # Log this activity 1.1262 - . "$INSTALLED/$PACKAGE/receipt"; log_pkg Blocked 1.1263 - _ 'Package "%s" blocked.' "$PACKAGE" 1.1264 - fi 1.1265 - newline 1.1266 + @@MODULES@@/block $@ 1.1267 ;; 1.1268 1.1269 1.1270 @@ -2357,17 +1400,6 @@ 1.1271 [ -n "$root" ] && ROOT="$root" && check_base_dir "$root" 1.1272 [ -n "$list" ] && INSTALL_LIST="$list" # internal option 1.1273 1.1274 - if [ -n "$rootconfig" ]; then # outdated? 1.1275 - if [ -n "$root" ]; then 1.1276 - CACHE_DIR="$root/$CACHE_DIR" 1.1277 - SAVE_CACHE_DIR="$CACHE_DIR" 1.1278 - PKGS_DB="$root/$PKGS_DB" 1.1279 - else 1.1280 - _ 'rootconfig needs --root= option used.' >&2 1.1281 - exit 1 1.1282 - fi 1.1283 - fi 1.1284 - 1.1285 # Get repositories priority list. 1.1286 look_for_priority 1.1287 1.1288 @@ -2440,76 +1472,30 @@ 1.1289 1.1290 1.1291 list-undigest) 1.1292 - # list undigest URLs. 1.1293 - if [ -n "$box" ]; then 1.1294 - for i in $PKGS_DB/undigest/*/mirror; do 1.1295 - [ -f "$i" ] || continue 1.1296 - echo "$(basename "$(dirname "$i")")|$(cat "$i")" 1.1297 - done 1.1298 - else 1.1299 - title 'Current undigest(s)' 1.1300 - for i in $PKGS_DB/undigest/*/mirror; do 1.1301 - if [ ! -f "$i" ]; then 1.1302 - _ 'No undigest mirror found.' 1.1303 - exit 1 1.1304 - fi 1.1305 - echo "$(basename "$(dirname "$i")")"$'\t'"$(cat "$i")" 1.1306 - done 1.1307 - newline 1.1308 - fi 1.1309 + # List undigest mirrors 1.1310 + @@MODULES@@/mirror list 1.1311 ;; 1.1312 - 1.1313 - 1.1314 remove-undigest) 1.1315 - # remove undigest URL. 1.1316 + # Remove undigest mirror 1.1317 + check_root $1 1.1318 + shift; @@MODULES@@/mirror remove $@ 1.1319 + ;; 1.1320 + add-undigest|setup-undigest) 1.1321 + # Add undigest mirror 1.1322 + check_root $1 1.1323 + shift; @@MODULES@@/mirror add $@ 1.1324 + ;; 1.1325 + setup-mirror|-sm) 1.1326 + # Change main mirror 1.1327 check_root $@ 1.1328 - undigest="$2" 1.1329 - if [ -d "$PKGS_DB/undigest/$2" ]; then 1.1330 - confirm "$(_ 'Remove "%s" undigest? (y/N)' $undigest)" 1.1331 - if [ $? == 0 ]; then 1.1332 - action 'Removing "%s" undigest...' $undigest 1.1333 - rm -rf $PKGS_DB/undigest/$2 1.1334 - status 1.1335 - rmdir $PKGS_DB/undigest 2>/dev/null 1.1336 - fi 1.1337 - else 1.1338 - _ 'Undigest "%s" not found' $undigest 1.1339 - fi 1.1340 + shift; @@MODULES@@/mirror setup $@ 1.1341 ;; 1.1342 1.1343 1.1344 - add-undigest|setup-undigest) 1.1345 - # Add undigest URL. 1.1346 - check_root $@ 1.1347 - 1.1348 - [ ! -d "$PKGS_DB/undigest" ] && mkdir "$PKGS_DB/undigest" 1.1349 - 1.1350 - undigest="$2" 1.1351 - if [ -z "$undigest" ]; then 1.1352 - i='1' 1.1353 - while [ -d "$PKGS_DB/undigest/$i" ]; do 1.1354 - i=$(($i+1)) 1.1355 - done 1.1356 - undigest="$i" 1.1357 - fi 1.1358 - if [ ! -d "$PKGS_DB/undigest/$undigest" ]; then 1.1359 - _ 'Creating new undigest "%s".' "$undigest" 1.1360 - mkdir "$PKGS_DB/undigest/$undigest" 1.1361 - fi 1.1362 - setup_mirror "$PKGS_DB/undigest/$undigest" "$3" 1.1363 - ;; 1.1364 - 1.1365 - 1.1366 - setup-mirror|-sm) 1.1367 - # Change mirror URL. 1.1368 - check_root $@ 1.1369 - setup_mirror $PKGS_DB $2 ;; 1.1370 - 1.1371 - 1.1372 reconfigure) 1.1373 # Replay post_install from receipt 1.1374 check_for_package_on_cmdline 1.1375 - check_root $@ 1.1376 + check_root $1 1.1377 1.1378 ROOT="$root" 1.1379 if [ -d "$ROOT$INSTALLED/$PACKAGE" ]; then 1.1380 @@ -2565,34 +1551,11 @@ 1.1381 1.1382 depends) 1.1383 # Display dependencies tree 1.1384 - unset ALL_DEPS 1.1385 - mkdir $TMP_DIR 1.1386 - dep_scan $2 '' | tee "$TMP_DIR/depends" 1.1387 - if [ -n "$total" ]; then 1.1388 - separator 1.1389 - NUM="$(wc -l < "$TMP_DIR/depends")" 1.1390 - TOTAL="$(sed 's|.*(\([^)]*\))|\1|' "$TMP_DIR/depends" | hrsum)" 1.1391 - _p 'Total: %s package (%s)' 'Total: %s packages (%s)' "$NUM" \ 1.1392 - "$NUM" "$TOTAL" 1.1393 - newline 1.1394 - 1.1395 - if [ -n "$mark" ]; then 1.1396 - NUM="$(grep '^ *-' "$TMP_DIR/depends" | wc -l)" 1.1397 - TOTAL="$(grep '^ *-' "$TMP_DIR/depends" | sed 's|.*(\([^)]*\))|\1|' | hrsum)" 1.1398 - _p 'To install: %s package (%s)' 'To install: %s packages (%s)' "$NUM" \ 1.1399 - "$NUM" "$TOTAL" 1.1400 - newline 1.1401 - fi 1.1402 - fi 1.1403 - rm -rf "$TMP_DIR" 1.1404 + shift; @@MODULES@@/depends depends $@ 1.1405 ;; 1.1406 - 1.1407 - 1.1408 rdepends) 1.1409 # Display reverse dependencies tree 1.1410 - cd $INSTALLED 1.1411 - unset ALL_DEPS 1.1412 - rdep_scan "$2" 1.1413 + shift; @@MODULES@@/depends rdepends $@ 1.1414 ;; 1.1415 1.1416 1.1417 @@ -2604,7 +1567,7 @@ 1.1418 1.1419 1.1420 link) 1.1421 - # link a package from another slitaz installation 1.1422 + # link a package from another SliTaz installation 1.1423 PACKAGE="$2" 1.1424 if [ ! -d "$TARGET_DIR" -o \ 1.1425 ! -d "$TARGET_DIR$INSTALLED/$PACKAGE" ]; then 1.1426 @@ -2664,82 +1627,25 @@ 1.1427 1.1428 help|-h) 1.1429 # TazPkg help system 1.1430 - shift; @@MODULES@@/help $@ ;; 1.1431 + shift; @@MODULES@@/help $@ 1.1432 + ;; 1.1433 1.1434 1.1435 mkdb) 1.1436 # Make TazPkg database 1.1437 - shift; @@MODULES@@/mkdb $@ ;; 1.1438 + shift; @@MODULES@@/mkdb $@ 1.1439 + ;; 1.1440 1.1441 1.1442 '') 1.1443 # Default to summary 1.1444 - title "$(_ 'SliTaz package manager - Version: %s' $(colorize 34 $VERSION))" 1.1445 - 1.1446 - optlist "\ 1.1447 -$(_ 'Installed packages:') $(wc -l < $PKGS_DB/installed.info) 1.1448 -$(_ 'Installed files:') $(cat $INSTALLED/*/files.list | wc -l) 1.1449 -$(_ 'Blocked packages:') $( (wc -l < $PKGS_DB/blocked-packages.list) 2>/dev/null || echo 0) 1.1450 -$(_ 'Upgradeable packages:') $( (wc -l < $PKGS_DB/packages.up) 2>/dev/null || echo 0) 1.1451 -$( 1.1452 - # Per-repository stuff 1.1453 - 1.1454 - if [ -h "$PKGS_DB/fslink" ]; then 1.1455 - if [ -e "$PKGS_DB/fslink/etc/slitaz/slitaz.conf" ]; then 1.1456 - PKGS_DB_LINK="$PKGS_DB/fslink/$(. "$PKGS_DB/fslink/etc/slitaz/slitaz.conf"; echo "$PKGS_DB")" 1.1457 - fi 1.1458 - fi 1.1459 - 1.1460 - for path in $PKGS_DB $PKGS_DB/undigest/* $PKGS_DB_LINK; do 1.1461 - [ ! -e "$path" ] && continue 1.1462 - case "$path" in 1.1463 - $PKGS_DB) repo_name='Main';; 1.1464 - */fslink/*) repo_name=$(readlink $PKGS_DB/fslink);; 1.1465 - *) repo_name="$(_n 'Undigest %s' "$(basename "$path")")";; 1.1466 - esac 1.1467 - 1.1468 - newline; colorize 33 "$(_n 'Repository:'; echo -e "\t$repo_name")" 1.1469 - 1.1470 - _n 'Last recharge:'; echo -en '\t' 1.1471 - IDs="$path/IDs" 1.1472 - if [ -e "$IDs" ]; then 1.1473 - # Timezone offset as string, ex. '+0200' for EET (+2 hours) 1.1474 - ohhmm="$(date +%z)" 1.1475 - # Timezone offset in the seconds 1.1476 - offset=$(( 60 * (60 * ${ohhmm:0:3} + ${ohhmm:3:2}) )) 1.1477 - daynow=$(( ($(date +%s) + $offset) / 86400 )) 1.1478 - dayupd=$(( ($(date -r $IDs +%s) + $offset) / 86400 )) 1.1479 - days=$(( $daynow - $dayupd )) 1.1480 - time=$(date -r $IDs +%R) 1.1481 - case $days in 1.1482 - 0) _ 'Today at %s.' $time;; 1.1483 - 1) _ 'Yesterday at %s.' $time;; 1.1484 - *) _p '%d day ago.' '%d days ago.' $days $days; newline;; 1.1485 - esac 1.1486 - 1.1487 - _n 'Database timestamp:'; echo -en '\t' 1.1488 - date -d "@$(awk '{print $2}' "$IDs")" "+%x %R" 1.1489 - else 1.1490 - _ 'never.' 1.1491 - fi 1.1492 - 1.1493 - if [ -e "$path/packages.info" ]; then 1.1494 - _n 'Mirrored packages:'; echo -en '\t'; wc -l < "$path/packages.info" 1.1495 - fi 1.1496 - 1.1497 - if [ "${path/fslink/}" != "$path" ]; then 1.1498 - _n 'Linked packages:'; echo -en '\t' 1.1499 - find $INSTALLED -type l | wc -l 1.1500 - fi 1.1501 - done 1.1502 -)" 1.1503 - footer 1.1504 + @@MODULES@@/summary 1.1505 ;; 1.1506 1.1507 1.1508 usage|*) 1.1509 # Print a short help or give usage for an unknown or empty command. 1.1510 - usage ;; 1.1511 + @@MODULES@@/help ;; 1.1512 esac 1.1513 1.1514 exit 0