Fórum Ubuntu Linux - PT
Suporte Técnico => Sistema => Tópico iniciado por: zaptool em 18 de MAR?O de 2015, 14:56
-
Olá galera !!!
Meu primeiro tópico aqui ...
Vamos lá .. .tenho um servidor WEB com ubuntu 14.04, houve a necessidade de se utilizar o php5 compilado para manter todo o ambiente da empresa padronizado em uma versão.
Para poder compilar o php5 depois de alguns problemas, tive a necessidade de satisfazer diversas dependências utilizando o recurso "sudo apt-get build-dep php5", depois disso compilei normalmente o meu php e passei a utiliza-lo nas estações dos desenvolvedores e também nos servidores.
1º problema, sempre que um desenvolvedor faz um update na estação, ferra com a minha compilação, o update enfia outro php mais atual por cima, quando ocorre isso, sou obrigado a recompilar o php.
2º problema, por este motivo tenho evitado atualizar os servidores e isso não é bacana.
Pergunta, como faço para configurar o update para atualizar o S.O com excessão do PHP5 ?
agradeço muito pela ajuda
-
Fiquei curioso a respeito do problema e fui pesquisar, encontrei neste link (https://www.debian.org/doc/manuals/apt-howto/ch-apt-get.pt-br.html), mas ainda não testei, dê um feedback depois para nós, já que você precisa testar isso:
3.10 Como manter versões específicas de pacotes instaladas (complexo)
Algumas vezes você fez uma modificação em um programa e não tem tempo ou vontade de portar aquelas mudanças para um versão nova do programa. Então você "prega" a versão que você tem instalada para que não seja feita a atualização. Ou você acaba de atualizar sua distribuição Debian para a 3.0 mas quer continuar com um certo pacote da 2.2.
É para esse propósito que serve o "pinning". A utilização desse recurso é simples. Basta editar o arquivo /etc/apt/preferences.
O formato é simples:
Package: <pacote>
Pin: <definição do pin>
Pin-Priority: <prioridade do pin>
Cada entrada deve ser separada de qualquer outra por uma linha em branco. Por exemplo, para manter o pacote sylpheed que eu modifiquei para aceitar "responder para a lista" na versão 0.4.99, eu adiciono:
Package: sylpheed
Pin: version 0.4.99*
Note que eu usei um * (asterisco). Isso serve para dizer que quero que esse "pin" sirva para todas as versões que comecem com 0.4.99. Isso porque o Debian versiona seus pacotes com uma "revisão Debian" e eu não quero impedir essas revisões de entrar. Ou seja, as versões 0.4.99-1 e 0.4.99-10 seriam instaladas a partir do momento em que existissem. Se você modificou uma versão do pacote você não vai querer que isso aconteça assim, no entanto.
A prioridade do pin ajuda a determinar se um pacote que case com as linhas "Packages:" e "Pin:" será instalado, com as prioridades maiores aumentando a possibilidade de que isso aconteça. Você pode ler apt_preferences(7) para uma discussão detalhada de prioridades, mas uns poucos exemplos devem dar uma boa idéia básica. Vejamos uma lista descrevendo o efeito de definir a opção do campo prioridade para diferentes valores no exemplo do sylpheed acima.
1001
A versão 0.4.99 do Sylpheed nunca será trocada pelo apt. Se estiver disponível o APT irá instalar a versão 0.4.99 mesmo que ela substitua um pacote já instalado com uma versão maior. Apenas pacotes com prioridade maior que 1000 terão sua versão rebaixada.
1000
O efeito é o mesmo da prioridade 1001, mas o apt se recusará a baixar uma versão instalada que seja maior que 0.4.99.
990
A versão 0.4.99 será trocada apenas por uma versão maior que esteja disponível a partir da distribuição designada como a preferida usando a variável "APT::Default-Release" (veja Como manter um sistema misto, Seção 3.8 acima).
500
Qualquer versão maior que 0.4.99 do sylpheed que esteja disponível a partir de qualquer distribuição terá preferência sobre a 0.4.99, mas a 0.4.99 será ainda preferida a qualquer versão inferior.
100
Versões maiores do sylpheed disponíveis de qualquer distribuição terão preferência sobre a versão 0.4.99, assim como qualquer versão maior que esteja instalada; então a versão 0.4.99 será instalada somente quando não houver versão alguma instalada. Essa é a prioridade dos pacotes instalados.
-1
As prioridades negativas são permitidas, também, e evitam que a versão 0.4.99 seja instalada.
As opções para o pin podem ser: version, release ou origin.
A opção version, como já vimos, suporta uma versão normal e uma máscara (como um asterisco, por exemplo) para definir várias verões de uma vez.
A opção release é mais ampla e depende do arquivo Release do repositório APT, ou do CD. Esta opção pode deixar a desejar pois alguns repositórios não o contém. Você pode ver o conteúdo dos arquivos Release que você tem em /var/lib/apt/lists/. As sub-opções são: a (archive), c (componente), v (versão), o (origin) e l (label).
Um exemplo:
Package: *
Pin: release v=2.2*,a=stable,c=main,o=Debian,l=Debian
Pin-Priority: 1001
Neste exemplo escolhemos versão do Debian 2.2*, que considera as "revisões" (que vêm com consertos de segurança e bugs sérios), repositório stable, seção main (poderia ser contrib e non-free, por exemplo) e origem e nome Debian. Origem (o=) define quem produziu aquele arquivo Release, o nome (l=) define o nome da distribuição: Debian para o próprio Debian e Progeny para a mesma, por exemplo. Um exemplo de arquivo Release:
$ cat /var/lib/apt/lists/ftp.debian.org.br_debian_dists_potato_main_binary-i386_Release
Archive: stable
Version: 2.2r3
Component: main
Origin: Debian
Label: Debian
Architecture: i386
-
Obrigado pelas preciosas dicas, eu tentei aqui, mas logo de cara não encontrei o arquivo informado no inicio do texto /etc/apt/prefenrence
A versão do meu linux é 14.04
Vou continuar pesquisando aqui como implementar essa dica.
muito agradecido.
-
Também uso o Ubuntu 14.04 e encontrei apenas uma pasta vazia em /etc/apt/preferences.d
Porém você pode encontrar maiores informações respectivas ao Ubuntu neste link: https://help.ubuntu.com/community/PinningHowto (em inglês) que trata justamente sobre sua dúvida.
-
A sugestão do Felix foi certeira, se não existisse esse recurso, eu sugeriria colocar um numero alto pro teu pacote.
-
Acredito que dá para fazer também pelo synaptic.
Menu - Package - Lock version
-
Há meses atrás senti necessidade de bloquear a versão do Gramps que vem por defeito no 14.04 porque não está completamente desenvolvida, usando a primeira instrução, igual ao Félix
http://revolutionsfree.blogspot.pt/2010/01/travar-atualizacoes-de-programas.html
http://tutorfreebr.blogspot.pt/2011/07/evitar-atualizacao-de-um-programa.html
Usei o primeiro, ficando o meu assim, até hoje nunca mais houve actualizações
sudo gedit /etc/apt/preferences
Package: gramps
Pin: version 3.4.8*
Pin-Priority: 600
JFMMF
-
Não tem segredo, é exatamente isso, usar o pinning, basta criar o arquivo preferences dentro de /etc/preferences.d/ e colocar lá as restrições.
O arquivo 'preferences' não existe, o diretório vem vazio por padrão, basta criá-lo.
Uso isso há muito tempo e funciona sem problemas, tenho aqui um computador que é multiboot e que não quero a atualização de kernel em razão de funcionar bem apenas com uma específica compilação de placa de vídeo, então o kernel é travado para uma determinada versão.
Um exemplo real do que uso aqui do conteúdo do arquivo 'preferences' instalado num Ubuntu 12.04 travando atualização do kernel:
Package: linux-generic
Pin: version 3.2.0.70.84
Pin-Priority: 1000
Package: linux-headers-generic
Pin: version 3.2.0.70.84
Pin-Priority: 1000
Package: linux-image-generic
Pin: version 3.2.0.70.84
Pin-Priority: 1000
Package: linux-libc-dev
Pin: version 3.2.0-70.105
Pin-Priority: 1000
Uma informação de caráter mais geral para quem do Fórum queira usar esse recurso, use:
apt-cache search palavra
onde 'palavra' é um termo qualquer que você conhece de um determinado pacote.
Isso irá trazer uma relação de pacotes que contenham no nome aquela palavra.
É necessário quando não se sabe o nome exato do pacote que se quer travar.
O nome do pacote é necessário para que se possa configurar o pinning.
exemplo:
apt-cache search php5
Vai produzir uma lista enorme de pacotes relativos ao php5
Use ainda:
apt-cache show pacote
onde pacote é o nome de um específico pacote encontrado na relação anterior.
Vai informar os dados específicos desse pacote, onde se poderá ver a versão para configurar o pinning.
exemplo:
apt-cache show php5-common
Vai se obter os dados específicos do pacote php5-common.
Nessa relação de dados se destaca a versão,
Por exemplo:
Version: 5.5.9+dfsg-1ubuntu4.7
Vai usar isso para travar, para fazer o pinning
-
Olá galera !!
Que ótimo todos estes comentários sobre este assunto, bom ..vamos lá ..
Eu fiz exatamente como sugestão dos colegas, criei o arquivo preferente no path /etc/apt/preference.d/
coloquei o seguinte conteúdo:
▽
Package:php5
Pin: version 5.5.9+dfsg-1ubuntu4
Priority: -1
Package:php5-common
Pin: version 5.5.9+dfsg-1ubuntu4.3
Priority: -1
Package:php5-cli
Pin: version 5.5.9+dfsg-1ubuntu4.3
Priority: -1
Package:php5-readline
Pin: version 5.5.9+dfsg-1ubuntu4.3
Priority: -1
resultado do meu apt-get upgrade:
apache2 apache2-bin apache2-data apache2-dev apache2-mpm-prefork
apache2-utils apparmor apport apt apt-transport-https apt-utils base-files
bash bind9-host binutils bsdutils ca-certificates comerr-dev coreutils cpio
curl dbus dh-apparmor dnsutils e2fslibs e2fsprogs file gcc-4.9-base git
git-man gnupg gpgv icu-devtools initscripts krb5-locales krb5-multidev
landscape-common language-pack-de language-pack-de-base language-pack-en
language-pack-en-base language-selector-common libapache2-mod-php5
libapparmor-perl libapparmor1 libapt-inst1.5 libapt-pkg4.12
libasn1-8-heimdal libbind9-90 libblkid1 libc-bin libc-dev-bin libc6
libc6-dev libcgmanager0 libcomerr2 libcurl3 libcurl3-gnutls
libcurl4-openssl-dev libdbus-1-3 libdns100 libdrm2 libelf1 libevent-2.0-5
libevent-core-2.0-5 libevent-dev libevent-extra-2.0-5 libevent-openssl-2.0-5
libevent-pthreads-2.0-5 libfreetype6 libfreetype6-dev libgcc1 libgcrypt11
libgcrypt11-dev libglib2.0-0 libglib2.0-bin libglib2.0-data libglib2.0-dev
libgnutls-dev libgnutls-openssl27 libgnutls26 libgnutlsxx27 libgssapi-krb5-2
libgssapi3-heimdal libgssrpc4 libhcrypto4-heimdal libheimbase1-heimdal
libheimntlm0-heimdal libhx509-5-heimdal libicu-dev libicu52 libisc95
libisccc90 libisccfg90 libk5crypto3 libkadm5clnt-mit9 libkadm5srv-mit9
libkdb5-7 libkrb5-26-heimdal libkrb5-3 libkrb5-dev libkrb5support0
liblwres90 libmagic-dev libmagic1 libmount1 libmysqlclient-dev
libmysqlclient18 libnuma1 libpam-systemd libplymouth2 libpq-dev libpq5
libprocps3 libroken18-heimdal libsepol1 libss2 libssl-dev libssl1.0.0
libsystemd-daemon-dev libsystemd-daemon0 libsystemd-login0 libtiff5
libtiff5-dev libtiffxx5 libudev1 libuuid1 libwind0-heimdal libxml2
libxml2-dev linux-firmware linux-libc-dev lshw man-db mime-support mount
multiarch-support mysql-common ntp ntpdate openssl php5-cli php5-common
php5-readline plymouth plymouth-theme-ubuntu-text ppp procps python-apt
python-apt-common python-requests python-urllib3 python3-apport python3-apt
python3-distupgrade python3-problem-report python3-software-properties
rsyslog software-properties-common sudo systemd-services sysv-rc
sysvinit-utils tcpdump tzdata ubuntu-release-upgrader-core udev
unattended-upgrades unzip update-notifier-common util-linux uuid-dev
uuid-runtime wget wpasupplicant x11-common x11proto-core-dev xtrans-dev
Vejam que os pacotes php-cli common e readline continuam sendo listados para o upgrade... fiz algo errado ?
abs
-
Consegui Baralho !!!
Modifiquei o que tinha feito no post anterior:
Meu preferences ficou assim:
Package: php5 php5-cli php5-curl php5-gd php5-mysql php5-pgsql php5-common php5-mcrypt php5-cgi libapache2-mod-php5
Pin: version 5.5.9*
Pin-Priority: -1
Agora deu certo, não está aparecendo na lista do upgrade.
Muito obrigado a todos pela ajuda !!
-
Olá galera !!!
Meu primeiro tópico aqui ...
Vamos lá .. .tenho um servidor WEB com ubuntu 14.04, houve a necessidade de se utilizar o php5 compilado para manter todo o ambiente da empresa padronizado em uma versão.
Para poder compilar o php5 depois de alguns problemas, tive a necessidade de satisfazer diversas dependências utilizando o recurso "sudo apt-get build-dep php5", depois disso compilei normalmente o meu php e passei a utiliza-lo nas estações dos desenvolvedores e também nos servidores.
1º problema, sempre que um desenvolvedor faz um update na estação, ferra com a minha compilação, o update enfia outro php mais atual por cima, quando ocorre isso, sou obrigado a recompilar o php.
2º problema, por este motivo tenho evitado atualizar os servidores e isso não é bacana.
Pergunta, como faço para configurar o update para atualizar o S.O com excessão do PHP5 ?
agradeço muito pela ajuda
Pergunta, zaptool: quais foram as opções que te levaram a usar o PHP modificado?
-
Olá galera !!!
Meu primeiro tópico aqui ...
Vamos lá .. .tenho um servidor WEB com ubuntu 14.04, houve a necessidade de se utilizar o php5 compilado para manter todo o ambiente da empresa padronizado em uma versão.
Para poder compilar o php5 depois de alguns problemas, tive a necessidade de satisfazer diversas dependências utilizando o recurso "sudo apt-get build-dep php5", depois disso compilei normalmente o meu php e passei a utiliza-lo nas estações dos desenvolvedores e também nos servidores.
1º problema, sempre que um desenvolvedor faz um update na estação, ferra com a minha compilação, o update enfia outro php mais atual por cima, quando ocorre isso, sou obrigado a recompilar o php.
2º problema, por este motivo tenho evitado atualizar os servidores e isso não é bacana.
Pergunta, como faço para configurar o update para atualizar o S.O com excessão do PHP5 ?
agradeço muito pela ajuda
Pergunta, zaptool: quais foram as opções que te levaram a usar o PHP modificado?
Na verdade o PHP não está modificado, simplesmente congelado em uma versão. Como existem muitos sistemas desenvolvidos em uma determinada versão, não fazemos update para novas versões para evitar problemas.
abs
-
Mas essa versão é do repositório? Se for, vc pode forçar a instalação dela, e depois "piná-la".