Merge pull request #20 from evax/package-apt-fixes
better handling of virtual packages in __package_apt
This commit is contained in:
		
				commit
				
					
						dc616a6996
					
				
			
		
					 2 changed files with 29 additions and 19 deletions
				
			
		| 
						 | 
					@ -28,4 +28,11 @@ else
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Except dpkg failing, if package is not known / installed
 | 
					# Except dpkg failing, if package is not known / installed
 | 
				
			||||||
dpkg -s "$name" 2>/dev/null || exit 0
 | 
					packages="$(apt-cache showpkg "$name" | sed -e  "1,/Reverse Provides:/d" | cut -d ' ' -f 1) $name"
 | 
				
			||||||
 | 
					for p in $packages; do
 | 
				
			||||||
 | 
					    if [ -n "$(dpkg -s "$p" 2>/dev/null | grep "^Status: install ok installed$")" ]; then
 | 
				
			||||||
 | 
					       echo "installed $p"
 | 
				
			||||||
 | 
					       exit 0
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					echo "removed"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,26 +27,29 @@ else
 | 
				
			||||||
   name="$__object_id"
 | 
					   name="$__object_id"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
state="$(cat "$__object/parameter/state")"
 | 
					state_should="$(cat "$__object/parameter/state")"
 | 
				
			||||||
is_installed="$(grep "^Status: install ok installed" "$__object/explorer/pkg_status" || true)"
 | 
					state_is="$(cat "$__object/explorer/pkg_status")"
 | 
				
			||||||
 | 
					case "$state_is" in
 | 
				
			||||||
 | 
					    installed*)
 | 
				
			||||||
 | 
					       name="$(echo "$state_is" | cut -d ' ' -f 2)"
 | 
				
			||||||
 | 
					       state_is="installed"
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
aptget="DEBIAN_FRONTEND=noninteractive apt-get --quiet --yes"
 | 
					aptget="DEBIAN_FRONTEND=noninteractive apt-get --quiet --yes"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
case "$state" in
 | 
					if [ "$state_is" != "$state_should" ]; then
 | 
				
			||||||
   installed)
 | 
					   case "$state_should" in
 | 
				
			||||||
      # Install only if non-existent
 | 
					      installed)
 | 
				
			||||||
      if [ -z "$is_installed" ]; then
 | 
					 | 
				
			||||||
         echo $aptget install \"$name\"
 | 
					         echo $aptget install \"$name\"
 | 
				
			||||||
      fi
 | 
					      ;;
 | 
				
			||||||
   ;;
 | 
					      removed)
 | 
				
			||||||
   removed)
 | 
					 | 
				
			||||||
      # Remove only if existent
 | 
					 | 
				
			||||||
      if [ -n "$is_installed" ]; then
 | 
					 | 
				
			||||||
         echo $aptget remove \"$name\"
 | 
					         echo $aptget remove \"$name\"
 | 
				
			||||||
      fi
 | 
					      ;;
 | 
				
			||||||
   ;;
 | 
					      *)
 | 
				
			||||||
   *)
 | 
					         echo "Unknown state: $state" >&2
 | 
				
			||||||
      echo "Unknown state: $state" >&2
 | 
					         exit 1
 | 
				
			||||||
      exit 1
 | 
					      ;;
 | 
				
			||||||
   ;;
 | 
					   esac
 | 
				
			||||||
esac
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue