Làm cách nào để xóa một dòng không đúng định dạng khỏi nguồn.list của tôi?


68

Tôi đã mở và cài đặt lại Trung tâm phần mềm Ubuntu theo thông tin tôi tìm thấy trong một chuỗi tương tự và tôi nhận được phản hồi tương tự về dòng 91 hoặc đại loại như thế.

Tôi chỉ cố tải lên ảnh chụp màn hình nhưng vì tôi mới nên nó không cho phép tôi. Tôi cũng không thể tìm ra cách cắt và dán bất cứ thứ gì vì vậy tôi phải gõ tay những gì màn hình lỗi nói, cả khi tôi cố mở trung tâm phần mềm và không có gì xảy ra, khi tôi cố gắng nhập lệnh vào thiết bị đầu cuối để gỡ cài đặt, cài đặt lại , bất cứ điều gì tôi nhận được như sau:

COULD NOT INTITIALIZE THE PACKAGE INFORMATION
An unresolvable problem occured while initializing the package information
Please report t:his bug against the 'update-manager' package and include the
following error message:
'E: Malformed line 91 in source list/etc/apt/sources.list (dist parse) 
E: The list of sources could not be read., 
E: The package list of status file could not be parsed or opened.

Làm cách nào để báo cáo lỗi? Có thể làm gì về điều này. Tôi đã tìm kiếm và tất cả mọi người nói phải làm dẫn tôi trở lại cùng một thông báo lỗi dòng.

Vì vậy, tôi không biết làm thế nào để đến dòng 91 trong danh sách nguồn; để nói với bạn những gì nó nói. Xin lỗi, tôi thực sự mới với điều này. Đó là những gì tôi cần là tìm ra cách đến đó và sửa chữa những gì nó nói. Tôi thực sự KHÔNG muốn phân vùng lại ổ cứng của mình và bắt đầu lại từ đầu, vì vậy tôi thực sự mong muốn giải quyết vấn đề này. Tôi cần để có thể cài đặt phần mềm mới.


8
Bạn có thể thêm nội dung của bạn /etc/apt/sources.listgiữa dòng 67 và 69 không ???
Bruno Pereira

2
Chỉnh sửa câu hỏi của bạn để bao gồm đầu ra của lệnh cat /etc/apt/sources.list. Và không, bạn không cần phải quét sạch mọi thứ. Đây là một vấn đề rất dễ dàng ( từ kinh nghiệm của tôi )
Anwar

Bạn không cần điểm rep để đăng đầu ra. Tuy nhiên, bạn cần định dạng đầu ra dưới dạng mã hoặc nó sẽ không cho phép bạn đăng đầu ra vì bạn không có đủ điểm rep để đăng nhiều liên kết. Chỉnh sửa câu hỏi và dán đầu ra, sau đó tô sáng đầu ra, sau đó nhấn CTRL + K để định dạng đầu ra dưới dạng mã và sau đó lưu các thay đổi.
mchid

Câu trả lời:


55

Một số dòng bị hỏng trong sources.listtệp của bạn (hoặc *.listtệp khác trong sources.list.d/).

Chỉnh sửa tập tin được đề cập trong lỗi để sửa các dòng bị hỏng.

  1. Để thực hiện việc này, hãy chạy lệnh này (nhấn Ctrl+ Alt+ Tđể mở Terminal):

    sudo -H gedit /etc/apt/sources.list
    

    Hoặc, thay vì Gedit (mà không phải tất cả các hệ thống Ubuntu đều có), bạn có thể muốn mở tệp trình soạn thảo văn bản dựa trên thiết bị đầu cuối:

    sudoedit /etc/apt/sources.list
    

    Nếu cần, thay thế /etc/apt/sources.listbằng một tên tệp khác, nghĩa là đường dẫn đến một số tệp bên trong /etc/apt/sources.list.d/.

  2. Tìm các dòng được định dạng không chính xác (tham khảo lỗi cho số dòng, sau đó nhìn xung quanh điểm đó). Đây là những ví dụ về các dòng được định dạng chính xác:

    # Comment, marked by a line starting with '#'
    deb http://site.example.com/debian distribution component1 component2 component3
    deb-src http://site.example.com/debian distribution component1 component2 component3
    

    URL distributionvà các thành phần sẽ khác nhau. Nó không nhất thiết phải có 3 thành phần.

    Bất cứ điều gì không phù hợp với định dạng này là không chính xác.

  3. Lưu tệp và thoát khỏi trình soạn thảo văn bản. Sau đó chạy lệnh này trong cửa sổ Terminal:

    sudo apt-get update
    

Giả sử không có lỗi, vấn đề đã được khắc phục. Bạn sẽ có thể chạy Trung tâm phần mềm.

Tuy nhiên, trong khi một số vấn đề với Trung tâm phần mềm có thể được giải quyết bằng cách cài đặt lại software-centergói, hầu hết không thể, vì vậy có thể vấn đề ban đầu của bạn sẽ vẫn còn. Nếu đó là trường hợp, bạn có thể đăng một câu hỏi mới để được giúp đỡ với nó.


Tôi nghĩ rằng đôi khi đối với các bản phát hành dựa trên Debian bạn cần ./ở cuối dòng như trong ví dụ
user10089632

27

Phương pháp nhanh

Một cách giải quyết cho vấn đề này có thể là xây dựng sources.listmục từ đầu.

deb http://archive.ubuntu.com/ubuntu precise main universe restricted multiverse
deb-src http://archive.ubuntu.com/ubuntu precise universe main multiverse restricted

deb http://security.ubuntu.com/ubuntu/ precise-security universe main multiverse restricted
deb http://archive.ubuntu.com/ubuntu precise-updates universe main multiverse restricted
deb http://archive.ubuntu.com/ubuntu precise-backports universe main multiverse restricted

# deb http://archive.canonical.com/ubuntu precise partner
# deb-src http://archive.canonical.com/ubuntu precise partner

# deb http://extras.ubuntu.com/ubuntu precise main
# deb-src http://extras.ubuntu.com/ubuntu precise main
  • Sao chép nội dung trên (trong hộp màu xám) và mở sources.listtệp dưới dạng root.

    sudo -H gedit /etc/apt/sources.listcái này trong một thiết bị đầu cuối và nhấn Entersẽ thực hiện công việc.

  • Sau đó dán nội dung được sao chép vào sources.list- lưu ý bạn có thể sẽ cần phải thay thế precisebằng tên mã đại diện cho phiên bản Ubuntu của bạn - ví dụ: trustycho 14.04. Sau đó lưu và đóng gedit.

  • Sau đó làm sudo apt-get updatevà bạn sẽ thấy rằng danh sách kho lưu trữ được cập nhật.

Giải thích: Ở đây chúng tôi đang thay thế hoàn toàn nội dung bằng một tệp nguồn.list khác bằng mục nhập kho lưu trữ từ Máy chủ chính. Nếu bạn muốn sử dụng máy chủ cục bộ của mình để sources.listxem phương pháp bên dưới.

Phương pháp đề xuất

Chuyển đến trang web tạo danh sách nguồn Ubuntu .

  • Chọn đất nước của bạn.
  • Chọn các nhánh bạn muốn, chẳng hạn như Chính, Hạn chế, Đa vũ trụ, Vũ trụ.
  • Chọn danh sách cập nhật mong muốn, -
  • Chọn bất kỳ danh sách kho lưu trữ của bên thứ ba nếu bạn muốn.
  • Nhấp vào Tạo danh sách ở cuối trang, bạn sẽ được cung cấp một danh sách với các kho lưu trữ.
  • Sao chép danh sách đó và thay thế bằng sources.listtập tin bạn có.

Bạn xong việc rồi. (Hy vọng điều này có thể giúp cho bạn.)


5
Kỳ lạ là điều này không được chấp nhận !! Khắc phục nhanh, nhận xét dòng có vấn đề /etc/apt/sources.listbằng cách thêm ##làm ký tự đầu tiên trong dòng. Sau đó thử sudo apt-get update.
Cao quý P. Áp-ra-ham

3
Có thể nó không được chấp nhận vì người dùng có thể bật các repos khác và họ sẽ mất chúng nếu họ làm điều này. Ví dụ: hầu hết người dùng VirtualBox đều nhận được từ repo của Oracle. Ngoài ra, Oracle sử dụng các tên gói khác nhau trong repos so với Ubuntu trong tên của chúng. Do đó, nếu tôi đã cài đặt VirtualBox với repo của Oracle và làm theo hướng dẫn này, tôi sẽ ngồi cùng một phiên bản VirtualBox và không bao giờ nhận được bản cập nhật. Không bao giờ.
John Scott

@FuzzyToothpaste họ sẽ không mất họ nếu họ làm điều này. Nó chỉ loại bỏ các mục trùng lặp. Kịch bản ví dụ của bạn không liên quan gì đến vấn đề này
Anwar

Khi sử dụng trang web tạo danh sách nguồn Ubuntu để tạo tệp nguồn.list mới, đừng quên cập nhật khóa GPG. Nếu không, vấn đề có thể vẫn còn
Tushar Goswami

6

Như bạn có thể thấy từ lỗi, nó nói rằng tệp nguồn.list của bạn có một mục nhập sai. Mục nhập sai này không thể được phân tích cú pháp. Lỗi này không liên quan đến Trung tâm phần mềm như vậy nhưng chủ yếu là do apt (Trình quản lý gói)

Cách để giải quyết vấn đề này là sửa lỗi 91nhập sai dòng .

Nếu bạn không thể hiểu điều gì sai với dòng 91, vui lòng đăng dòng 91 và tôi sẽ giúp bạn


6

Vui lòng dán tệp /etc/apt/sources.listđể chúng tôi có thể khắc phục sự cố này cho bạn. Xem câu trả lời hướng dẫn ngắn này để biết cách làm điều đó:

Làm thế nào tôi có thể dễ dàng chia sẻ đầu ra của một lệnh hoặc một tệp văn bản với người khác?


Điều này đôi khi có thể là một sửa chữa rất dễ dàng, nhưng trước tiên bạn phải sao lưu sources.list vì đây là một tệp quan trọng.

  1. Mở thiết bị đầu cuối với Ctrl+ Alt+ T.
  2. Nhập / dán: sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup(điều này tạo ra một bản sao lưu)
  3. sudo sed -i -e '68d' /etc/apt/sources.list (điều này xóa dòng có vấn đề)
  4. sudo apt-get update (điều này cập nhật cơ sở dữ liệu với tệp cố định hy vọng)

Nếu bạn thấy không có lỗi xuất hiện khi bạn thử bước 4, thì vấn đề được hy vọng là đã được khắc phục. Bạn có thể thoát khỏi thiết bị đầu cuối và quay lại Trung tâm phần mềm / Trình quản lý cập nhật và nó sẽ hoạt động.

Nếu vẫn còn sự cố, bạn có thể khôi phục tệp gốc từ thiết bị đầu cuối với sudo cp /etc/apt/sources.list.backup /etc/apt/sources.list. Trong trường hợp đó, vui lòng dán các dòng có vấn đề hoặc thậm chí toàn bộ tệp vào một pastebin và sau đó chúng tôi có thể giúp đỡ thêm.


3
Xóa dòng vi phạm có thể không phải là một ý tưởng tốt (nhưng lời khuyên về lời khuyên để sao lưu mọi thứ trước khi làm điều này). Nếu đó là kho lưu trữ mà người dùng cần thì sao? Ngoài ra, nếu một dòng dài bằng cách nào đó được chia thành hai dòng, bạn sẽ có hai dòng không đúng định dạng (và quy trình phải được lặp lại). man sources.listcó một phần với các ví dụ và có thể hữu ích khi yêu cầu người dùng so sánh các dòng của mình với các ví dụ, có thể anh ta có thể xác định những gì sai và tự sửa nó. Cá nhân tôi sẽ đợi cho đến khi anh ấy đăng tập tin records.list của mình.
roadmr

@roadmr: Cảm ơn, tôi hoàn toàn đồng ý với tất cả các kịch bản bạn đặt ra. Tôi chỉ cảm thấy rằng những người mới thậm chí có thể không biết cách đăng một tập tin, chứ đừng nói đến những dòng cụ thể từ tập tin đó, trừ khi được tư vấn làm thế nào. Điều đó truyền cảm hứng cho tôi để tự viết QA-howto này :-)
ish

@roadmr Tôi tin rằng bạn sẽ nhận được thông báo lỗi về hai dòng không đúng nếu một dòng dài được chia thành hai dòng.
mchid

Lưu ý rằng nếu -i.backupđược truyền vào sedthay vì chỉ -isau đó sedsẽ tự tạo tệp sao lưu.
Eliah Kagan

5

Tệp /etc/apt/sources.listnày chứa URL của máy chủ web và vị trí của các mẫu nguồn khác (ví dụ: cds), từ đó bạn truy xuất phần mềm và cập nhật của mình. Về cơ bản, nó cho Ubuntu biết nơi tìm Phần mềm mới và các bản cập nhật cho các chương trình đã được cài đặt. Thông báo lỗi bạn nhận được có nghĩa là bằng cách nào đó tệp đã bị xâm phạm. Không biết nội dung của tập tin của bạn là gì, thật khó để biết chính xác những gì sai với nó. Vì vậy, bạn nên đăng đầu ra của sudo more /etc/apt/sources.listchúng tôi để giúp bạn tốt hơn.

Nếu tệp bị rối sau khi sửa chữa, bạn có thể sử dụng Trình tạo danh sách nguồn Ubuntu để tạo sources.listlại một lần nữa. Nhưng bạn nên sao lưu cái cũ của bạn trước. Ngoài ra, điều này sẽ khiến bạn mất tất cả các thay đổi bạn đã thực hiện cho Nguồn phần mềm của mình, ví dụ như trong Trung tâm phần mềm.

Cách tốt hơn để khắc phục điều này là cho chúng tôi thấy có vấn đề gì với bạn sources.list

Chỉnh sửa sau khi bạn đăng sources.list:

Tôi tin rằng tệp bạn đã đăng sẽ trông như thế này (lưu ý cuối cùng đến dòng và thiếu /etc/apt/sources.listcuối cùng):

# /etc/apt/sources.list

deb http://archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse 
deb http://security.ubuntu.com/ubuntu/ precise-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ precise-updates main restricted universe multiverse
deb http://archive.canonical.com/ubuntu partner
deb-src http://archive.canonical.com/ubuntu partner

Tôi sẽ thử trình tạo danh sách nguồn sau khi tôi sao lưu các tệp của mình nhưng thực sự sẽ mất một lúc. Máy tính xách tay của tôi vẫn còn trên ổ cứng nên chưa được nhanh. Tôi đã thêm source.list của tôi vào tin nhắn ở trên.
Odi1215

Nó chỉ đủ để sao lưu chỉ một tệp được gọi sources.list.
con-f-sử dụng

Được rồi, sẽ làm. Sau đó, tôi sẽ thử trình tạo danh sách nguồn?
Odi1215

Tích cực. Đó là một lời đồng ý.
con-f-sử dụng

Tôi đã nhập vào sudo thêm /etc/apt/source.list nhưng không có gì xảy ra.
Odi1215

5

Vui lòng thử chỉnh sửa sources.listtệp của bạn bằng cách thả sudo gedit /etc/apt/sources.listvào một thiết bị đầu cuối (mật khẩu của bạn có thể được yêu cầu), sau đó bạn sẽ có các tùy chọn để bật "Số dòng" trong Menu Chỉnh sửa / Tùy chọn của gEdit và nhấp vào hộp kiểm "Hiển thị số dòng", sau đó tự chuyển đến Dòng trong lỗi của bạn, ví dụ 91 hoặc bằng cách sử dụng "Tìm kiếm / Chuyển đến dòng" (Ctrl + Tôi thực hiện thủ thuật).

nhập mô tả hình ảnh ở đây

Khi bắt đầu Dòng 91, hãy bỏ hai ký hiệu # ( ##) để nhận xét về dòng đó và bằng cách này loại bỏ nó khỏi quá trình cập nhật (bạn cũng có thể xóa dòng đó một cách nguy hiểm, tôi khuyên bạn nên sao lưu).

Khi bạn hoàn thành, lưu tệp và đóng nó xuống. Sau đó mở một thiết bị đầu cuối và chạy sudo apt-get updatevà xem nếu lỗi vẫn xuất hiện. Nếu không, sau đó thử mở trình quản lý cập nhật của bạn.

Bằng cách nào đó, có vẻ như văn bản trong Dòng 91 của sources.listtệp của bạn bị hỏng hoặc có một số lỗi, điều đó có nghĩa là một số phần mềm không thể được cài đặt / cập nhật / nâng cấp.

Bằng cách nhận xét / xóa dòng lỗi, phần mềm sẽ không được cài đặt (nếu chưa có) hoặc sẽ không được cập nhật / nâng cấp nếu đó là những gì bạn thử. Trong đó tôi khuyên bạn nên kiểm tra xem dòng đó đến từ đâu (phần mềm nào yêu cầu nó) và thực hiện các sửa đổi phù hợp theo yêu cầu để mọi thứ chạy tốt.


4

Nếu bạn gặp phải bất kỳ lỗi dòng không đúng định dạng như dưới đây, tôi thực sự khuyên bạn nên nhận xét ( thêm #trước dòng ) thay vì xóa nó trong /etc/apt/sources.listtệp.

E: Malformed line 91 in source list /etc/apt/sources.list (dist parse)

Từ lỗi trên, số dòng 91trong /etc/apt/sources.listtệp bị hỏng. Để nhận xét dòng số 91, bạn phải chạy lệnh dưới đây trên thiết bị đầu cuối.

sudo sed -i '91s/\(.*\)/#\1/' /etc/apt/sources.list

91trong đoạn mã trên biểu thị số dòng. Thay số 91 trong mã trên bằng số của bạn nếu bạn gặp bất kỳ lỗi dòng không đúng.

Trong một số trường hợp, lỗi dòng không đúng cũng sẽ xảy ra trong một tệp danh sách thực sự có trong /etc/apt/sources.list.dthư mục. Ví dụ,

E: Malformed line 1 in source list /etc/apt/sources.list.d/google.list (dist parse)

Trong trường hợp này, tôi thực sự khuyên bạn nên xóa google.listtệp bằng cách chạy sudo rm /etc/apt/sources.list.d/google.listvà sau đó thêm PPA tương ứng.

Cuối cùng cập nhật tất cả các kho lưu trữ bằng cách chạy sudo apt-get updatelệnh trên thiết bị đầu cuối. Bây giờ lỗi sẽ không xuất hiện.


3

Bạn phải xóa dòng cuối cùng của tệp này (tất nhiên không phải là tệp):

 /etc/apt/sources.list

Tệp của bạn sources.listphải trông giống như thế này:

# /etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse 
deb http://security.ubuntu.com/ubuntu/ precise-security main restricted universe   multiverse
deb http://archive.ubuntu.com/ubuntu/ precise-updates main restricted universe multiverse
deb http://archive.canonical.com/ partner
deb-src http://archive.canonical.com/ partner

Tất nhiên, chỉ thay thế sources.listtệp của bạn bằng văn bản đó có thể là một điều rất xấu, đặc biệt là nếu nó trông khá khác biệt trước đây. Điểm mấu chốt là mỗi dòng bắt đầu bằng debhoặc deb-src(ngoại trừ các bình luận, bắt đầu bằng #).


1
@Malika Xin chào, tôi rất vui vì đã khắc phục sự cố này. Nhưng vui lòng cố gắng trả lời các câu hỏi không chỉ cho người hỏi mà còn cho những người Google câu hỏi này và có các thay đổi nhỏ về vấn đề của người hỏi. Điều này có lẽ cần thêm một chút giải thích để làm cho nó một câu trả lời "chung" tốt. :)
Jjed

@JacobJohanEdwards Tôi không thể đồng ý với bạn, vì chúng tôi thực sự không thể giúp những người thực thi lệnh trước khi đọc câu hỏi, IMO
Anwar

2
@Anwar Theo tôi, trách nhiệm của người trả lời là (a) không trả lời theo cách chỉ giúp người hỏi ban đầu [quá cục bộ], (b) không cảnh báo chính xác các tác dụng phụ tiềm ẩn của a chỉ huy. Từ chối trách nhiệm giúp đỡ.
Jjed

1

Mở một thiết bị đầu cuối bằng cách sử dụng CTRL+ Alt+ Tvà thực hiện lệnh bên dưới để loại bỏ dòng 6, đây không phải là hình thức chính xác của dòng nguồn lưu trữ, do đó apt gây ra lỗi cho bạn về dòng không đúng định dạng.

CẢNH BÁO: Không thực hiện lệnh này mà không đọc câu hỏi trước, lệnh này sẽ xóa dòng 68 của /etc/apt/sources.listtệp. Kiểm tra xem vấn đề của bạn có tương tự hay không, ngay cả khi đó là, thay thế 68bằng số dòng bạn cần xóa .

sudo sed -i.old '68d' /etc/apt/sources.list

Lệnh này sẽ xóa dòng sử dụng sedtại chỗ. Nó làm cho một bản sao lưu được gọi là /etc/apt/sources.list.old. Nếu bạn không muốn sao lưu thì bạn có thể sử dụng đơn giản -ithay vì -i.old.

Ngoài ra, bạn có thể xóa thủ công dòng bằng Gedit.

  • Nhấn Alt+ F2và gõ gksu gedit /etc/apt/sources.list.
    (Nếu bạn không có, gksubạn có thể sử dụng sudo -H gedit.)
  • Tìm các hỏng /etc/apt/sources.listvà loại bỏ nó.
  • Lưu và thoát Gedit.

Hình thức chính xác của dòng nguồn kho lưu trữ:

Định dạng chính xác của dòng nguồn kho là:

<type of repository> <location i.e URI>  <dist-name> <components i.e main, universe>

Ví dụ:

  deb http://archive.ubuntu.com/ubuntu precise main
  • Loại: deb là loại repo, nó chỉ ra nó là kho lưu trữ nhị phân, không phải là kho lưu trữ nguồn, có loại deb-scr.
  • Vị trí: http://archive.ubuntu.com/ubuntu vị trí của kho lưu trữ
  • Tên phân biệt: precise là tên phân phối của phiên bản Ubuntu. cho Ubuntu 12.04 precise, 11.10 làoneiric

  • Thành phần: main là chỉ thành phần của kho lưu trữ. Kho lưu trữ Ubuntu được chia thành bốn phần.

    1. Chính - Phần mềm chứa phần mềm nguồn mở và miễn phí, được hỗ trợ chính thức
    2. Vũ trụ - Những phần mềm này không được Canonical hỗ trợ, nhưng những phần mềm này được duy trì bởi cộng đồng.
    3. Hạn chế - Những phần mềm này được Canonical hỗ trợ, nhưng không miễn phí. Chúng được hỗ trợ để cung cấp một số trình điều khiển thiết yếu
    4. Multiverse - Đây cũng là những phần mềm không miễn phí và không được Canonical hỗ trợ.

Xem trang này để biết thêm thông tin.

Bây giờ bạn có thể hiểu rằng đó /etc/apt/sources.listkhông phải là một dòng nguồn lưu trữ và do đó apt-getphàn nàn về nó.



1
Xin chào, Anwar, đây là một câu trả lời hay, nhưng sẽ rất rủi ro khi chỉ cần có một sudo sedlệnh ở đầu nó. Nhiều người có cùng một vấn đề (nhưng hoàn cảnh hơi khác nhau) sẽ thấy câu trả lời này và willy-nilly điều hành nó, và có khả năng phá hỏng sự sources.listsửa chữa của họ . Trong trường hợp này, một cách tiếp cận tổng quát hơn (với trình soạn thảo văn bản) có thể theo thứ tự.
Jjed
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.