Làm cách nào tôi có thể chạy Pháo đài lùn ở chế độ văn bản (ncurses) trên VPS Linux của mình?


14

Tôi đã cài đặt Pháo đài lùn trên VPS Linux của mình để sử dụng với dfterm. Nó đang chạy Ubuntu 10.04 Server x86-32. Tôi khá chắc chắn Tôi có tất cả các phụ thuộc:

Tôi đã cài đặt:

  • lời khuyên
  • ncursesw
  • libsdl
  • hình ảnh libsdl
  • libgtk
  • libglu
  • libopenal1

Tôi đã phải tắt âm thanh hoặc nó sẽ ngay lập tức segfault và tôi đặt chế độ hiển thị thành văn bản. Tôi đã không thực hiện thay đổi nào khác cho cấu hình.

Tuy nhiên, ngay cả trước khi tôi đến gần sau, nó sẽ không chạy đúng. Nó chỉ hiển thị một màn hình trống. Điều gì có thể gây ra điều này? Có một phụ thuộc tôi đã bỏ lỡ? Có điều gì khác tôi nên đã thay đổi trong cấu hình?

Cho rằng đó là một máy chủ, rất có thể nếu thiếu một sự phụ thuộc, đó là điều mà các nhà phát triển đã nói "Chắc chắn, mọi người đều có điều đó " và không bận tâm đến việc liệt kê.

Các ứng dụng ncurses khác (vim, irssi sử dụng nó, tôi nghĩ vậy?) Hoạt động tốt.


Ban đầu tôi đã hỏi điều này khi chơi game, nhưng mọi người ở đó đề nghị hỏi ở đây: playing.stackexchange.com/questions/4716/ mẹo
Macha

Huh, thật là một ý tưởng thú vị. Bạn có thể nói nếu trò chơi đang cố gắng làm bất cứ điều gì? Chạy 'top' từ thiết bị đầu cuối khác và xem nó có sử dụng bất kỳ CPU nào không.
Nicholas Knight

Câu trả lời:


10

Tôi đã có thể tạo lại segfaulting bằng cách chạy df trên bản cài đặt Ubuntu thông thường với X bị tắt.

...
(Dwarf_Fortress:5346): Gdk-CRITICAL **: gdk_window_new: assertion `GDK_IS_WINDOW (parent)' failed
Segmentation fault

Tôi nghi ngờ vấn đề là trò chơi này hy vọng sẽ có trình điều khiển GL hoạt động. Và cho rằng bạn cần X chạy. Nhưng VPS không có X!

Thay vào đó, hãy sử dụng Xvfb, đó là X ảo "giả". Bạn sẽ cần cài đặt xvfb và bất kỳ phụ thuộc nào nó muốn (có thể là xorg-server-core và một loạt các thứ khác có thể không được cài đặt trên Ubuntu Server).

Bắt đầu xserver giả như thế này:

 $ Xvfb :1 -screen 0 1024x768x16 &

Sau đó, đảm bảo biến HIỂN THỊ của bạn được trỏ đến nó:

$ export DISPLAY=:1
$ ./df

Tôi cũng cần phải tắt âm thanh và chạy ở chế độ TEXT, nhưng nó hoạt động theo cách này, không có X chạy. Tôi hy vọng nó làm việc cho bạn.


Segfault đã biến mất, nhưng khi tôi chạy nó, tôi nhận được "Fallback: libncurses đã mở, đầu ra có thể bị hỏng. Không tìm thấy biểu tượng: waddnwstr.", Và không cung cấp thêm đầu ra nào, có thể thoát ra bằng Ctrl-X nhưng hoàn toàn rối tung phiên ssh. (làm cho chiều rộng 80 + dấu nhắc chứ không phải 80 inc. dấu nhắc). Đây là câu trả lời gần nhất tôi nhận được, vì vậy dù sao tôi cũng đưa cho bạn tiền thưởng, trước khi nó hết hạn, nhưng tôi hy vọng rằng vấn đề mới này cũng có thể được giải quyết.
Macha

Phải, tôi đã thiếu một liên kết tượng trưng ở đó. Đã sửa lỗi đó. Bây giờ tất cả những gì tôi nhận được là đầu ra màu xám (không phải màu đen của thiết bị đầu cuối của tôi, mà là một màu xám khác).
Macha

Tôi nhận thấy biểu tượng đó không tìm thấy lỗi và cài đặt lib32ncursesw5-dev và lib32ncursesw5 (Tôi đang trên 64-bit) đã giải quyết nó.
Bryce

Tôi đang sử dụng 32 bit. Tôi đã phải tạo một liên kết tượng trưng cho /usr/lib/libncursesw.so -> /lib/libncursesw.so.5 cho biểu tượng không tìm thấy lỗi.
Macha

1

Bạn đã xem bài viết DFTerm này trên DF Wiki chưa? Nó liệt kê một số phụ thuộc mà bạn dường như không liệt kê ở trên ....


Những phụ thuộc này là để biên dịch dfterm, mà tôi đã làm. Đó là Pháo đài Lùn sẽ không chạy.
Macha

1

Bạn có thể thử sử dụng lddđể xem có thiếu đối tượng chia sẻ nào không.

Ví dụ: một cái gì đó như:

ldd /usr/local/bin/df

Tất cả mọi thứ mà ldd liệt kê là "không tìm thấy" đều bị thiếu.

Bạn cũng nên cố gắng xem tất cả các tệp * .so (có ldd) nếu có trong thư mục trò chơi. Bạn có thể tìm thấy các tệp * .so bằng cách sử dụng lệnh này: find . -iname '*.so' -type f


Đó là Pháo đài Lùn, không phải sau đó, sẽ không chạy.
Macha

Sau đó sử dụng ldd trên chương trình thực thi đó, tôi không biết chương trình nên tôi không biết tên của nó. Tôi thậm chí không biết nó có trong thư mục / usr / local / bin không ...
LassePoulsen

ldd đưa ra: "Không phải là một thực thi động."
Macha

Ồ, có hai, một chỉ chạy cái khác. Làm thế nào tôi sẽ nói những gì một đối tượng chia sẻ mất tích?
Macha

tất cả mọi thứ mà ldd liệt kê là "không tìm thấy" đều bị thiếu;)
LassePoulsen

1

Bạn cần chỉnh sửa init.txt của bạn. Tìm kiếm một thiết lập cho [PRINT_MODE:2D]và thay đổi nó thành[PRINT_MODE:TEXT]

Bạn có thể muốn thay đổi [SOUND:NO]là tốt.

Bạn sẽ chỉ chạy ở 80x24 trừ khi bạn chạy bên trong màn hình hoặc tmux.

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.