AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 763597
Accepted
StoneThrow
StoneThrow
Asked: 2023-12-12 05:12:41 +0800 CST2023-12-12 05:12:41 +0800 CST 2023-12-12 05:12:41 +0800 CST

Como instalar versões de pacotes não disponíveis no apt-get?

  • 772

Gostaria de instalar o libuv em uma instância WSL do Ubuntu e preciso especificamente da versão 1.45.0 ou posterior.

Meu entendimento (a partir deste artigo tutorial ) é que o comando para descobrir quais versões de um pacote estão disponíveis para instalação é apt list | grep:

$ apt list | grep libuv

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libuv1-dev/jammy,now 1.43.0-1 amd64 [installed]
libuv1/jammy,now 1.43.0-1 amd64 [installed,automatic]
libuvc-dev/jammy 0.0.6-1.1 amd64
libuvc-doc/jammy 0.0.6-1.1 all
libuvc0/jammy 0.0.6-1.1 amd64

... o que me leva a pensar que apenas 1.43.0-1 está disponível para instalação por apt-gete que já está instalado.

Mas o site GitHub da libuv indica que existem versões mais recentes.

Como posso obter o libuv v1.45.0 (ou posterior) na minha instância do Ubuntu com apt-get?

Embora minha necessidade imediata seja específica do libuv, na verdade quero aprender sobre este aspecto do ecossistema Unix/Linux em geral: qual é a relação entre drivers/pacotes/etc. que parecem ser "lançados" (por exemplo, de acordo com suas páginas do GitHub) versus o que está "disponível" para gerenciadores de pacotes, como apt-get? O que os usuários devem fazer se quiserem uma versão mais recente de um pacote que não está disponível no gerenciador de pacotes? Eles deveriam baixar o código-fonte e compilar localmente?


Atualização : Por que preciso do 1.45.0, ou seja, por que preciso de uma versão mais avançada do que a disponível no meu gerenciador de pacotes?

Minha máquina Linux é um ambiente de desenvolvimento, onde preciso compilar para hospedar (ou seja, podemos desconsiderar a compilação cruzada para o contexto desta questão). O aplicativo que preciso compilar (não escrito por mim) depende de uv_timespec64_t, que aparentemente foi introduzido na libuv v1.45.0 por este git merge/diff ).

Portanto, essa é a premissa desta questão: preciso compilar (para o host) um aplicativo que depende de um recurso de uma versão mais recente do libuv do que o gerenciador de pacotes da minha distribuição Linux oferece.


Atualização: Esta questão tem uma pergunta de acompanhamento relacionada aqui: Por que diferentes distros Linux têm diferentes formatos de pacotes (e gerenciadores de pacotes)?

apt
  • 2 2 respostas
  • 87 Views

2 respostas

  • Voted
  1. Best Answer
    eyoung100
    2023-12-12T07:50:40+08:002023-12-12T07:50:40+08:00

    Troncos e árvores

    Embora @TechLoom tenha respondido sua pergunta sobre libuv, permita-me responder a sua pergunta sobre o ecossistema Linux. Vamos começar comesta linha do tempo pictórica

    Abra isso em uma nova guia do navegador e observe que existem 5 troncos principais:

    1. Slackware
    2. Debian
    3. Red Hat, que se tornou corporativa, e a variante gratuita é conhecida como Fedora
    4. Enoch, que teve uma vida muito curta, e se tornou Gentoo
    5. Arco

    Cada uma dessas ramificações e, portanto, todas as ramificações filhas são definidas principalmente pelo sistema de gerenciamento de pacotes em uso.

    • The base Slackware uses zip/unzip/tar. The package is unzipped and compiled manually
    • Debian, of which Ubuntu is a child, uses APT - the Advanced Packaging Tool IIRC
    • Red Hat/Fedora uses RPM - RPM Package Manager
    • Enoch and its children compile everything from scratch using scripting. Imagine Slackware, but automated and configurable
    • Arch is a hybrid, that has held up really well over the years. Users can have a completely binary packaged system, i.e. packaged like Debian, or a completely compiled system like Enoch, or a mixture of both.

    Now, as for how the ecosystem is connected. Each package manager is configured to connect only to its specified package tree, also called a repository. Debian-based systems connect to APT based trees, where you can download and install .deb files. Each of these package managers allows users to install custom trees. Ubuntu-based systems call them PPAs, or Personal Package Archives.

    Release Cycles

    Each distribution, regardless of the package manger has a release cycle. Release cycles can be thought of as "locked repositories" or using the tree analogy: "healthy trees that don't grow anymore." The repositories only contain packages that belong to that certain release. In general, packages installed by the release are never altered, and only updated in rare cases i.e., when a critical bugfix is released (which is why you cannot find libuv-1.45 in the jammy release), but if you look in mantic and noble, the next few codenames for Future Releases, you can see the package has been bumped (see Version Bumps below). Software like browsers and mail clients are generally released to the contrib(short for contributed) repository, which doesn't interfere with the main repository. In Debian's terminology, I believe they call their contributed repository universe, which fits rather well (every piece of user software under the sun can be put there). Each added package is compiled against the libraries and tools in the main repository, packaged and uploaded to the universe repository. This imitates the "locked repository" concept for software added by users or companies.

    In Ubuntu's case the release cycle generally occurs twice a year (once in April, and once in October, barring a minor version update [the 3rd version number]). You can see this by looking at the Ubuntu Release List. The accepted practice is to only use packages available in your release until that package is updated by the maintainer.

    Note that some distributions use a rolling release model, specifically those that are source based. I can issue an update command on my source compiled Gentoo box, rebuild packages, and an hour later perform the same update and possibly update the same packages again.

    Even our friends, or enemies depending on your preference, over at Microsoft have adopted a Release Model starting with Windows 10. The current release of Windows 11 is versioned as 23H2, or the 2nd half of 2023. The first major version of Windows 10 I remember was 1903, referring to March 2019. While Microsoft's "tree" isn't publicly available it is used to integrate updates based on bug fixes and user requests into future versions of Windows.

    Why Version Locking Is Important

    To understand why the locked concept is so important, imagine you owned a BMW anything. BMW's are mostly all hand built and hand tuned. Let's say that we decide we want to add Feature X from the 2025 model to our model we bought in 2023 without talking to BMW first.

    • We buy the part needed to enable Feature X from the web
    • We go to install that part in the Dashboard and hook into the electrical system, and realize that the part for Feature X, requires a special connector.
    • We attempt to connect Feature X's part without the connector and end up damaging our 6-figure car
    • We contact BMW, and tell them I tried to connect feature X, but did more damage than upgrading. BMW sends us a connector and tells us to have the authorized mechanic put everything together

    I bolded that last bullet to tie all this together. In the above "upgrade" BMW is maintainer of the "locked repository." BMW owns or can access all the parts for most all of it's cars when asked. The special connector doesn't exist outside the tree. In the same way you can only add software or upgrades to your Ubuntu version, a.k.a. the cars in this story, if the software exists in the repository. Mixing repositories from different versions causes complete breakage. If Feature X needs to be added or upgraded in a previous version, the software is backported, and get's added to that particular version's main repository (the mechanic), and the version continues operating as intended (the car is repaired).

    Version Bumps

    Os aumentos de versão, ou seja, passar de 1.43 para 1.45 geralmente são feitos da seguinte forma:

    1. O mantenedor percebe a nova versão ou um usuário envia uma solicitação de atualização de versão ao mantenedor
    2. A versão solicitada é enviada para a versão de teste para testar a estabilidade. No Ubuntu, isso é conhecido como Versão Futura
    3. O pacote é testado e revogado ou aprovado e lançado quando a Versão Futura se torna a Versão Atual

    Lançamentos LTS

    Para usuários que precisam de estabilidade, algumas distribuições usam o conceito de Long Term Service Release. Eles geralmente são preferidos em áreas com aplicativos de missão crítica, como servidor web, firewall ou controlador de domínio.

    • 3
  2. TechLoom
    2023-12-12T05:35:03+08:002023-12-12T05:35:03+08:00

    Você pode baixar o código-fonte na página do github.

    https://github.com/libuv/libuv/releases

    Em seguida, basta extrair o arquivo fonte, compilar o programa e instalá-lo. Todas as etapas estão na página do github.

    https://github.com/libuv/libuv#build-instructions

    $ sh autogen.sh
    $ ./configure
    $ make
    $ make check
    $ make install
    

    Outra opção seria verificar se alguém possui um repositório para o projeto. Então você poderia usar "add-apt-repository" e depois usar o apt como quiser.

    • 2

relate perguntas

  • O que procurar ao misturar software em diferentes versões de uma distribuição?

  • Entendendo a saída da lista apt

  • Tentar instalar o pacote debian npm faz com que o apt-get remova o libssl-dev

  • Como baixar o pacote não instalá-lo com o comando apt-get?

  • Qual é o benefício de /etc/apt/sources.list.d sobre /etc/apt/sources.list

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve