Digamos que você esteja executando um servidor e não queira atualizar para o Testing (Squeeze) do Stable (Lenny) para instalar apenas um ou dois pacotes necessários.
Qual é a melhor maneira de instalar apenas determinados pacotes do Testing?
Digamos que você esteja executando um servidor e não queira atualizar para o Testing (Squeeze) do Stable (Lenny) para instalar apenas um ou dois pacotes necessários.
Qual é a melhor maneira de instalar apenas determinados pacotes do Testing?
Respostas:
Muitas pessoas parecem ter medo de misturar estável com teste, mas, francamente, o teste é bastante estável por si só, e com preferências e verificação de soluções adequadas, você pode evitar o "desvio da estabilidade" que coloca seus principais pacotes no caminho instável.
"O teste é bastante estável?" , você pergunta. Sim. Para que um pacote seja migrado de instável para teste, ele precisa ter zero bugs abertos por 10 dias consecutivos. As chances são de que, especialmente para os pacotes mais populares, alguém enviará um relatório de bug para uma versão instável, se algo estiver errado.
Mesmo se você não quiser misturar os ambientes, ainda é bom ter a opção, caso você encontre algo que exija uma versão mais nova do que a que está estável.
Aqui está o que eu recomendo para configurar isso:
Primeiro, crie os seguintes arquivos em /etc/apt/preferences.d
:
stable.pref
:
# 500 <= P < 990: causes a version to be installed unless there is a
# version available belonging to the target release or the installed
# version is more recent
Package: *
Pin: release a=stable
Pin-Priority: 900
testing.pref
:
# 100 <= P < 500: causes a version to be installed unless there is a
# version available belonging to some other distribution or the installed
# version is more recent
Package: *
Pin: release a=testing
Pin-Priority: 400
unstable.pref
:
# 0 < P < 100: causes a version to be installed only if there is no
# installed version of the package
Package: *
Pin: release a=unstable
Pin-Priority: 50
experimental.pref
:
# 0 < P < 100: causes a version to be installed only if there is no
# installed version of the package
Package: *
Pin: release a=experimental
Pin-Priority: 1
(Não tenha medo do material instável / experimental aqui. As prioridades são baixas o suficiente para que nunca seja instalado automaticamente nada disso. Até o ramo de testes se comportará, pois só instalará os pacotes que você deseja em testes.)
Agora, criando um conjunto correspondente para /etc/apt/sources.list.d
:
stable.list
: Copie do seu original /etc/apt/sources.list
. Renomeie o arquivo antigo para algo como sources.list.orig
.
testing.list
: O mesmo que stable.list
, exceto com testing
.
unstable.list
: O mesmo que stable.list
, exceto com unstable
, e remova as listas de segurança.
experimental.list
: O mesmo que unstable.list
, exceto com experimental
.
Você também pode adicionar um oldstable
in sources.lists.d
e preferences.d
(use a prioridade 1), embora esse apelido tende a expirar e desaparecer antes do próximo ciclo estável. Em casos como esse, você pode usar http://archive.debian.org/debian/
e "codificar" a versão do Debian (etch, lenny, etc.).
Para instalar a versão de teste de um pacote, basta usar aptitude install lib-foobar-package/testing
ou simplesmente acessar a GUI do aptitude e selecionar a versão dentro dos detalhes do pacote (pressione enter no pacote que você está vendo).
Se você receber reclamações de conflitos de pacotes, consulte as soluções primeiro. Na maioria dos casos, o primeiro será "não instale esta versão". Aprenda a usar as opções de resolvedor de aceitação / rejeição por pacote. Por exemplo, se você estiver instalando foobar-package / testing, e a primeira solução for "não instale foobar-package / testing", marque essa opção como rejeitada, e as outras soluções nunca voltarão a esse caminho. Em casos como esse, você provavelmente precisará instalar alguns outros pacotes de teste.
Se estiver ficando muito peludo (como se estivesse tentando atualizar a libc ou o kernel ou algum outro sistema central enorme), você poderá rejeitar esses caminhos de atualização ou simplesmente voltar completamente da atualização inicial. Lembre-se de que ele só atualizará as coisas para teste / instável se você permitir.
EDIT: corrigidos alguns pinos prioritários e atualizamos a lista.
apt-get update
depois de criar os arquivos de configuração?
sudo apt-get update
, recebi um erro de atualização. Então reiniciei, o que me deu Xsession error
, reiniciei novamente e agora não tenho GUI. o /dev/sda1/
agora está cheio. Ótimo.
Em /etc/apt/apt.conf.d
adicionar o seguinte arquivo
99defaultrelease
:
APT::Default-Release "stable";
in /etc/apt/sources.list.d
- adicione URLs para fontes instáveis / de teste
stable.list
:
deb http://ftp.de.debian.org/debian/ stable main contrib non-free
deb-src http://ftp.de.debian.org/debian/ stable main contrib non-free
deb http://security.debian.org/ stable/updates main contrib non-free
testing.list
:
deb http://ftp.de.debian.org/debian/ testing main contrib non-free
deb-src http://ftp.de.debian.org/debian/ testing main contrib non-free
deb http://security.debian.org/ testing/updates main contrib non-free
corre
apt-get update
e instale o que você precisa com
apt-get -t testing install something
Seja muito cuidadoso se você instalar coisas com muitas dependências. De preferência, não faça isso na produção.
Você também pode tentar a sua sorte em backports ou repositório similar.
apt_preferences
Defina o nível padrão para o qual o sistema deve 'atualizar com segurança' no arquivo / etc / apt / preferências:
man apt_preferences
Você pode fazer muito com o apt_preferences, mas por uma questão de simplicidade ...
Eu precisava instalar um único pacote (autoMysqlBackup) que estava disponível apenas no Testing. A solução foi adicionar o seguinte ao / etc / apt / preferências:
Explanation: Uninstall or do not install any Debian-originated
Explanation: package versions other than those in the stable distro
Package: *
Pin: release a=stable
Pin-Priority: 900
Package: *
Pin: release o=Debian
Pin-Priority: -10
Com vários repositórios adicionados ao /etc/apt/sources.list, o aptitude agora atualizará apenas para o release especificado, mesmo que os repositórios de repositório posteriores estejam listados (neste caso, 'stable').
deb http://mirror.aarnet.edu.au/debian/ lenny main
deb-src http://mirror.aarnet.edu.au/debian/ lenny main
deb http://mirror.aarnet.edu.au/debian/ squeeze main
deb-src http://mirror.aarnet.edu.au/debian/ squeeze main
Portanto, para instalar esse pacote, tudo o que você precisa fazer é:
$ aptitude install -t testing packageName
Pelo que vale, o conselho geral que sempre vi é "Não misture estável com nada". A maioria dos tutoriais de sistemas mistos é para misturar testes e instáveis.
O raciocínio parece ser que, se você misturar estável com testes, pacotes muito básicos (como libc6) exigirão atualizações (para instalar o software a partir de testes) e, uma vez que esses pacotes básicos passarem para testes, todo o sistema poderá se desviar dessa maneira.
Aqui estão duas alternativas:
A documentação do debian é extensa no assunto e eu recomendo fortemente que se aprofundem, pois revelará verdadeiramente a beleza do sistema debian.
Dê uma olhada em Como manter um sistema misto , ele explicará tudo o que você precisa saber.
Outra maneira, que poderia impedir a instalação de muitas dependências do Testing ou do Sid, é esta: você diz ao apt-get para obter o código-fonte do pacote do Testing ou do Sid e cria um pacote para o seu sistema usando as ferramentas Debian (não é necessário mexer manualmente) com fontes).
Citando aqui:
https://wiki.debian.org/DebianUnstable#How_do_I_backport_a_sid_package_to_testing_or_stable.3F
Como faço para backport um pacote sid para teste ou estável?
Instale a fonte Debian (e as ferramentas de desenvolvimento, especialmente debhelper, devscripts e build-essential), e então construa o pacote.
Passo a passo:
add a deb-src line for sid to your sources.list apt-get update apt-get build-dep PACKAGE_NAME apt-get -b source PACKAGE_NAME
As debs resultantes devem estar no diretório atual e podem ser instaladas com o dpkg -i the.deb.
Venho fazendo isso há um longo período de tempo para ter certeza de que é suficientemente seguro e pode ser conveniente. Com a configuração abaixo, a versão estável será instalada por padrão, no entanto, o Aptitude também permitirá que você escolha a versão com portabilidade ou instável, se assim o desejar:
Há quatro coisas que precisam ser editadas, a liberação de fixação padrão precisa ser definida, as fontes precisam de backports e instáveis adicionados, diminuindo a prioridade de fixação de pacotes de backports / instáveis e as configurações de exibição do aptitude precisam ser modificadas para exibir a fixação.
Apt :: Versão-padrão "stable";
# deb cdrom: [Debian GNU / Linux 6.0.0 _Squeeze_ - Multi-arquitetura oficial amd64 / i386 NETINST # 1 20110205-14: 45] / squeeze main deb http://ftp.us.debian.org/debian/ squeeze main deb-src http://ftp.us.debian.org/debian/ squeeze main deb http://security.debian.org/ squeeze / updates principal deb-src http://security.debian.org/ squeeze / updates principal # squeeze-update, anteriormente conhecido como 'volátil' deb http://ftp.us.debian.org/debian/ squeeze-updates main deb-src http://ftp.us.debian.org/debian/ squeeze-updates main # squeeze backports # http://backports.debian.org/Instructions/ deb http://backports.debian.org/debian-backports squeeze-backports main # instável # http://wiki.debian.org/AptPreferences deb http://ftp.us.debian.org/debian/ unstable main deb-src http://ftp.us.debian.org/debian/ unstable main # ex não livre. java do sol #deb http://ftp.us.debian.org/debian/ aperte não-livre # deb-src http://ftp.us.debian.org/debian/ squeeze não gratuito
etc/apt/preferences
arquivo fixado - se o arquivo não existir, crie-o.# Prioridades de fixação de pacotes # Consulte http://wiki.debian.org/AptPreferences e http://manpages.debian.net/cgi-bin/man.cgi?query=apt_preferences # # Na casca da porca, o PIN mais alto é instalado # # Os pinos padrão são os seguintes, além das nossas configurações: # 990 - para versões que não estão instaladas, mas pertencem à nossa configuração `APT :: Default-Relase" stable "`. # 500 - para versões que não estão instaladas e não pertencem à versão de destino # 100 - para pacotes que já estão instalados, isso também significa outras versões do mesmo pacote # 1 - para pacotes experimentais; pacotes com "NotAutomatic: yes" # # Nossos Pinnings # 400 - backports que podem ser instalados com segurança sem a necessidade de atualizar outros pacotes # 50 - pacotes instáveis, instalação forçada na tela de detalhes, podem resultar em conflitos Pacote: * Pin: release n = squeeze-backports Prioridade de pino: 400 Pacote: * Pin: solte a = instável
Aptitude :: UI :: Formato de Exibição do Pacote "% c% a% M% p% Z% v% V% i";
source.list
isso, deve dizer o nome do código em jessie
vez de squeeze
. A política do Debian testing
está quase estável e os pacotes têm sido quase tão novos quanto no unstable
repositório. Estou ficando sem espaço aqui, portanto, dê uma olhada em: wiki.debian.org/DebianReleases , wiki.debian.org/StableUpdates e wiki.debian.org/StableProposedUpdates ; os dois últimos são fontes de repositório adicionais.
Se sua seleção de pacotes estiver mais envolvida ou a instalação for repetida em várias máquinas, considere configurar um repositório privado que espelha um subconjunto dos repositórios oficiais. Isso requer um pouco de trabalho para configurar o repositório, mas a recompensa é fácil de manter, com um mínimo de configuração em cada cliente e resultados repetíveis ao executar dezenas de instalações. Acho isso útil mesmo quando apenas um ou dois pacotes estão sendo instalados e uso esse método para automatizar e manter instalações na nuvem. Um único servidor em um VPS barato pode lidar com dezenas de repositórios particulares.
Para configurar seu servidor de repositório privado:
# Install aptly.
apt-get install aptly
# Create local mirror (choose a source mirror near you).
aptly mirror create -filter="mirror-contains-no-packages" stretch-roundcube http://httpredir.debian.org/debian stretch main
# Configure filters for local mirror.
aptly mirror edit -filter="Name (% roundcube*)" stretch-roundcube
# Update local mirror.
aptly mirror update stretch-roundcube
# Drop previously published repositories and mirrors, if running these commands in a script.
aptly publish drop stretch
# Drop snapshot, if running these commands in a script.
aptly snapshot drop stretch-roundcube
# Create new snapshot.
aptly snapshot create stretch-roundcube from mirror stretch-roundcube
# Publish snapshot.
aptly publish snapshot -architectures=i386,amd64 -distribution=stretch -component=roundcube -label="Your Name" -origin="Your Name" stretch-roundcube
Em seguida, configure o servidor da Web de sua escolha para servir os arquivos do repositório estático. Possivelmente, proteja o repositório com um certificado de segurança e autenticação básica.
Para manter automaticamente seu repositório privado e obter atualizações do upstream, coloque o acima em um script e execute a partir de um trabalho cron.
Para configurar sua máquina cliente, na sua máquina cliente:
# Configure private repository without authentication.
echo 'deb http://private.repository.example.com/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list
# Configure private repository with authentication.
echo 'deb https://hostname:password@private.repository.example.com/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list
apt-get install apt-transport-https
# Update.
apt-get update
# Install package.
apt-get install roundcube
Para manter sua máquina cliente e obter todas as atualizações de repositório particular, em sua máquina cliente:
# Update.
apt-get update
# Upgrade.
apt-get upgrade
Outra opção é fazer o download do pacote de origem do teste. O APT pode criar automaticamente o pacote de origem após o download. Dessa forma, seus pacotes estáveis não serão afetados pelo teste de atualizações. A única desvantagem é que levará mais tempo do que apenas baixar e instalar o pacote binário.
Para configurar o APT para baixar pacotes de origem do teste, basta adicionar:
deb-src http://<your debian mirror here> testing main
Se você deseja apenas seguir os testes atuais e não os futuros, substitua "testing" pelo nome de código atual (no momento da redação deste documento, é "buster")