#!/bin/sh # Utilisation: $0 rep="$1" shift # Copie $1 vers $2 en créant les répertoires parents. copie_dir () { [ -e "${2}" ] && return rep_base=$(dirname "${2}") [ -d "${rep_base}" ] || { echo "++ mkdir -p ${rep_base}" mkdir -p "${rep_base}" } echo "+ cp -a $1 $2" cp -a "$1" "$2" } # Copie $1 vers $2 + copie des librairies utilisées. copie_ldd () { local src dest file f f_link src="$1" dest="$2" [ -e "${dest}" ] && return file=( $(ldd "$src" | awk '{print $3}' | grep '^/') ) file=( "${file[@]}" $(ldd "$src" | grep '/' | grep -v '=>' | awk '{print $1}') ) for f in "${file[@]}" do f_link=$(readlink -f "$f") copie_dir "$f_link" "${rep}${f}" done copie_dir "$src" "${dest}" } if [[ ! -d "$rep" ]]; then mkdir -p "$rep/usr/lib" ln -s usr/lib "$rep/lib" fi for prog in "$@" do prog=$(which "$prog") prog_real=$(readlink -f "$prog") copie_ldd "$prog_real" "${rep}${prog}" done