Instale pacotes a partir de uma versão mais recente sem construir (apt pinning)

34

Preciso desses pacotes com a versão upstream mais recente suportada para ubuntu / natty

  • libccid_1.4.5-0ubuntu1_amd64.deb
  • libpcsclite1_1.8.1-0ubuntu1_amd64.deb
  • libpcsclite-dev_1.8.1-0ubuntu1_amd64.deb
  • libusb-1.0-0_1.0.9-0ubuntu1_amd64.deb
  • libusb-1.0-0-dev_1.0.9-0ubuntu1_amd64.deb
  • opensc_0.12.2-1ubuntu1ppa1 ~ natty1_amd64.deb
  • pcscd_1.8.1-0ubuntu1_amd64.deb pcsc-tools_1.4.18-0ubuntu1_amd64.deb

Eu tentei construí-los a partir da fonte com atualização, mas falhou. Eu não sou especialista em embalagens e existem muitos tutoriais e receitas por aí.

Você conhece um tutorial bom e atualizado para fazer o backport de pacotes Ubuntu?

Como obtenho pacotes de outros releases sem ter que construí-los eu mesmo?

Janning
fonte

Respostas:

36

Você seria muito melhor explorando a fixação adequada, veja man apt_preferences.

Vamos assumir que você está no Oneiric e deseja obter esses pacotes do Precise.

Se você ler, manverá que copiei / colei as seções relevantes e apenas modifiquei o nome do release

/etc/apt/preferences:

Package: libccid
Pin: release n=precise
Pin-Priority: 990

Package: libpcsclite*
Pin: release n=precise
Pin-Priority: 990

Package: libusb*
Pin: release n=precise
Pin-Priority: 990

Package: opensc
Pin: release n=precise
Pin-Priority: 990

Package: pcscd
Pin: release n=precise
Pin-Priority: 990


Explanation: Uninstall or do not install any Ubuntu-originated
Explanation: package versions other than those in the oneiric release
Package: *
Pin: release n=oneiric
Pin-Priority: 900

Package: *
Pin: release o=Ubuntu
Pin-Priority: -10

Então, copiei o meu /etc/apt/sources.listpara /etc/apt/sources.list.d/precise.liste substitui todas as ocorrências de oníricas por precisas. Então correu apt-get updatee finalmente apt-get upgrade.

$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be upgraded:
  libpcsclite1 libusb-0.1-4 libusb-1.0-0 libusbmuxd1
4 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 86.0 kB of archives.
After this operation, 88.1 kB disk space will be freed.
Do you want to continue [Y/n]? y
Get:1 http://us.archive.ubuntu.com/ubuntu/ precise/main libusb-0.1-4 amd64 2:0.1.12-20 [17.6 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu/ precise/main libusb-1.0-0 amd64 2:1.0.9~rc3-2 [30.9 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu/ precise/main libpcsclite1 amd64 1.7.4-2ubuntu1 [23.5 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu/ precise/main libusbmuxd1 amd64 1.0.7-2 [14.1 kB]
 Fetched 86.0 kB in 0s (124 kB/s) 

Por alguma razão, pcscd e opensc não foram instalados, provavelmente porque não foram instalados para começar, portanto não havia nada para atualizar, não é grande coisa, eu posso instalar exatamente essa versão usando a precisão como referência como esta.

apt-get install opensc pcscd -t precise

Tome nota do uso de -t, packagename/precisetambém funcionaria.

e existem os pacotes que você deseja, desde a versão mais recente, e somente esses pacotes , eles também serão atualizados automaticamente. Se você não quiser mais, basta excluir as entradas /etc/apt/preferencese, na próxima vez em que apt-get upgradeelas forem executadas, elas serão removidas. Se você remover o arquivo inteiro prefs, não se esqueça de excluir esse precise.listarquivo de origem, pois nosso sistema tentará atualizar para o último conjunto de pacotes. Além disso, se você decidir fazer a atualização distinta posteriormente, será necessário remover o arquivo prefs inteiro e provavelmente seria uma boa idéia remover as outras fontes.list menos a atualização encontrará, graças à prioridade mais alta, que existem nenhum pacote para atualizar.

Fixar apt não é tão difícil, você só precisa cavar um pouco e experimentar. Todos os verbos para n=etc são encontrados examinando apt-cache policy.

É por isso que administradores experientes reclamam e elogiam o apt vs yum. Você pode atualizar de forma concisa os serviços e mantê-los atualizados de maneira limpa, determinística e sustentável.

Não é mais necessário compilar pacotes.

Eu sugiro fortemente que você leia a página de manual inteira e se familiarize com o conceito e leia outros guias sobre fixação adequada antes de continuar com esta proposta. Boa sorte e divirta-se!

https://help.ubuntu.com/community/PinningHowto

ppetraki
fonte
Esta é uma ótima resposta, mas não para mim. Eu já sei fixar, mas alguns pacotes não são da última versão precisa e alguns têm bugs (opensc). então eu realmente quero ter a fonte mais recente.
Janning
Então você está realmente no modo de desenvolvimento, consulte o guia UDD. Veja developer.ubuntu.com/packaging/html/getting-set-up.html . Depois de criar os pacotes, você poderá enviar os patches e eventualmente acabar com os criados localmente. Usar um PPA meio que ajuda, mas você realmente precisa entender os princípios básicos da embalagem primeiro ou ficará apenas 10 minutos esperando para descobrir que cometeu um erro de compilação, exclua a deb do PPA e enxague novamente. Você ainda pode usar a resposta cooperativa anterior com um novo PPA para garantir que esses pacotes tenham prioridade sobre a linha de base até encontrarem o caminho para -updates.
22612 ppetraki
O guia de pacotes do Ubuntu: developer.ubuntu.com/packaging/html/index.html
ppetraki
Com esse método, como você prefere as versões amd64 e i386 do mesmo pacote?
qed