Как я фиксирую ошибку транзакции?

Я также заинтересован в этом вопросе, и я попробовал решение предложить @Sim.

Чтобы проверить его, я ставлю

nameserver 8.8.8.8

в /etc/resolvConf/resolv.conf.d/base и

nameserver 8.8.4.4

в /etc/resolvconf/resolv.conf.d/ Голова

, затем я перезапустил сеть

sudo service network-manager restart

, в результате это то, что /etc/resolv.conf выглядит как

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.4.4
nameserver 127.0.1.1

, и NM-Tool утверждает, что DNSSSERVER

DNS:             208.67.222.222
DNS:             208.67.220.220

, которые являются теми, которые предоставляются моим маршрутизатором. С другой стороны, выкапывание адреса говорит, что

;; Query time: 28 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)

Если я прав, я заключаю из всего этого, что

  1. только часть «голова» прочитана Resolvonf: часть «базы» как-то контролируется dnsmasq
  2. DNSSERVER на самом деле вынужден 8.8.4.4 Независимо от сервера, предоставленного DHCP, но вы потеряете кэширование, предоставляемые DNSMASQ, поскольку запрос всегда отправляется на 8,8,4,4
  3. DNSMAMSQ все еще использует только DNSServer, предоставляемый DHCP.

Все вообще работает, но я не думаю, что это предполагаемый результат, который просил. Более близкое решение, которое я думаю, это следующее. Редактировать

sudo vim /etc/dhcp/dhclient.conf

Затем добавьте

supersede domain-name-servers 8.8.8.8;

Результат следующий: resolv.conf содержит только 127.0.0.1, что означает, что кэш DNSMAMAQ вызывается, и NM-Tool говорит

DNS:             8.8.8.8

, что означает, что если имя искал не в Кэш, то его просят на 8.8.8.8, а не на сервере, предоставленном DHCP.

Другой (возможно, лучше) вариант состоит в том, чтобы использовать «Prefed» вместо «отменить»: таким образом, если имя не разрешено 8,8,8,8,8, то запрос обратно на другой сервер. На самом деле, NM-Tool говорит

DNS:             8.8.8.8    
DNS:             208.67.222.222
DNS:             208.67.220.220
1
11.12.2014, 21:01
1 ответ

На самом деле это не ошибка транзакции, как я вижу, это конфликт файлов. IMO (может быть, кто-нибудь сможет меня поправить), вам нужно удалить пакет npm. Либо физически, либо просто из базы данных RPM.

  • Если вас это устраивает, вы можете просто сделать rpm -e npm для деинсталляции пакета и удалить конфликтующие файлы из файловой системы. Это приведет к потере данных, но если конфликты существуют, так как nodejs является полной заменой пакета npm, то потерь не должно быть, так как установка nodejs заменит файлы, потерянные в результате деинсталляции.

  • Если Вы думаете, что удалить пакет не удастся (у него есть файлы, которых нет у другого пакета), то Вы можете попытать счастья, установив опцию --justdb на rpm -e. Предупреждаем, что это может привести к конфликтам, которые Вы не обязательно увидите сразу (когда конфликтующие версии файлов установлены или в системе остались фрагменты старого пакета и т.д.). Нужно только догадаться, все ли будет в порядке до тех пор, пока файлы перезаписаны.

Пример:

[root@vml-lvprod04 ~]# ll -h /usr/bin/nc
-rwxr-xr-x 1 root root 22K Feb  9  2010 /usr/bin/nc
[root@vml-lvprod04 ~]# rpm -e --justdb nc
[root@vml-lvprod04 ~]# rpm -ql nc
package nc is not installed
[root@vml-lvprod04 ~]# ll -h /usr/bin/nc
-rwxr-xr-x 1 root root 22K Feb  9  2010 /usr/bin/nc
[root@vml-lvprod04 ~]# yum install -y nc
[ ...snip... ]
Running Transaction
Warning: RPMDB altered outside of yum.
  Installing : nc-1.84-22.el6.x86_64            1/1
  Verifying  : nc-1.84-22.el6.x86_64            1/1

Installed:
  nc.x86_64 0:1.84-22.el6

Complete!

Как видите, я удалил пакет из БД, не касаясь самого файла. Это предотвратит rpm конфликты файлов. После этого я смог установить пакет с файлом в том же месте без ошибок. rpm предназначен для предотвращения конфликтов, поэтому используйте его на свой страх и риск.

0
28.01.2020, 01:48

Теги

Похожие вопросы