お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2010-12-09 13:16:57

tag
メンバ
登録日: 2009-01-30

debianのリポジトリを混ぜてしまった場合の復旧方法

デスクトップ版 日本語 Remix (ubuntu 10.10)をASUS UL20Aにインストールして使っています。windows 7とのデュアルブートです。

今回ある事情からdebianのパッケージを流用しなくてはならなくなり
(この関連です → https://forums.ubuntulinux.jp/viewtopic.php?pid=41715#p41715)

/etc/apt/sources.list に

deb http://kmuto.jp/debian/mtu debian_dic main contrib non-free
deb http://ftp.jp.debian.org/debian stable main contrib non-free

の記述を付加しまして、

# apt-get update
# apt-get install gs-esp gs-cjk-resource cmap-adobe-japan1 ttf-kochi-mincho ttf-kochi-gothic

を実行しました。その後、/etc/apt/sources.list の記述を放置したままアップデートマネージャーの自動アップデートを行ってしまい、
debianとubuntuのパッケージが混在した可能性があります。
現在では/etc/apt/sources.listから上記の記述を削除しており、これ以上debianのパッケージが混入する可能性はないのですが、あやまって混入したパッケージを元通りubuntuのパッケージに戻すのは難しいということでシステムの再インストールを強くすすめられています。

このアドバイス自体、正しいとは思うのですが、可能であればあやまって混入したdebianからのパッケージをubuntuに戻すことで再インストールは避けたいという希望をもっています。その方法は存在しない、というのが返事なのかもしれませんが、その方法があればどなたかご教授頂けないでしょうか?

この様な事態にいたった経緯は↓に記述されています。
https://forums.ubuntulinux.jp/viewtopic.php?id=10131

よろしくお願いします。

オフライン

 

#2 2010-12-09 14:43:48

zagan
メンバ
登録日: 2008-08-12

Re: debianのリポジトリを混ぜてしまった場合の復旧方法

手間も時間もやたらとかかってしまい、しかも正常なUbuntu環境に戻せるかどうかも不明ですが。
しかも、手元では当然そんな環境はありませんので、検証もできません。また、わざわざ検証のために、そんな環境を構築する暇もないです。
「そんなことは許されない」と思われるなら、以下はお読みいただかなくて結構です。

/var/log/dpkg にdpkgコマンドを使用して(おそらくaptでも)インストールされたログがあるはずです。
ログ・ビュワー(gnome-system-log)で開くと見えるはずです。

ここにDebian用パッケージをインストールしたときに、パッケージ名にDebianのリリースコード’(lennyとかetchとか)が付いてるものが記載されていればそれがDebianのパッケージでしょう。
手順としては、aptのsources.listをUbuntuのものにしておいて、Debianから混入させたパッケージを一つ一つdpkgコマンドで削除していって、再起動させずに同名のパッケージをUbuntuのリトリポジからダウンロード&インストールする。という手順になるかと。

但し、現状で動作しているなら、そのままにしておいたほうが良いと思いますよ。
依存関係にあるシステムに必須のパッケージを削除してしまい、再起動させたら動かないという最悪の状況もあるかもしれません。
逆に、混入しても問題のないパッケージもあると思います。
混入しているのは気持ちが悪いと仰るなら、バックアップをとっての再インストールという方向になります。

一番安心確実なのは再インストールだと思いますよ。
要するに「調査」「検証」「実行」の三段階を踏んで行うべき作業になりますが、結果はどうなるか分からないからです。

オフライン

 

#3 2010-12-09 16:20:49

tag
メンバ
登録日: 2009-01-30

Re: debianのリポジトリを混ぜてしまった場合の復旧方法

zagan による投稿:

但し、現状で動作しているなら、そのままにしておいたほうが良いと思いますよ。

一番安心確実なのは再インストールだと思いますよ。

ありがとうございます。実は僕も「このまま様子を見たい」と申告したのですが、複数の方がかなり熱心に
「絶対に再インストールすべき」と勧めて下さったので、再インストールはいやだな、と思って他に何か方法が無いか尋ねた次第です。

ありがとうございました。誰か他の方がより安全な方法を教えて下さらない限り、様子を見ようと思います。

以上。

オフライン

 

#4 2010-12-09 16:41:42

tag
メンバ
登録日: 2009-01-30

Re: debianのリポジトリを混ぜてしまった場合の復旧方法

さっそく調べたところ、混在はtetex-baseとlibkpathsea*,cupsysくらいだと分かりました。
損害は軽微な様なので、このまましばらく様子を見たいと思います。
よろしくお願いします。

コード:

% grep "lenny" dpkg.log 
2010-12-01 12:25:02 install tetex-base <なし> 2007.dfsg.2-1~lenny2
2010-12-01 12:25:02 status half-installed tetex-base 2007.dfsg.2-1~lenny2
2010-12-01 12:25:04 status unpacked tetex-base 2007.dfsg.2-1~lenny2
2010-12-01 12:25:04 status unpacked tetex-base 2007.dfsg.2-1~lenny2
2010-12-01 12:25:05 configure tetex-base 2007.dfsg.2-1~lenny2 2007.dfsg.2-1~lenny2
2010-12-01 12:25:05 status unpacked tetex-base 2007.dfsg.2-1~lenny2
2010-12-01 12:25:05 status half-configured tetex-base 2007.dfsg.2-1~lenny2
2010-12-01 12:25:05 status installed tetex-base 2007.dfsg.2-1~lenny2
2010-12-01 12:25:28 install libkpathsea4 <なし> 2007.dfsg.2-4+lenny3
2010-12-01 12:25:28 status half-installed libkpathsea4 2007.dfsg.2-4+lenny3
2010-12-01 12:25:30 status unpacked libkpathsea4 2007.dfsg.2-4+lenny3
2010-12-01 12:25:30 status unpacked libkpathsea4 2007.dfsg.2-4+lenny3
2010-12-01 12:25:35 configure libkpathsea4 2007.dfsg.2-4+lenny3 2007.dfsg.2-4+lenny3
2010-12-01 12:25:35 status unpacked libkpathsea4 2007.dfsg.2-4+lenny3
2010-12-01 12:25:35 status half-configured libkpathsea4 2007.dfsg.2-4+lenny3
2010-12-01 12:25:35 status installed libkpathsea4 2007.dfsg.2-4+lenny3
2010-12-01 20:48:16 status installed libkpathsea4 2007.dfsg.2-4+lenny3
2010-12-01 20:48:17 remove libkpathsea4 2007.dfsg.2-4+lenny3 2007.dfsg.2-4+lenny3
2010-12-01 20:48:17 status half-configured libkpathsea4 2007.dfsg.2-4+lenny3
2010-12-01 20:48:17 status half-installed libkpathsea4 2007.dfsg.2-4+lenny3
2010-12-01 20:48:17 status config-files libkpathsea4 2007.dfsg.2-4+lenny3
2010-12-01 20:48:17 status config-files libkpathsea4 2007.dfsg.2-4+lenny3
2010-12-02 11:20:24 status installed cupsys 1.3.8-1+lenny8
2010-12-02 11:20:24 remove cupsys 1.3.8-1+lenny8 1.3.8-1+lenny8
2010-12-02 11:20:24 status half-configured cupsys 1.3.8-1+lenny8
2010-12-02 11:20:24 status half-installed cupsys 1.3.8-1+lenny8
2010-12-02 11:20:24 status config-files cupsys 1.3.8-1+lenny8
2010-12-02 11:20:24 status config-files cupsys 1.3.8-1+lenny8
2010-12-02 11:20:24 status config-files cupsys 1.3.8-1+lenny8
2010-12-02 15:35:39 install cupsys <なし> 1.3.8-1+lenny8
2010-12-02 15:35:39 status half-installed cupsys 1.3.8-1+lenny8
2010-12-02 15:35:40 status unpacked cupsys 1.3.8-1+lenny8
2010-12-02 15:35:40 status unpacked cupsys 1.3.8-1+lenny8
2010-12-02 15:35:41 configure cupsys 1.3.8-1+lenny8 1.3.8-1+lenny8
2010-12-02 15:35:41 status unpacked cupsys 1.3.8-1+lenny8
2010-12-02 15:35:41 status half-configured cupsys 1.3.8-1+lenny8
2010-12-02 15:35:41 status installed cupsys 1.3.8-1+lenny8

% grep "lenny" dpkg.log.1 
2010-11-29 12:13:27 install cupsys <なし> 1.3.8-1+lenny8
2010-11-29 12:13:27 status half-installed cupsys 1.3.8-1+lenny8
2010-11-29 12:13:28 status unpacked cupsys 1.3.8-1+lenny8
2010-11-29 12:13:28 status unpacked cupsys 1.3.8-1+lenny8
2010-11-29 12:13:29 configure cupsys 1.3.8-1+lenny8 1.3.8-1+lenny8
2010-11-29 12:13:29 status unpacked cupsys 1.3.8-1+lenny8
2010-11-29 12:13:29 status half-configured cupsys 1.3.8-1+lenny8
2010-11-29 12:13:29 status installed cupsys 1.3.8-1+lenny8

オフライン

 

#5 2010-12-09 16:55:17

zagan
メンバ
登録日: 2008-08-12

Re: debianのリポジトリを混ぜてしまった場合の復旧方法

いや。
だからですね、、、

随分はしょって書いちゃった私も私なんですが、そこまで分かれば「ubuntu 10.10 アップデートマネージャーによる自動パッケージ削除」の#2でアドバイザのhmatsueさんが書かれているように、aptコマンドでそれぞれのパッケージの依存関係をみてください。
その上で再度「ubuntu 10.10 アップデートマネージャーによる自動パッケージ削除」の方にポストして、個々の依存関係をみなさんにチェックしてもらい対処するとモアベターです。

三人寄れば文殊の知恵とむかしから・・・

オフライン

 

#6 2010-12-09 17:18:18

Templer
メンバ
登録日: 2009-07-08

Re: debianのリポジトリを混ぜてしまった場合の復旧方法

タイトルがタイトルなので、ちょっと書き加えておきます。

Debianのリポジトリを追加してアップデートまでしてしまった場合は、それなりの数のパッケージがアップグレードまたはインストールされてしまいます(検索で後からこられる方も居られますので、そういうことにしておいてください)。
このDebianとUbuntuは同じパッケージ管理システムを使用していますが、同じシステムではありませんので、混ぜれば不安定にもなりますし、起動しなくなったりもします(参照リンク)。

外部のリポジトリによりアップグレードされてしまったパッケージは、それを全て正規のものへダウングレードさせれば元に戻る可能性はあります(方法は参考リンク)。ですが、バージョン違いのシステムや別ディストリビューションを混ぜてしまった場合は、場合によっては依存関係が破壊されてしまったりしますし、パッケージ管理上は元に戻ったとしてもシステム上では混じったままで不安定になるという事態も、より高まります。(参照リンクのほうで確認と復旧をしましたが、やはり不安定になりました)

尚、Debianのリポジトリを無効にしただけでは、そのリポジトリからアップグレード(インストール)されたパッケージはUbuntuのパッケージに(殆ど)置き換えらずに残り続けますので、システムの脆弱へとつながります。またディストリビューションアップグレード時に、排除してもらえず不具合を発生させてしまう可能性もあるかもしれません。

よって、再インストールが最善です。
(また、これが無償OSを使用する上での一つの対価でしょう)

参照: https://forums.ubuntulinux.jp/viewtopic.php?id=7423
参考: https://forums.ubuntulinux.jp/viewtopic … 675#p51675

オフライン

 

#7 2010-12-09 17:58:27

zagan
メンバ
登録日: 2008-08-12

Re: debianのリポジトリを混ぜてしまった場合の復旧方法

> tagさん

Templerさんが書かれているように、一番安心確実なのは、再インストールです。

tagさん による投稿:

ありがとうございます。実は僕も「このまま様子を見たい」と申告したのですが、複数の方がかなり熱心に
「絶対に再インストールすべき」と勧めて下さったので、再インストールはいやだな、と思って他に何か方法が無いか尋ねた次第です。

と書かれていらっしゃるところから推察すると、Templerさんが直前のポストで書かれてる

Templerさん による投稿:

(また、これが無償OSを使用する上での一つの対価でしょう)

という点に対してご理解が不足されていると感じます。
すべての操作の結果は、自己責任であるという点についてご理解ください。
再インストールするにしても、現状のまま使い続けるにしてもご自分の判断で、ご自分の責任において決断してください。

「ubuntu 10.10 アップデートマネージャーによる自動パッケージ削除」の#7でも述べられてますが、再インストールをどうしてもしたくない場合も、自己責任ということになります。
また、#2については検証の段階であって、確実に解決へ向かうことをお約束したものではありません。その根拠こそがTemplerさんが書かれている部分になります。

妙に期待を持たせてしまったようです。陳謝いたします。

オフライン

 

#8 2010-12-09 18:37:45

Crush
メンバ
登録日: 2009-02-10

Re: debianのリポジトリを混ぜてしまった場合の復旧方法

というか、混ぜるな危険であって、水に赤インク垂らしたら、赤くなりました。分離できないなんておかしい!っていわれても…。
世の中のすべての出来事は可逆じゃないと思うのだけども。
混ぜるな危険ってことあるごとに書かれている印象があって、それはVersion間で、同じOSでも言われることなんですが。

ましてや、「貴方も書き込めている」のですから「悪意がある者もスキルがない者も」書き込めるわけですよ。審査なんて無かったでしょ?
従って鵜呑みにして良い理由はどこにもないわけですが、少なくとも「この方法論で実現した」という情報だったわけで、「それが何を意味しているかを考えずに」実行したことが敗因ではありますし、少なくとも対症療法的には当時は価値があったのでしょうし、最初にそれを提示された方に転嫁するのもかわいそうだとは思います。
Windowsな掲示板だって結構平気で迷信とか嘘とかごろごろしてますし、情報精度を判断するのは読み手なのはどこでも同じです。
ちょっとした作業だから簡単に戻るに違いないというのは思いこみと期待でしかないです。赤インクの付いた指を水面に落とすだけでも、水は赤く染まります。が、それを除去するのは同程度のコストと道具では無理です。コップ洗ってもう一回水をくむのが確実で楽だったりします。

どちらかといえば、「混ざったときにその依存関係や相関関係の処理がめんどくさい」ので、「混ざらないように」パッケージマネージャの類が居るのであって、それを「混ぜちゃった」ら危険なのですが。
当然「リポジトリごとに」自分たちの知ってる物を調停しているので、混ぜてしまえば、「知らない物が入って」いたり、「入っていても自覚がない」なんてことになるので、困ってしまうと。ましてやチェック漏れとか、とっくに混ざってるので依存関係があって消しちゃ駄目なのを捨てちゃうとか、あんまり手動でやるのが望ましい状況にもないような気もします。

なので、「それらの整合性を壊してしまった」のだから、「安全性、安定性」を考えれば、「再構築してね」が解になってしまうのは致し方ないことですし、第三者的にはそういう話をすることになってしまいます。
混ざらないように調停するための仕組みを壊したということなので、後からできる作業はチマチマとつじつまを合わせることなのですが、全部を洗い出すのは大変じゃないかと。というか、それが大変ですごく面倒なので、こういう仕組みを作った人が居るわけで。
ただ、その辺りも自己責任なので「どーせそのうちサポート終わるんだし次のアップデートまではいいや」って判断するのも利用者ご本人でして。自分が使うのに問題なさそうなら「それはそれでいいんじゃないか」とも言えます。今後も問題がないことも約束できませんが。
それでも、「安全に」とか「確実に」というのなら、「初期化してね」がやはり解になるのだと。

自己責任以前に「自分が何をしているのか」をわからずに作業をすること自体もとても危険です。
特定のケースでのみ有用で、他のケースでは地雷という情報なんていくらでもあります。
自由と責任がトレードオフなのはここでも同じで、自由度の高さは反面問題がある作業も指示を与えれば権限がある場合は実行されるということで、メーカー主導のそれだと、インストーラなんかもお約束があったりするのですが。

バイナリを特定の場所にコピーして設定しておしまいって文化から来てる物じゃないことの弊害ではあるかも知れませんね。

オフライン

 

#9 2010-12-09 18:50:03

tag
メンバ
登録日: 2009-01-30

Re: debianのリポジトリを混ぜてしまった場合の復旧方法

皆様

私個人は、3つの(あまり重要では無い)パッケージが置き換えられただけであるし、ダメになってから再インストールでも手間は同じなので「自己責任で」このまま使いつづけるという判断をしました。再インストールがモアベターなのは理解していますが、今回の場合、再インストールのコストが危険度の減少度と釣り合わないという判断をしました。

同じような状況で、再インストールの判断をする人もいるでしょうし、いないかもしれません、人それぞれと思います。


=================
あと余談ですが、

>(また、これが無償OSを使用する上での一つの対価でしょう)

とかいう方に話を持っていくのはあまりよくないと思います。問題の解決にはまったく役に立たない余分なコメントであると思います。
現実問題として、有償のOSであっても何かがおかしくなったら最終的には再インストール以外手はないことは往々にあるのは周知の事実であり、その点を無視してこのようなコメントを書き加えるのは感情的な反発を呼ぶだけであり、止めた方がいいように思います。

老婆心ながら。

場が荒れつつあって某匿名掲示板のようになりそうなので、これ以後はこのスレッドには僕は書き込みません。
一切のコメントにお答えできませんので、ご了承下さい。

この度はいろいろアドバイスありがとうございました。

オフライン

 

#10 2010-12-09 20:17:07

hmatsue
アドバイザ
登録日: 2009-03-10

Re: debianのリポジトリを混ぜてしまった場合の復旧方法

もしまだ読んでいらっしゃれば。

http://packages.debian.org/stable/

あたりからパッケージ名を見てみると、簡単にはlenny由来のパッケージかどうかをパッケージ名だけから判別することは難しそうです。
ですので、lennyと入っていたものはlenny由来のものだと推定しますが、入れ替わったパッケージが3つだけかどうかは現時点では不確定かと思います。

ではどうすれば判別できるか、という点については別トピックにも書いたように私は存じませんので、今すぐには具体的なアドバイスは致しかねるのですが、他の方からなにか良い方法が寄せられるかも知れませんので、しばらくはこのトピックも読んでおかれると良いかと思います。

くどいようですが、簡単で確実なのは再インストールだと思うのですが、手間とリスクを考えて現状維持を選択されるのであればそれはそれでよいかも知れません。

あと一点だけ。通常であれば何の問題の無いアップデートがきっかけで、ある日突然起動しなくなった、などということが無いとも限りません(*1)ので、ホームが暗号化されていたり、何かデータの引き上げが面倒な環境であれば、失うと困るデータ類はこまめにバックアップされておくかと良いかと思います。
# それもLiveCDを使って頑張れば引き揚げられるかも知れませんが。。

*1)
割とありがちなのはGUIが起動しなくなるなど、割と軽微な障害かと思います。
この程度であればなんとでもなりますが、正直どの程度の障害が発生し得るものなのか、またそのリスクがどの程度のものなのかは判断致しかねます。

オフライン

 

#11 2010-12-15 20:08:07

Crush
メンバ
登録日: 2009-02-10

Re: debianのリポジトリを混ぜてしまった場合の復旧方法

参照元の方で、「無闇にリポジトリを混ぜないように」記載した方が良いのではないか?と管理者に報告はしてみたのですがシカトでした。
改竄は望ましくはない物の、些末な表現を理由に細々とした削除や改竄をすることを思えば、管理者サイドは何か答えを持ってるのかも知れないですね。報告の量の問題なのか?
古い情報でも踏む可能性のある地雷はわかっているなら何とかした方が良いような気がするのですが、もしかすると、どうにかする方法があるのかも知れませんねぇ?
そんな方法があるのでしたら、実際ここのフォーラムの情報で混ざってしまい、実際怪しげな動作になってるわけですから、方法論くらい提示してくれても良いんじゃないかと思ったりしちゃいかんですかね?

オフライン

 

#12 2010-12-15 22:29:02

hito
管理者
登録日: 2007-03-18

Re: debianのリポジトリを混ぜてしまった場合の復旧方法

Crush による投稿:

報告の量の問題なのか?

具体的に追記すべき情報が含まれない報告だったため、管理者・モデレータ全員が「対応不能」と判断した結果、未対応となっています。

「この記述には問題があると思われる」という報告だけだと、利用規約違反以外には対処は行えません。そうした修正は「最後の手段」だからです。フォーラムの性質上、試行錯誤が含まれるのは不可避なため、このような場合にはWiki等にHowToを書いて頂き、「より新しい情報がここにあるというリンクを追記してほしい」として頂けるなら修正依頼を *通せます* 。そうでなければ、こちらで補正したくても補正は行えないのです。

言い換えれば、管理者・モデレータが特権を行使するのは「やむを得ない場合」に限定されます。他の方法での対処の可能性がありえる場合は、特権操作は行いがたいのです。

# そうでなければ、Crushさんの発言は修正されまくりになるとご自身でも思われているはずです。「管理者は表面な発言だけ見ているので、表面的な部分で取り繕っていれば削除されない」という主旨のCrushさんの過去の発言に見られるのが懸念ですが、あれらはポジショントークの一種であり、真に信じているわけではないと我々は考えています。

オフライン

 

#13 2010-12-15 22:42:12

hito
管理者
登録日: 2007-03-18

Re: debianのリポジトリを混ぜてしまった場合の復旧方法

この手の「リポジトリを混ぜてしまった」場合の対処方法ですが、基本的には *ありません* 。
混在することがシステム上想定されていないため、安全に元に戻すにはバックアップから書き戻すしかありません。

が、次の手順でパッケージ構成だけは元に戻すことができます。
これはあくまで裏技で、正常に元に戻るわけではありません。かえってシステムを破壊する可能性もあります。

1) pinを行います。
/etc/apt/preferences.d/force-downgradeという名前で(実際には名前はどうでもいい)、以下のような記述のファイルを作成します。「a=maverick」の部分は、もともとのUbuntu環境のリリース名に合わせます。

Package: *
Pin: release a=maverick
Pin-Priority: 1010

2) apt-lineをUbuntu本来のもの以外すべて無効になっていることを確認し、sudo apt-get updateを行います。

3) sudo apt-get dist-upgradeを行います。これにより、apt-lineの混在によって「混ぜられた」パッケージがUbuntu本来のものに置き換えられます。ただし、パッケージの導入に失敗する可能性が常にあり、その場合は自力でメンテナスクリプトを確認して問題を解決する必要があります。

4) pinを削除します。
1) で作成した/etc/apt/preferences.d/force-downgradeを削除します。

注意:
「パッケージ構成だけは」というのは、Debian/Ubuntuのシステムはパッケージ構成だけでなく、パッケージに含まれるメンテナスクリプトが行うインストール・アンインストール時の操作も含んで成立しているからです。パッケージ構成を元に戻しても、こうした操作部分は元に戻りません。

オフライン

 

Board footer

Powered by FluxBB