Fórum Ubuntu Linux - PT

Suporte Técnico => Sistema => Tópico iniciado por: zaptool em 18 de MAR?O de 2015, 14:56

Título: Como fazer update sem afetar PHP5 compilado ?
Enviado 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
Título: Re: Como fazer update sem afetar PHP5 compilado ?
Enviado por: Felix em 18 de MAR?O de 2015, 18:04
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:


Citar
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
Título: Re: Como fazer update sem afetar PHP5 compilado ?
Enviado por: zaptool em 25 de MAR?O de 2015, 17:15
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.
Título: Re: Como fazer update sem afetar PHP5 compilado ?
Enviado por: Felix em 25 de MAR?O de 2015, 17:29
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.
Título: Re: Como fazer update sem afetar PHP5 compilado ?
Enviado por: irtigor em 26 de MAR?O de 2015, 11:57
A sugestão do Felix foi certeira, se não existisse esse recurso, eu sugeriria colocar um numero alto pro teu pacote.
Título: Re: Como fazer update sem afetar PHP5 compilado ?
Enviado por: Luiz Antonio em 26 de MAR?O de 2015, 15:38
Acredito que dá para fazer também pelo synaptic.

Menu - Package - Lock version
Título: Re: Como fazer update sem afetar PHP5 compilado ?
Enviado por: JFMMão de Ferro em 26 de MAR?O de 2015, 18:02
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
Título: Re: Como fazer update sem afetar PHP5 compilado ?
Enviado por: druidaobelix em 03 de Abril de 2015, 03:07
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:

Código: [Selecionar]
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


Título: Re: Como fazer update sem afetar PHP5 compilado ?
Enviado por: zaptool em 06 de Abril de 2015, 10:43
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
Título: Re: Como fazer update sem afetar PHP5 compilado ?
Enviado por: zaptool em 06 de Abril de 2015, 11:36
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 !!



Título: Re: Como fazer update sem afetar PHP5 compilado ?
Enviado por: zekkerj em 15 de Abril de 2015, 21:27
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?
Título: Re: Como fazer update sem afetar PHP5 compilado ?
Enviado por: zaptool em 06 de Maio de 2015, 11:21
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
Título: Re: Como fazer update sem afetar PHP5 compilado ?
Enviado por: zekkerj em 06 de Maio de 2015, 14:01
Mas essa versão é do repositório? Se for, vc pode forçar a instalação dela, e depois "piná-la".