diff --git a/bin/epm b/bin/epm
index c54dd1c95859e7cc7a514a2af1948de23038febb..c6036976ebd8dbdf759aec952c5fa10ba6cc855f 100755
--- a/bin/epm
+++ b/bin/epm
@@ -58,6 +58,7 @@ Descr="epm - EPM package manager"
 verbose=
 quiet=
 non_interactive=
+skip_installed=
 epm_cmd=
 pkg_files=
 pkg_names=
@@ -94,6 +95,9 @@ for opt in "$@" ; do
     --verbose)            # HELPOPT: verbose mode
         verbose=1
         ;;
+    --skip-installed)     # HELPOPT: skip already install during install
+        skip_installed=1
+        ;;
     --quiet)              # HELPOPT: quiet mode (do not print commands before exec)
         quiet=1
         ;;
diff --git a/bin/epm-install b/bin/epm-install
index bf0f4a8a9575c7a6f7cc6af91b3ac6595776547a..f082af443d1c4b53b3ff2df2776f5ad72cf076da 100644
--- a/bin/epm-install
+++ b/bin/epm-install
@@ -18,6 +18,32 @@
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 
+# TODO: use when run install with epm --skip-installed install
+filter_out_installed_packages()
+{
+	[ -z "$skip_installed" ] && cat && return
+
+	# TODO: use this more effectively way
+	#for i in $(cat) ; do
+	#	rpm -q $i >/dev/null && continue
+	#	echo $i
+	#done | 
+	case $PKGFORMAT in
+		"rpm")
+			LANG=C LC_ALL=C xargs -n1 rpm -q 2>&1 | grep 'is not installed' |
+				sed -e 's|^.*package \(.*\) is not installed.*|\1|g'
+			;;
+		"deb")
+			LANG=C LC_ALL=C xargs -n1 dpkg -L 2>&1 | grep 'is not installed.' |
+				sed -e 's|^Package .\(.*\). is not installed.*|\1|g'
+			;;
+		*)
+			cat
+			;;
+	esac | sed -e "s|rpm-build-altlinux-compat||g" | filter_strip_spaces
+}
+
+
 # copied from etersoft-build-utils/share/eterbuild/functions/rpmpkg
 epm_install_names()
 {
@@ -99,13 +125,16 @@ epm_install()
 {
     [ -n "$pkg_files$pkg_names" ] || fatal "Run install without packages"
 
+    local names=$(echo $pkg_names | filter_out_installed_packages)
+    local files=$(echo $pkg_files | filter_out_installed_packages)
+
+    [ -z "$files$names" ] && echo "Skip empty install list" && return 2
+
     if [ -n "$non_interactive" ] ; then
-        epm_ni_install_names $pkg_names || return
+        epm_ni_install_names $names || return
     else
-        epm_install_names $pkg_names || return
+        epm_install_names $names || return
     fi
 
-    epm_install_files $pkg_files
-
+    epm_install_files $files
 }
-