Instale uma lista de pacotes somente se eles já não estiverem instalados

5

Estou tentando automatizar minha configuração o máximo possível.

Para fazer isso eu tenho listas de pacotes que eu quero instalar, por exemplo: banshee wireshark audacity thunderbird thunderbird-lightning caliber dilúvio unison-gtk usb-criador-digitação digikam cromo-navegador bleachbit soundconverter kdenlive firefox-kde-support vlc kwrite openjdk-6-jre icedtea6-plugin virtualbox virtualbox-convidado-adições-iso.

Eu quero escrever um pequeno script para chamar o apt-get para instalar esses pacotes somente se eles ainda não estiverem instalados.

Atualmente, tenho isso, mas não funciona:

dpkg -s "" > /dev/null 2>&1 || apt-get -y install "" , (onde $ 1 é a lista)

    
por happyskeptic 24.01.2012 / 15:10

4 respostas

3

O apt-get irá ignorar silenciosamente qualquer pacote já instalado, por isso não sei por que ele precisa de um tratamento especial? ou seja:

root@bun:~# apt-get -y install  vlc
Reading package lists... Done
Building dependency tree       
Reading state information... Done
vlc is already the newest version.

Existe uma razão particular para que isso não funcione para você como está?

    
por Caesium 24.01.2012 / 15:21
1

Para um script de configuração de sessão ao vivo, eu tive algo assim:

# returns 1 if the package was already installed and 0 otherwise. The first
# argument is the package name to be checked (and installed if not already).
# other arguments are passed to apt-get
try_install() {
    dpkg -l "" | grep -q ^ii && return 1
    apt-get -y install "$@"
    return 0
}

if try_install openssh-server; then
    sed /etc/ssh/sshd_config 's/UsePAM yes/UsePAM no/' -i
    reload ssh
fi
try_install screen && wget lekensteyn.nl/files/screenrc -O ~/.screenrc
# passing extra options and package names to apt-get
try_install firefox --no-install-recommends firefox-kde-support

Se um aplicativo já estava instalado, assumi que ele fosse configurado.

    
por Lekensteyn 25.01.2012 / 17:09
0

Você pode tentar salvar uma lista de pacotes já instalados via dpkg --get-selections > installed-software

Agora, você pode usar outras ferramentas para encontrar quais pacotes devem ser instalados, por exemplo:

vadik@ubuntu:~$ cat installed-software | grep "indicator-weather"
indicator-weather               install
vadik@ubuntu:~$ cat installed-software | grep "indicator-cpufreq"
vadik@ubuntu:~$ 

Como você pode ver, é possível determinar se indicator-weather ou indicator-cpufreq estão instalados usando grep

    
por Vadim Rutkovsky 25.01.2012 / 14:42
0

Voltei às minhas perguntas feitas neste site e percebi que nunca postei os comandos que acabei usando:

export DEBIAN_FRONTEND=noninteractive # stop annoying prompts
dpkg -s "$@" > /dev/null 2>&1 || apt-get -qq -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install "$@"
    
por happyskeptic 30.07.2015 / 13:53