[aur] new AUR dependencies checking algorithm

This commit is contained in:
Vinícius Moreira
2020-02-11 14:05:16 -03:00
parent 633b60f5f4
commit 0e4ebbe277
18 changed files with 149 additions and 54 deletions

View File

@@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- now every package manager must provide the best upgrade order for all the selected packages ( can be disabled through the settings file **~/.config/bauh/config.yml** or the UI )
- AUR
- allowing the user to bypass checksum errors when installing / upgrading / downgrading packages
- improved the way missing dependencies are verified when installing a new package ( the old way was not identifying some missing dependencies of **anbox-git**). It is possible to use the old algorithm ( only pacman-based ) by setting **pacman_dep_check** to **true** in **~/.config/bauh/arch.yml**
- UI:
- **Settings** available as a tray action as well
- minor improvements

View File

@@ -79,11 +79,11 @@ class AURClient:
self.logger.info('{p} is based on {b}. Retrieving {b} .SRCINFO'.format(p=info_name, b=info_base))
return self.get_src_info(info_base)
def extract_required_dependencies(self, pkginfo: dict) -> Set[str]:
def extract_required_dependencies(self, srcinfo: dict) -> Set[str]:
deps = set()
for attr in ('makedepends', 'depends', 'checkdepends'):
if pkginfo.get(attr):
deps.update([pacman.RE_DEP_OPERATORS.split(dep)[0] for dep in pkginfo[attr]])
if srcinfo.get(attr):
deps.update([pacman.RE_DEP_OPERATORS.split(dep)[0] for dep in srcinfo[attr]])
return deps

View File

@@ -3,5 +3,5 @@ from bauh.gems.arch import CONFIG_FILE
def read_config(update_file: bool = False) -> dict:
template = {'optimize': True, 'transitive_checking': True, "sync_databases": True}
template = {'optimize': True, 'transitive_checking': True, "sync_databases": True, "pacman_dep_check": False}
return read(CONFIG_FILE, template, update_file=update_file)

View File

@@ -533,6 +533,26 @@ class ArchManager(SoftwareManager):
return sorted_deps
def _check_missing_deps(self, pkgname: str, mirror: str, srcinfo: dict, watcher: ProcessWatcher) -> Dict[str, str]:
if mirror == 'aur':
missing = {}
missing_subdeps = self.deps_analyser.get_missing_subdeps(name=pkgname, mirror=mirror, srcinfo=srcinfo)
if missing_subdeps:
for dep in missing_subdeps:
if not dep[1]:
message.show_dep_not_found(dep[0], self.i18n, watcher)
return
for dep in missing_subdeps:
missing[dep[0]] = dep[1]
return missing
else:
# TODO
return []
def _map_unknown_missing_deps(self, deps: List[str], watcher: ProcessWatcher, check_subdeps: bool = True) -> List[Tuple[str, str]]:
depnames = {RE_SPLIT_VERSION.split(dep)[0] for dep in deps}
dep_repos = self._map_repos(depnames)
@@ -545,31 +565,65 @@ class ArchManager(SoftwareManager):
return self._map_known_missing_deps(dep_repos, watcher, check_subdeps)
def _ask_and_install_missing_deps(self, pkgname: str, root_password: str, missing_deps: List[Tuple[str, str]], handler: ProcessHandler) -> bool:
handler.watcher.change_substatus(self.i18n['arch.missing_deps_found'].format(bold(pkgname)))
if not confirmation.request_install_missing_deps(pkgname, missing_deps, handler.watcher, self.i18n):
handler.watcher.print(self.i18n['action.cancelled'])
return False
dep_not_installed = self._install_deps(missing_deps, root_password, handler, change_progress=False)
if dep_not_installed:
message.show_dep_not_installed(handler.watcher, pkgname, dep_not_installed, self.i18n)
return False
return True
def _handle_deps_and_keys(self, pkgname: str, root_password: str, handler: ProcessHandler, pkgdir: str, check_subdeps: bool = True) -> bool:
handler.watcher.change_substatus(self.i18n['arch.checking.deps'].format(bold(pkgname)))
check_res = makepkg.check(pkgdir, optimize=self.local_config['optimize'], handler=handler)
if not self.local_config['pacman_dep_check']:
with open('{}/.SRCINFO'.format(pkgdir)) as f:
srcinfo = aur.map_srcinfo(f.read())
missing_deps = self._check_missing_deps(pkgname=pkgname, mirror='aur', srcinfo=srcinfo, watcher=handler.watcher)
if missing_deps is None:
return False # it means one of the dependencies could not be found
elif missing_deps and check_subdeps:
missing_deps = self._map_known_missing_deps(known_deps=missing_deps, watcher=handler.watcher)
if missing_deps is None:
return False # it means one of the dependencies could not be found
if missing_deps:
if not self._ask_and_install_missing_deps(pkgname=pkgname,
root_password=root_password,
missing_deps=missing_deps,
handler=handler):
return False
# it is necessary to re-check because missing PGP keys are only notified when there are no missing deps
return self._handle_deps_and_keys(pkgname, root_password, handler, pkgdir, check_subdeps=False)
check_res = makepkg.check(pkgdir, optimize=self.local_config['optimize'], missing_deps=self.local_config['pacman_dep_check'], handler=handler)
if check_res:
if check_res.get('missing_deps'):
handler.watcher.change_substatus(self.i18n['arch.checking.missing_deps'].format(bold(pkgname)))
sorted_deps = self._map_unknown_missing_deps(check_res['missing_deps'], handler.watcher, check_subdeps=check_subdeps)
missing_deps = self._map_unknown_missing_deps(check_res['missing_deps'], handler.watcher, check_subdeps=check_subdeps)
if sorted_deps is None:
if missing_deps is None:
return False
handler.watcher.change_substatus(self.i18n['arch.missing_deps_found'].format(bold(pkgname)))
if not confirmation.request_install_missing_deps(pkgname, sorted_deps, handler.watcher, self.i18n):
handler.watcher.print(self.i18n['action.cancelled'])
if not self._ask_and_install_missing_deps(pkgname=pkgname,
root_password=root_password,
missing_deps=missing_deps,
handler=handler):
return False
dep_not_installed = self._install_deps(sorted_deps, root_password, handler, change_progress=False)
if dep_not_installed:
message.show_dep_not_installed(handler.watcher, pkgname, dep_not_installed, self.i18n)
return False
# it is necessary to re-check because missing PGP keys are only notified when there are none missing
# it is necessary to re-check because missing PGP keys are only notified when there are no missing deps
return self._handle_deps_and_keys(pkgname, root_password, handler, pkgdir, check_subdeps=False)
if check_res.get('gpg_key'):
@@ -968,17 +1022,22 @@ class ArchManager(SoftwareManager):
self._gen_bool_selector(id_='opts',
label_key='arch.config.optimize',
tooltip_key='arch.config.optimize.tip',
value=config['optimize'],
value=bool(config['optimize']),
max_width=max_width),
self._gen_bool_selector(id_='pacman_check',
label_key='arch.config.pacman_check',
tooltip_key='arch.config.pacman_check.tip',
value=not bool(config['pacman_dep_check']),
max_width=max_width),
self._gen_bool_selector(id_='dep_check',
label_key='arch.config.trans_dep_check',
tooltip_key='arch.config.trans_dep_check.tip',
value=config['transitive_checking'],
value=bool(config['transitive_checking']),
max_width=max_width),
self._gen_bool_selector(id_='sync_dbs',
label_key='arch.config.sync_dbs',
tooltip_key='arch.config.sync_dbs.tip',
value=config['sync_databases'],
value=bool(config['sync_databases']),
max_width=max_width)
]
@@ -991,6 +1050,7 @@ class ArchManager(SoftwareManager):
config['optimize'] = form_install.get_component('opts').get_selected()
config['transitive_checking'] = form_install.get_component('dep_check').get_selected()
config['sync_databases'] = form_install.get_component('sync_dbs').get_selected()
config['pacman_dep_check'] = not form_install.get_component('pacman_check').get_selected()
try:
save_config(config, CONFIG_FILE)

View File

@@ -106,3 +106,25 @@ class DependenciesAnalyser:
if not subdep[0]:
return missing
return missing
def get_missing_subdeps(self, name: str, mirror: str, srcinfo: dict = None) -> List[Tuple[str, str]]:
missing = []
already_added = {name}
in_analyses = {name}
if mirror == 'aur':
subdeps = self.aur_client.get_required_dependencies(name) if not srcinfo else self.aur_client.extract_required_dependencies(srcinfo)
else:
subdeps = pacman.read_dependencies(name)
if subdeps:
missing_subdeps = self.get_missing_packages(subdeps, in_analysis=in_analyses)
if missing_subdeps:
for subdep in missing_subdeps: # checking if there is any unknown:
if subdep[0] not in already_added:
missing.append(subdep)
if not subdep[0]:
return missing
return missing

View File

@@ -13,7 +13,7 @@ def gen_srcinfo(build_dir: str) -> str:
return run_cmd('makepkg --printsrcinfo', cwd=build_dir)
def check(pkgdir: str, optimize: bool, handler: ProcessHandler) -> dict:
def check(pkgdir: str, optimize: bool, missing_deps: bool, handler: ProcessHandler) -> dict:
res = {}
cmd = ['makepkg', '-ALcf', '--check', '--noarchive', '--nobuild', '--noprepare']
@@ -27,7 +27,7 @@ def check(pkgdir: str, optimize: bool, handler: ProcessHandler) -> dict:
success, output = handler.handle_simple(SimpleProcess(cmd, cwd=pkgdir))
if 'Missing dependencies' in output:
if missing_deps and 'Missing dependencies' in output:
res['missing_deps'] = RE_DEPS_PATTERN.findall(output)
gpg_keys = RE_UNKNOWN_GPG_KEY.findall(output)

View File

@@ -104,10 +104,12 @@ arch.aur.install.validity_check.body=Alguns dels fitxers font necessaris per a l
arch.aur.install.validity_check.proceed=Voleu continuar de totes maneres? ( no es recomana )
arch.makepkg.optimizing=Optimitzant la recopilació
arch.config.optimize=optimize
arch.config.trans_dep_check=check dependencies
arch.config.optimize.tip=Optimized settings will be used in order to make the packages installation faster, otherwise the system settings will be used
arch.config.trans_dep_check.tip=If all the package dependencies should be verified before the installation starts. Otherwise they will be discovered during the installation
arch.config.trans_dep_check=Previous dependencies checking
arch.config.trans_dep_check.tip=If all package dependencies should be verified before installation begins, otherwise they will be discovered during installation.
arch.sync_databases.substatus=Synchronizing package databases
arch.sync_databases.substatus.error=It was not possible to synchronize the package database
arch.config.sync_dbs=Synchronize packages databases
arch.config.sync_dbs.tip=Synchronizes the package databases once a day ( or after a device reboot ) before the first package installation, upgrade or downgrade. This option help to prevent errors during these operations.
arch.config.sync_dbs.tip=Synchronizes the package databases once a day ( or after a device reboot ) before the first package installation, upgrade or downgrade. This option help to prevent errors during these operations.
arch.config.pacman_check=Robust dependency checking
arch.config.pacman_check.tip=Whether a more robust dependencies checking should be performed before installing a package. If disabled, only the one provided by pacman will be used.

View File

@@ -104,10 +104,12 @@ aur.info.provides=stellt bereit
aur.info.conflicts with=Konflikt mit
arch.makepkg.optimizing=Optimiert die Zusammenstellung
arch.config.optimize=optimize
arch.config.trans_dep_check=check dependencies
arch.config.optimize.tip=Optimized settings will be used in order to make the packages installation faster, otherwise the system settings will be used
arch.config.trans_dep_check.tip=If all the package dependencies should be verified before the installation starts. Otherwise they will be discovered during the installation
arch.config.trans_dep_check=Previous dependencies checking
arch.config.trans_dep_check.tip=If all package dependencies should be verified before installation begins, otherwise they will be discovered during installation.
arch.sync_databases.substatus=Synchronizing package databases
arch.sync_databases.substatus.error=It was not possible to synchronize the package database
arch.config.sync_dbs=Synchronize packages databases
arch.config.sync_dbs.tip=Synchronizes the package databases once a day ( or after a device reboot ) before the first package installation, upgrade or downgrade. This option help to prevent errors during these operations.
arch.config.sync_dbs.tip=Synchronizes the package databases once a day ( or after a device reboot ) before the first package installation, upgrade or downgrade. This option help to prevent errors during these operations.
arch.config.pacman_check=Robust dependency checking
arch.config.pacman_check.tip=Whether a more robust dependencies checking should be performed before installing a package. If disabled, only the one provided by pacman will be used.

View File

@@ -104,10 +104,12 @@ aur.info.provides=provides
aur.info.conflicts with=conflicts with
arch.makepkg.optimizing=Optimizing the compilation
arch.config.optimize=optimize
arch.config.trans_dep_check=check dependencies
arch.config.optimize.tip=Optimized settings will be used in order to make the packages installation faster, otherwise the system settings will be used
arch.config.trans_dep_check.tip=If all the package dependencies should be verified before the installation starts. Otherwise they will be discovered during the installation
arch.config.trans_dep_check=Previous dependencies checking
arch.config.trans_dep_check.tip=If all package dependencies should be verified before installation begins, otherwise they will be discovered during installation.
arch.sync_databases.substatus=Synchronizing package databases
arch.sync_databases.substatus.error=It was not possible to synchronize the package database
arch.config.sync_dbs=Synchronize packages databases
arch.config.sync_dbs.tip=Synchronizes the package databases once a day ( or after a device reboot ) before the first package installation, upgrade or downgrade. This option help to prevent errors during these operations.
arch.config.sync_dbs.tip=Synchronizes the package databases once a day ( or after a device reboot ) before the first package installation, upgrade or downgrade. This option help to prevent errors during these operations.
arch.config.pacman_check=Robust dependency checking
arch.config.pacman_check.tip=Whether a more robust dependencies checking should be performed before installing a package. If disabled, only the one provided by pacman will be used.

View File

@@ -104,10 +104,12 @@ arch.aur.install.validity_check.body=Algunos de los archivos fuente necesarios p
arch.aur.install.validity_check.proceed=¿Desea continuar de todos modos? ( no recomendado )
arch.makepkg.optimizing=Optimizando la compilación
arch.config.optimize=optimizar
arch.config.trans_dep_check=verificar dependencias
arch.config.optimize.tip=Se usará una configuración optimizada para acelerar la instalación de los paquetes, de lo contrario se usará la configuración del sistema
arch.config.trans_dep_check.tip=Si todas las dependencias del paquete deben ser verificadas antes de que comience la instalación. De lo contrario, se descubrirán durante la instalación.
arch.config.trans_dep_check=Verificación de dependencias anterior
arch.config.trans_dep_check.tip=Si todas las dependencias del paquete deben ser verificadas antes de que comience la instalación, de lo contrario, se descubrirán durante la instalación.
arch.sync_databases.substatus=Sincronizando bases de paquetes
arch.sync_databases.substatus.error=No fue posible sincronizar la base de paquetes
arch.config.sync_dbs=Sincronizar las bases de paquetes
arch.config.sync_dbs.tip=Sincroniza las bases de paquetes una vez al día ( o cada reinicialización del dispositivo ) antes de la primera instalación, actualización o reversión de un paquete. Esta opción ayuda a prevenir errores durante estas operaciones.
arch.config.sync_dbs.tip=Sincroniza las bases de paquetes una vez al día ( o cada reinicialización del dispositivo ) antes de la primera instalación, actualización o reversión de un paquete. Esta opción ayuda a prevenir errores durante estas operaciones.
arch.config.pacman_check=Verificación de dependencia robusta
arch.config.pacman_check.tip=Si se debe realizar una verificación de dependencias más sólida antes de instalar un paquete. Si desactivada, solo se utilizará la proporcionada por pacman.

View File

@@ -72,10 +72,12 @@ arch.aur.install.validity_check.body=Alcuni dei file di origine necessari per l'
arch.aur.install.validity_check.proceed=Vuoi continuare comunque? ( non consigliato )
arch.makepkg.optimizing=Ottimizzando la compilazione
arch.config.optimize=optimize
arch.config.trans_dep_check=check dependencies
arch.config.optimize.tip=Optimized settings will be used in order to make the packages installation faster, otherwise the system settings will be used
arch.config.trans_dep_check.tip=If all the package dependencies should be verified before the installation starts. Otherwise they will be discovered during the installation
arch.config.trans_dep_check=Previous dependencies checking
arch.config.trans_dep_check.tip=If all package dependencies should be verified before installation begins, otherwise they will be discovered during installation.
arch.sync_databases.substatus=Synchronizing package databases
arch.sync_databases.substatus.error=It was not possible to synchronize the package database
arch.config.sync_dbs=Synchronize packages databases
arch.config.sync_dbs.tip=Synchronizes the package databases once a day ( or after a device reboot ) before the first package installation, upgrade or downgrade. This option help to prevent errors during these operations.
arch.config.sync_dbs.tip=Synchronizes the package databases once a day ( or after a device reboot ) before the first package installation, upgrade or downgrade. This option help to prevent errors during these operations.
arch.config.pacman_check=Robust dependency checking
arch.config.pacman_check.tip=Whether a more robust dependencies checking should be performed before installing a package. If disabled, only the one provided by pacman will be used.

View File

@@ -103,11 +103,13 @@ arch.aur.install.validity_check.title=Problemas de integridade {}
arch.aur.install.validity_check.body=Alguns dos arquivos-fonte necessários para a instalação de {} não estão íntegros.
arch.aur.install.validity_check.proceed=Você deseja continuar mesmo assim ? ( não recomendado )
arch.makepkg.optimizing=Otimizando a compilação
arch.config.optimize=otimizar
arch.config.trans_dep_check=verificar dependências
arch.config.optimize=Otimizar
arch.config.optimize.tip=Utilizará configurações otimizadas para que a instalação de pacotes seja mais rápida, caso contrário utilizará a do sistema
arch.config.trans_dep_check.tip=Se todas as dependências do pacote devem ser verificadas antes da instalação começar, caso contrário elas serão descobertas durante a instalação
arch.config.trans_dep_check=Verificação prévia de dependências
arch.config.trans_dep_check.tip=Se todas as dependências do pacote devem ser verificadas antes da instalação começar, caso contrário elas serão descobertas durante a instalação.
arch.sync_databases.substatus=Sincronizando bases de pacotes
arch.sync_databases.substatus.error=Não foi possível sincronizar as bases de pacotes
arch.config.sync_dbs=Sincronizar bases de pacotes
arch.config.sync_dbs.tip=Sincroniza as bases de pacotes uma vez ao dia ( ou a cada reinicialização do dispositivo ) antes da primeira instalação, atualização ou reversão de um pacote. Essa opção ajuda a evitar erros durante essa operações.
arch.config.sync_dbs.tip=Sincroniza as bases de pacotes uma vez ao dia ( ou a cada reinicialização do dispositivo ) antes da primeira instalação, atualização ou reversão de um pacote. Essa opção ajuda a evitar erros durante essa operações.
arch.config.pacman_check=Verificação de dependências robusta
arch.config.pacman_check.tip=Se uma verificação de dependências mais robusta deve ser realizada antes da instalação de um pacote. Caso desabilitada, somente a provida pelo pacman será utilizada.

View File

@@ -256,7 +256,7 @@ core.config.ui.auto_scale.tip=It activates the auto screen scale factor ( {} ).
core.config.updates.sort_pkgs=Sort updates
core.config.updates.sort_pkgs.tip=Defines the best update order for the selected applications / packages to avoid issues
core.config.updates.dep_check=Mostra els requisits dactualització
core.config.updates.dep_check.tip=Mostra tots els paquets / aplicacions addicionals que cal instal·lar abans de començar a actualitzar els seleccionats
core.config.updates.dep_check.tip=Mostra tots les dependències addicionals que cal instal·lar abans de començar a actualitzar els seleccionats
settings.changed.success.warning=Settings successfully changed. Some of them will only take effect after a restart.
settings.changed.success.reboot=Restart now ?
settings.error=It was not possible to properly change all the settings
@@ -272,7 +272,7 @@ download=download
clean=netejar
action.update.status.sorting=Determinant el millor ordre dactualització
action.update.requirements.title=Requisits dactualització
action.update.requirements.body=Abans dactualitzar cal instal·lar les següents {} aplicacions / paquets
action.update.requirements.body=Abans dactualitzar cal instal·lar les següents {} dependències
action.update.install_req.fail.title=Ha fallat la instal·lació
action.update.install_req.fail.body=No s'ha pogut instal·lar {}
action.update.requirements.status=Verificant els requisits

View File

@@ -211,7 +211,7 @@ core.config.ui.auto_scale.tip=It activates the auto screen scale factor ( {} ).
core.config.updates.sort_pkgs=Sort updates
core.config.updates.sort_pkgs.tip=Defines the best update order for the selected applications / packages to avoid issues
core.config.updates.dep_check=Show update requirements
core.config.updates.dep_check.tip=Displays all additional applications / packages that need to be installed before starting to update selected ones
core.config.updates.dep_check.tip=Displays all dependencies that need to be installed before starting to update selected ones
settings.changed.success.warning=Settings successfully changed. Some of them will only take effect after a restart.
settings.changed.success.reboot=Restart now ?
settings.error=It was not possible to properly change all the settings
@@ -227,7 +227,7 @@ download=download
clean=reinigen
action.update.status.sorting=Determining the best update order
action.update.requirements.title=Upgrade requirements
action.update.requirements.body=The following {} applications / packages must be installed before upgrading
action.update.requirements.body=The following {} dependencies must be installed before upgrading
action.update.install_req.fail.title=Installation failed
action.update.install_req.fail.body=It was not possible to install {}
action.update.requirements.status=Checking requirements

View File

@@ -218,7 +218,7 @@ core.config.ui.auto_scale.tip=It activates the auto screen scale factor ( {} ).
core.config.updates.sort_pkgs=Sort updates
core.config.updates.sort_pkgs.tip=Defines the best update order for the selected applications / packages to avoid issues
core.config.updates.dep_check=Show update requirements
core.config.updates.dep_check.tip=Displays all additional applications / packages that need to be installed before starting to update selected ones
core.config.updates.dep_check.tip=Displays all dependencies that need to be installed before starting to update selected ones
settings.changed.success.warning=Settings successfully changed. Some of them will only take effect after a restart.
settings.changed.success.reboot=Restart now ?
settings.error=It was not possible to properly change all the settings
@@ -234,7 +234,7 @@ download=download
clean=clean
action.update.status.sorting=Determining the best update order
action.update.requirements.title=Upgrade requirements
action.update.requirements.body=The following {} applications / packages must be installed before upgrading
action.update.requirements.body=The following {} dependencies must be installed before upgrading
action.update.install_req.fail.title=Installation failed
action.update.install_req.fail.body=It was not possible to install {}
action.update.requirements.status=Checking requirements

View File

@@ -259,7 +259,7 @@ core.config.ui.auto_scale.tip=Activa el factor de escala de pantalla automática
core.config.updates.sort_pkgs=Ordenar actualizaciones
core.config.updates.sort_pkgs.tip=Define el mejor orden de actualización para las aplicaciones / paquetes seleccionados para evitar problemas
core.config.updates.dep_check=Mostrar requisitos de actualización
core.config.updates.dep_check.tip=Muestra todos los aplicaciones / paquetes adicionales que deben instalarse antes de comenzar a actualizar los seleccionados
core.config.updates.dep_check.tip=Muestra todos las dependencias que deben instalarse antes de comenzar a actualizar los seleccionados
settings.changed.success.warning=Las configuraciones se cambiaron con éxito. Algunas solo tendrán efecto después del reinicio.
settings.changed.success.reboot=¿Reiniciar ahora?
settings.error=No fue posible cambiar correctamente todas las configuraciones
@@ -275,7 +275,7 @@ download=descarga
clean=limpiar
action.update.status.sorting=Determinando el mejor orden de actualización
action.update.requirements.title=Requisitos de actualización
action.update.requirements.body=Las siguientes {} aplicaciones / paquetes deben estar instalados antes de actualizar
action.update.requirements.body=Las siguientes {} dependencias deben ser instaladas antes de actualizar
action.update.install_req.fail.title=Falló la instalación
action.update.install_req.fail.body=No fue posible instalar {}
action.update.requirements.status=Verificando los requisitos

View File

@@ -211,7 +211,7 @@ core.config.ui.auto_scale.tip=It activates the auto screen scale factor ( {} ).
core.config.updates.sort_pkgs=Sort updates
core.config.updates.sort_pkgs.tip=Defines the best update order for the selected applications / packages to avoid issues
core.config.updates.dep_check=Mostra i requisiti di aggiornamento
core.config.updates.dep_check.tip=Visualizza tutti i applicazioni / pacchetti aggiuntivi che devono essere installati prima di iniziare ad aggiornare quelli selezionati
core.config.updates.dep_check.tip=Visualizza tutti i dipendenze aggiuntivi che devono essere installati prima di iniziare ad aggiornare quelli selezionati
settings.changed.success.warning=Settings successfully changed. Some of them will only take effect after a restart.
settings.changed.success.reboot=Restart now ?
settings.error=It was not possible to properly change all the settings
@@ -227,7 +227,7 @@ download=download
clean=pulire
action.update.status.sorting=Sto determinando il miglior ordine di aggiornamento
action.update.requirements.title=Requisiti di aggiornamento
action.update.requirements.body=Le seguenti {} applicazioni / pacchetti devono essere installati prima dell'aggiornamento
action.update.requirements.body=Le seguenti {} dipendenze devono essere installati prima dell'aggiornamento
action.update.install_req.fail.title=Installazione non riuscita
action.update.install_req.fail.body=Non è stato possibile installare {}
action.update.requirements.status=Verificando i requisiti

View File

@@ -262,7 +262,7 @@ core.config.ui.auto_scale.tip=Ativa o fator de escala automático ( {} ). Corrig
core.config.updates.sort_pkgs=Organizar atualizações
core.config.updates.sort_pkgs.tip=Define a melhor ordem de atualização para os aplicativos / pacotes selecionados para evitar problemas
core.config.updates.dep_check=Mostrar requisitos de atualização
core.config.updates.dep_check.tip=Exibe todos os aplicativos / pacotes adicionais que precisam ser instalados antes de iniciar a atualização dos selecionados
core.config.updates.dep_check.tip=Exibe todos as dependências que precisam ser instalados antes de iniciar a atualização dos selecionados
settings.changed.success.warning=Configurações alteradas com sucesso ! Algumas delas só surtirão após a reinicialização.
settings.changed.success.reboot=Reiniciar agora ?
settings.error=Não foi possível alterar todas as configurações adequadamente
@@ -278,7 +278,7 @@ download=download
clean=limpar
action.update.status.sorting=Determinando a melhor ordem de atualização
action.update.requirements.title=Requisitos de atualização
action.update.requirements.body=Os seguintes {} aplicativos / pacotes precisam ser instalados antes de atualizar
action.update.requirements.body=As seguintes {} dependências precisam ser instalados antes de atualizar
action.update.install_req.fail.title=Instalação falhou
action.update.install_req.fail.body=Não foi possível instalar {}
action.update.requirements.status=Verificando requisitos