Lagi

Tidak dapat menginstal versi GDAL yang benar untuk menggunakan ReadAsArray tanpa mendapatkan kesalahan di Python


Menggunakan petunjuk di sini… https://pythongisandstuff.wordpress.com/2011/07/07/installing-gdal-and-ogr-for-python-on-windows/ Saya mengunduh file berikut: GDAL-1.11.1.win -amd64-py2.7.msi dan gdal-111-1800-x64-core.msi

Setelah melakukan ini, saya dapat membuat skrip Python saya (yang memanipulasi data DTED), dan menjalankan skrip ini dari kode C# saya.

Kemudian saya mengalami beberapa masalah ketika mencoba untuk memanipulasi nilai piksel dari file DTED: 1) Saya mencoba menggunakan ReadAsArray dan saya mendapatkan "ImportError: Tidak ada modul bernama _gdal_array" di baris dalam skrip Python saya… data = rb .ReadAsArray(0, 0, cols, rows) Rujuk ke: Tidak dapat mengimpor gdal_array http://lists.osgeo.org/pipermail/gdal-dev/2011-May/028708.html 2) Saya juga berpikir bahwa saya dapat menggunakan gdallocationinfo … http://www.gdal.org/gdallocationinfo.html Saya mendapatkan kesalahan sintaks pada nama file…

gdallocationinfo C:DataTestFilesTST.DT1 1000 1000 SyntaxError: sintaks tidak valid

Saya menemukan bahwa itu memberikan pesan kesalahan pada nama file apa pun yang saya masukkan.

Oleh karena itu, saya menginstal OSGeo4W agar dapat menggunakan beberapa fungsi GDAL yang disebutkan di atas yang saya perlukan (setelah membaca ini https://hub.qgis.org/issues/8811). Dengan menjalankan OSGeo4W Shell, saya dapat mengetik ini di baris perintah dan mendapatkan hasil yang diinginkan:

C:>gdallocationinfo C:DataTestFilesTST.DT1 1000 1000 Laporan: Lokasi: (1000P,1000L) Band 1: Nilai: 859

Masalahnya adalah saya tidak berpikir bahwa saya dapat menggunakan skrip Python dengan shell OSGeo4W ini, yang berarti saya harus menjalankan beberapa jenis skrip lain dari kode C# saya, saya kira.

Apakah ada versi file msi lain yang harus saya unduh selain GDAL-1.11.1.win-amd64-py2.7.msi dan gdal-111-1800-x64-core.msi?

Saya hanya tidak yakin pendekatan mana yang harus saya ambil.


Saya dapat mengatasi masalah ini dengan menggunakan ReadRaster:

dari osgeo import gdal,ogr ds = gdal.Open( 'C:/Data/TestFiles/DtedFile.DT1' ) rb=ds.GetRasterBand(1) import struct xsize = rb.XSize ysize = rb.YSize datatype = rb.DataType #Membaca nilai nilai raster = rb.ReadRaster( 0, 0, xsize, ysize, xsize, ysize, datatype ) #Konversi antara tipe GDAL dan tipe paket python data_types ={'Byte':'B','UInt16':' H','Int16':'h','UInt32':'I','Int32':'i','Float32':'f','Float64':'d'} values ​​= struct.unpack(data_types [gdal.GetDataTypeName(rb.DataType)]*xsize*ysize,values) #Sekarang Anda dapat melihat salah satu dari nilai-nilai ini dalam array. cetak(nilai[35])

APT adalah sistem manajemen paket untuk Debian dan distribusi Linux lainnya berdasarkan itu, seperti Ubuntu. Untuk sebagian besar, APT mudah digunakan untuk menginstal, menghapus, dan memperbarui paket. Dalam kasus yang jarang terjadi, seringkali ketika Anda mencampur dalam dependensi pihak ketiga, ada kemungkinan apt-get akan memberi Anda kesalahan yang memberi tahu Anda bahwa instalasi paket tidak dapat diselesaikan.

Itu selalu merupakan ide yang baik untuk membuat cadangan file konfigurasi seperti /etc/apt/sources.list , sehingga Anda dapat mengembalikan perubahan jika diperlukan.

Jika kesalahan menunjukkan sesuatu seperti ini:

<some-package>: Tergantung: <other-package> (= versi) tetapi versi ini harus diinstal

Kemudian pastikan bahwa repositori terbatas dan semesta diaktifkan. Tekan Alt + F2 , ketik software-properties-gtk dan tekan Enter .

Di bawah tab Perangkat Lunak Ubuntu, aktifkan semua repositori.

Salah satu kemungkinan penyebab dependensi yang tidak terpenuhi adalah database paket yang rusak, dan/atau beberapa paket tidak diinstal dengan benar. Untuk memperbaiki masalah ini, tekan Alt + Ctrl + T untuk membuka terminal dan coba jalankan salah satu perintah berikut:

apt-get clean membersihkan repositori lokal dari file paket yang diambil (file .deb). Ini menghapus semuanya kecuali file kunci dari /var/cache/apt/archives/ dan /var/cache/apt/archives/partial/. apt-get autoclean membersihkan repositori lokal dari file paket yang diambil, tetapi tidak seperti apt-get clean , itu hanya menghapus file paket yang tidak lagi dapat diunduh, dan sebagian besar tidak berguna.

Salah satu perbaikan paling mendasar untuk menyelesaikan masalah dependensi adalah dengan menjalankan:

-f di sini adalah singkatan dari "fix broken". Apt akan mencoba memperbaiki dependensi yang rusak. Jika Anda menginstal secara manual sebuah paket yang memiliki dependensi yang belum terpenuhi, apt-get akan menginstal dependensi tersebut, jika memungkinkan, jika tidak, mungkin hanya menghapus paket yang Anda instal untuk menyelesaikan masalah.

0 ditingkatkan, 0 baru dipasang, 0 untuk dihapus dan 1 tidak ditingkatkan.

Jika itu menunjukkan paket yang ditahan, yang terbaik adalah menghilangkannya. Paket ditahan karena konflik ketergantungan yang tidak dapat diselesaikan. Coba perintah ini untuk menemukan dan memperbaiki konflik:

Jika tidak dapat memperbaiki konflik, itu akan keluar dengan:

0 ditingkatkan, 0 baru dipasang, 0 untuk dihapus dan 6 tidak ditingkatkan.

Hapus paket yang ditahan satu per satu, jalankan dist-upgrade setiap kali, hingga tidak ada lagi paket yang ditahan. Kemudian instal ulang semua paket yang diperlukan. Pastikan untuk menggunakan opsi --dry-run, sehingga Anda sepenuhnya mengetahui konsekuensinya:

Karena menghapus paket yang Anda coba instal mungkin tidak ideal, Anda mungkin juga mencoba mencari repositori yang memiliki paket yang Anda perlukan untuk memenuhi dependensi.

Terakhir, jika semuanya gagal, Anda dapat mencoba memenuhi dependensi sendiri, baik dengan mencari dan menginstal paket yang diperlukan, atau dengan menginstalnya dari sumber dan kemudian membuat paket "deb" untuk paket tersebut.


(Metode ini memerlukan pembaruan symlink saat versi berubah. Artinya, tidak ideal)

Bagi mereka yang menggunakan homebrew, mungkin lebih baik menggunakan symlink saja, jika tidak, semua jenis malapetaka dapat muncul. misalnya biner python resmi akan memodifikasi

./bash_profile sehingga python3 dan pip3 tidak lagi mengarah ke brew.

Dalam kasus saya, saya sekarang telah menghubungkan versi homebrew (sejalan dengan diskusi dalam jawaban yang diberikan oleh @Evenfire):

QGIS3 kemudian mengeluh bahwa paket python tertentu hilang, yang dapat diinstal dengan pip3, mis.

Mungkin juga mengeluh tentang gdal , dalam kasus saya, saya hanya menggunakan brew:


2 Jawaban 2

Skema Anda adalah sebagai berikut:

Di atas, Anda dapat melihat bahwa $R_2$ dan $Z_2$ membentuk pembagi tegangan yang membagi $V_Y$ menjadi $V_ ext$ . Ini mengikuti bahwa:

Ayo lakukan ini di simpati:

Lalu saya baru saja membuat skema ini:

Jadi apa masalahnya?? Saya pikir Anda perlu melihat lebih dekat baik pada proses aljabar Anda atau kesalahan ketik dalam fungsi laplace Anda. Saya menggunakan operasi "copy/paste" langsung dari sympy ke LTspice, untuk meminimalkan kemungkinan kesalahan.

Ketika saya melihat jumlah baris yang dilemparkan pada halaman kosong oleh OP sebagai upaya untuk menurunkan fungsi transfer orde ke-3 ini, saya pikir sudah waktunya teknik sirkuit analitik cepat atau FAKTA diajarkan di universitas. Prinsipnya sederhana dan, sangat sering, bekerja dengan inspeksi: lihat saja rangkaian untuk menyimpulkan konstanta waktu tanpa menulis satu baris aljabar. Latihan terdiri dari menentukan resistansi $R$ yang ditawarkan oleh setiap elemen penyimpan energi ketika rangkaian diamati dengan eksitasi nol atau dengan respons nol. Setelah Anda memiliki $R$ , Anda dapat membentuk konstanta waktu yang dinyatakan sebagai $ au=RC$ atau $ au=frac$ .

Jadi kita mulai dengan sekumpulan sketsa kecil untuk menentukan alam konstanta waktu dari rangkaian linier ini. Kami mengurangi eksitasi menjadi nol volt (sumber input diganti dengan korsleting) dan Anda "melihat" melalui elemen penyimpan energi terputus sementara dari sirkuit untuk menemukan resistansi $R$ yang menggerakkan elemen itu:

Seperti yang Anda lihat, Anda hanya memeriksa gambar untuk melihat, di kepala Anda, resistensi apa yang ditawarkan terminal yang bersangkutan (di mana panah menunjuk). Dan jika Anda membuat kesalahan, mudah dan cepat untuk kembali ke sirkuit dan memperbaiki resistansi $R$ yang salah Anda tentukan.

Untuk nol, Anda dapat melakukan apa yang disebut injeksi ganda nol (NDI) tetapi saya sering lebih suka untuk kasus pasif, untuk menentukan keuntungan frekuensi tinggi: sumbernya kembali ke tempatnya dan Anda memeriksa sirkuit untuk menentukan apa keuntungannya adalah ketika elemen penyimpan energi ditempatkan secara bergantian dalam keadaan frekuensi tinggi:

Anda dapat melihat betapa mudahnya! Ketika Anda memiliki semua elemen ini, Anda merakitnya dalam lembar Mathcad yang a) akan memeriksa homogenitas rumus dan b) akan memungkinkan Anda membandingkan respons yang diperoleh FAKTA dan yang disampaikan oleh pendekatan brute force (Thévenin dalam kasus ini):

Kemudian Anda dapat memplot besar dan fase sambil membandingkan dua respons dalam plot yang serupa. Mereka sangat cocok seperti yang ditunjukkan di bawah ini:

Anda dapat melihat betapa mudahnya FAKTA dibandingkan dengan metode KVL dan KCL klasik. Anda menerapkan memecah dan menaklukkan strategi yang dipromosikan oleh Dr. Middlebrook dan selesaikan sirkuit Anda selangkah demi selangkah dengan kemampuan untuk kembali dan menyelesaikan hasil yang salah antara. Tidak mungkin Anda bisa melakukannya dengan pendekatan brute-force.

Memperoleh keterampilan FACTs sederhana dan Anda dapat memulai dengan sirkuit orde pertama seperti yang ditunjukkan dalam seminar APEC yang saya ajarkan pada tahun 2016. Kemudian, untuk deskripsi mendalam tentang metode hingga urutan $N$ , Anda dapat memiliki lihat buku yang saya terbitkan tentang masalah ini.


6 Jawaban 6

Sunting: Saat aplikasi sekarang diluncurkan, itu masih tidak membiarkan saya memindai. Menemukan ini https://forums.macrumors.com/threads/hp-driver-framework-broken-in-catalina-10-15-7.2262865/post-29100622 mengatakan bahwa sertifikat dari HP telah dicabut, dan kami SOL sampai HP memperbaikinya.

Saya memiliki masalah yang sama pagi ini, melakukan pencarian dan menemukan ini. Ternyata ada versinya di App Store. Saya mengunduhnya dan boom itu berfungsi. Kira mereka ingin Anda menggunakan salah satu yang telah "telah".

Pesan ini terjadi ketika sertifikat yang digunakan untuk menandatangani perangkat lunak dicabut. OS memang memeriksa pencabutan secara online jadi ya itu memblokir aplikasi bahkan jika Anda tidak memperbarui aplikasi atau OS.

Untuk printer dan pemindai HP, masalahnya adalah pencabutan sertifikat yang digunakan HP untuk menandatangani perangkat lunak mereka, bukan karena macOS memeriksa sertifikat yang dicabut. Secara teknis semuanya bekerja sebagaimana mestinya, tetapi dari perspektif dukungan dan budaya, saya yakin ribuan (mungkin jutaan) orang "tiba-tiba" menyadari bahwa ini sudah terpasang di OS mereka.

Sebagian besar aplikasi HP untuk macOS (yang sedikit berbeda dari stub driver yang diperlukan untuk pencetakan) ditandatangani dengan sertifikat yang sekarang dicabut.

Anda benar dalam memindai perangkat lunak tidak akan berfungsi kecuali Anda mengabaikan aplikasi yang telah dicabut atau memperbarui perangkat lunak Anda. Berikut adalah paket yang kami dorong ke ribuan Mac sekitar tengah hari kemarin untuk mengatasi pencabutan sertifikat khusus kemarin.

Jalankan pembaruan perangkat lunak dan Anda akan melihat pembaruan untuk HP atau kasus terburuk, lihat apakah Anda bisa mendapatkan dukungan dari mereka (mereka akan sangat sibuk beberapa hari ke depan sementara ini semua beres)

Jika Anda ingin memeriksa perangkat lunak Anda, berikut adalah dua aplikasi yang saya suka dan gunakan untuk memeriksa sertifikat dan status penandatanganan.

Saya mencoba memperbarui driver dari HP, tetapi itu tidak banyak membantu.

Setelah uninstall selesai, saya menginstal ulang driver HP terbaru dan pesan itu hilang. Sekarang saya dapat mencetak dan memindai tanpa masalah lagi.

Petunjuk HP Easy Start: Harap perbarui perangkat lunak Anda menggunakan HP Easy Start.

  1. Unduh HP Easy Start
  2. Ikuti petunjuk untuk menyiapkan printer Anda. Ketika Anda masuk ke unduhan perangkat lunak, itu akan menunjukkan apakah perangkat lunak perlu diperbarui atau tidak. Jika ya, kotak di sebelah Printer Essentials akan dicentang secara default dan Anda hanya perlu memilih tombol Install. https://h30434.www3.hp.com/t5/Printers-Knowledge-Base/quot-HPxxxxx-framework-quot-will-damage-your-computer-quot/ta-p/7825233

TLDR Instal ulang printer menggunakan "Printer laser PCL Generik" (meskipun itu adalah inkjet!).

Saya mengalami masalah ini dengan HP Officejet H470 saya setelah memutakhirkan ke Big Sur (peringatan itu akan merusak komputer saya)

Saya mencopotnya tetapi tidak dapat menginstal perangkat lunak HP karena memberi saya peringatan ini:

Saya kemudian melepas printer dan menambahkannya kembali menggunakan "Printer laser PCL Generik" (meskipun itu adalah inkjet!). ya :

Tidak, maaf. Itu tertentu pesan tidak menunjukkan macOS telah memutuskan untuk memblokir apa pun. Kata-kata itu jelas salah, itu menunjukkan seseorang mencoba menipu Anda. Kemungkinan besar, penipuan akan melibatkan instruksi/saran untuk mengganti perangkat lunak "tersangka".

Saya telah memberikan dukungan teknis kepada pengguna Apple dan HP sejak sebelum ada Mac, apalagi macOS, dan saya belum pernah melihat atau mendengar kata-kata itu.

NS berarti persis seperti yang dispekulasikan tetapi susunan kata tidak berasal dari Apple atau HP

Jika Anda memiliki kontrak dukungan, hubungi Apple dan HP dan minta mereka untuk mengabaikan arti umum dan menjelaskan kata-kata khusus.

Jika gagal, di sini di Inggris Anda mungkin mengambil Pertanyaan yang sama di suatu tempat seperti Stormfront ... hal terbaik berikutnya ke Apple Store tetapi dengan harga yang wajar.

' "HP Scanner 3" akan merusak komputer Anda…' bukanlah kata-kata yang digunakan Apple atau HP. Jika itu asli, itu akan menjadi kata-kata gaya Windows… sangat menarik karena pedagang malware cenderung menyapih diri mereka sendiri di Windows.

'file ini diunduh pada ... tanggal yang tidak diketahui' bukanlah detail yang menarik bagi Apple atau HP, meskipun itu adalah kata-kata mereka. 'dari sumber yang tidak dikenal' mungkin berhasil - meskipun biasanya, macOS atau afiliasinya terlalu bersemangat dan "memperingatkan" Pengguna yang malang tentang sesuatu yang tidak penting sama sekali.

'Laporkan malware (ke Apple) untuk melindungi orang lain' mungkin merupakan kata-kata bergaya Windows, jika itu asli.


PKG_CONFIG_PATH adalah variabel lingkungan yang menentukan jalur tambahan di mana pkg-config akan mencari file .pc-nya.

Variabel ini digunakan untuk menambah jalur pencarian default pkg-config. Pada sistem Unix biasa, ia akan mencari di direktori /usr/lib/pkgconfig dan /usr/share/pkgconfig . Ini biasanya akan mencakup modul yang diinstal sistem. Namun, beberapa modul lokal mungkin dipasang di awalan yang berbeda seperti /usr/local . Dalam hal ini, Anda perlu menambahkan jalur pencarian sehingga pkg-config dapat menemukan file .pc.

Program pkg-config digunakan untuk mengambil informasi tentang library yang diinstal dalam sistem. Penggunaan utama pkg-config adalah untuk memberikan detail yang diperlukan untuk mengkompilasi dan menautkan program ke perpustakaan. Metadata ini disimpan dalam file pkg-config. File-file ini memiliki akhiran .pc dan berada di lokasi tertentu yang diketahui oleh alat pkg-config.

Untuk memeriksa nilai PKG_CONFIG_PATH gunakan perintah ini:

Untuk menyetel nilai PKG_CONFIG_PATH gunakan:

Untuk melihat di mana pkg-config (versi 0.24 atau yang lebih baru) mencari pustaka yang diinstal secara default, gunakan perintah berikut:

Untuk menambahkan ke jalur itu, setel variabel lingkungan PKG_CONFIG_PATH. File man menyatakan PKG_CONFIG_PATH adalah:

Daftar direktori yang dipisahkan titik dua (di Windows, dipisahkan titik koma) untuk mencari file .pc. Direktori default akan selalu dicari setelah mencari path defaultnya adalah libdir/pkgconfig:datadir/pkgconfig di mana libdir adalah libdir tempat pkg-config dan datadir adalah datadir tempat pkg-config diinstal.

Jawaban pertama secara teknis tidak cukup eksplisit. Dari halaman manual (buka terminal, ketik man pkg-config ):

pkg-config mengambil informasi tentang paket dari file metadata khusus. File-file ini dinamai paket, dan memiliki ekstensi .pc. Pada kebanyakan sistem, pkg-config mencari di /usr/lib/pkgconfig , /usr/share/pkgconfig , /usr/local/lib/pkgconfig dan /usr/local/share/pkgconfig untuk file-file ini. Ini juga akan terlihat di daftar direktori yang dipisahkan titik dua (di Windows, dipisahkan titik koma) yang ditentukan oleh variabel lingkungan PKG_CONFIG_PATH.

Jadi program pkg-config tidak ada dalam direktori PKG_CONFIG_PATH, namun, jika Anda menginstal perpustakaan, agar informasi untuk menggunakannya dalam skrip automake dapat diakses, ia harus berada di direktori yang diketahui oleh pkg-config.

Anda mencoba membuat perangkat lunak, katakanlah Widget. Widget bergantung pada perpustakaan lain, libcog demi argumen. Proses pembuatan widget (mungkin skrip konfigurasi) menggunakan pkg-config untuk menentukan cara menggunakan libcog. pkg-config tidak tahu apa-apa tentang libcog.

Jika libcog tidak diinstal, itu masalah Anda. Ada kemungkinan besar bahwa instalasi standar libcog akan memperbaiki masalah. Tergantung pada sistem Anda, Anda mungkin perlu menginstal versi tambahan "pengembang" dari paket yang sering memiliki "-devel" atau "-dev" di akhir, jadi jika Anda menginstal "libcog", Anda mungkin juga perlu menginstal " libcog-devel".

Jika libcog diinstal, itu mungkin tidak diinstal dengan cara yang pkg-config dapat menemukannya. Mungkin ada file libcog.pc di suatu tempat di sistem Anda. Demi argumen, ada di /opt/cog/lib/pkgconfig/libcog.pc. Dalam hal ini, Anda dapat memberi tahu pkg-config tentang hal itu dengan menyetel PKG_CONFIG_PATH ke direktori yang menyimpan libcog.pc. Jadi dalam shell Bourne atau yang serupa, sesuatu seperti

Setelah selesai, menjalankan kembali perintah yang gagal semoga berhasil.


Jika Anda menginstal paket melalui sumber perangkat lunak dan tidak mengunduh paket sendiri, Anda akan mendapatkan pembaruan baru untuk paket itu dan menginstalnya melalui Manajer Pembaruan.

Anda bisa menginstal MYPACKAGE dengan mengetik di terminal:

atau dengan menggunakan pusat perangkat lunak dan mencari MYPACKAGE . Tetapi jika tidak ada, pergi dengan sumbernya.

/yourprogram/bin di $PATH Anda atau buat symlink ke dalamnya

Ini hanya untuk file .tar.* yang kodenya telah dikompilasi sebelumnya tetapi dikemas ke dalam file tar.

Oke, ini adalah tugas yang cukup menantang untuk pemula, tetapi ikuti saja instruksi saya, dan itu akan baik-baik saja.

Pertama, unduh file .tar.*, dan menyimpan dia. Jangan buka. (Dalam contoh ini, saya akan menginstal build Dropbox Beta, karena saya akan tetap menginstalnya, jadi saya pikir saya mungkin juga mendokumentasikan instalasi tersebut.)

Setelah Anda mengunduh file Anda, (dengan asumsi Anda menyimpannya ke Downloads ,) ketik berikut ini:

CATATAN: gunakan nama file apa pun yang Anda unduh. (mis., untuk Firefox Nightly 19.0a1 versi 64-bit, ketikkan sudo cp firefox-19.0a1.en-US.linux-x86_64.tar.bz2 /opt/ )

Sekarang, ubah ke direktori /opt/, ekstrak program, dan hapus file lama:

(sekali lagi, gunakan nama file yang diunduh. Jangan lupa ekstensinya.)

Oke, periksa untuk melihat apa nama folder yang diekstrak:

Anda akan mendapatkan sesuatu seperti ini:

Oke, dalam contoh kami, kami menginstal Dropbox, dan satu-satunya folder di sana bernama .dropbox-dist . Itu mungkin folder yang kita inginkan, jadi sambungkan ke langkah berikutnya (tambahkan / di akhir, karena ini adalah folder.):

Oke, sekarang ditandai sebagai executable, jadi saatnya membuat tautan simbolik (inilah yang memungkinkan Anda menjalankannya dari Terminal):

CATATAN: ini Sudo ln -s /opt///usr/bin/ . Pastikan itu diganti dengan versi nama program yang lebih kecil dan disederhanakan (misalnya, untuk Firefox Nightly, ketik firefox-nightly untuk server uTorrent, ketik utserver . Apa pun yang Anda ketik di sini akan menjadi perintah yang Anda gunakan setiap kali menjalankan program dari Terminal. Pikirkan /usr/bin/ seperti variabel PATH pada sistem Windows.)

Oke, Anda sudah selesai. Program sekarang diinstal dan dapat dijalankan dari Terminal.
Apa ini? Anda mengatakan Anda ingin menjalankannya dari peluncur, DAN Anda ingin memiliki ikon? Tidak masalah!

Bagian ini cukup sederhana:

CATATAN: Jika Anda menginstal LEBIH dari instalasi sebelumnya, gunakan ls -a /usr/share/applications dan cari file .desktop yang sudah ada sebelumnya. Masukkan nama file itu sebagai gantinya.

Sekarang, di sinilah Anda membuat ikon. Berikut template yang bagus, edit dengan tepat.

Anda mungkin ingin meninggalkan opsi MimeType sepenuhnya. Itu bisa sangat buruk jika Anda tidak melakukannya.


Sesuai bug ini, perbaikannya adalah menggunakan jalur lengkap. Jadi ini adalah baris yang benar di .ssh/config :

ProxyCommand harus memanggil ssh dengan ekstensi .exe, misalnya:

Ceritanya panjang(?)

Menjalankan ssh -vvv XXX menunjukkan:

Menurut dokumen CreateProcess di MSDN, saya kira posix_spawn memanggil CreateProcess sedemikian rupa sehingga argumen lpApplicationName harus jalur yang tepat dan absolut. Setelah menentukan akhiran .exe, tampaknya sudah diperbaiki.

Saya mendapat kesalahan yang sama tetapi itu karena variabel lingkungan DISPLAY disetel ke beberapa nilai. Setelah Anda menghapus variabel lingkungan itu, kesalahannya hilang.

Masalah ini berkaitan dengan bug di implementasi OpenSSH Windows. Bug ini diperbaiki dengan rilis 8.1.0.0. Petunjuk terperinci tentang cara menambal versi dapat ditemukan di sini

Karena netcat tidak tersedia pada sistem default, dua entri berikut di .ssh/config akan berhasil (dengan asumsi bahwa nama pengguna lokal dan nama pengguna jarak jauh berbeda).

login.bar : sistem untuk login
jump.bar : jumphost
<username> : nama pengguna jarak jauh di login.bar dan jump.bar (jika berbeda [email protected] diperlukan). Jika Anda menghilangkan [email protected] di depan jump.bar, nama pengguna lokal akan diambil.

Dalam kedua kasus, login ke login.bar dengan: ssh foo


Jadi. Pertama, terima kasih kepada @SwAt.Be, dia mendorong saya ke jalan yang benar. Kedua, debug Magento 2 DI benar-benar menyebalkan. Saya harap orang-orang dari Magento pernah memperbaikinya.

Beberapa model inti membutuhkan Area untuk ditetapkan.

Jika Anda secara langsung menyuntikkan model ini ke konstruktor kelas kustom Anda, dan kelas ini pada gilirannya disuntikkan di tempat lain, dan beberapa kelas rantai ini disuntikkan ke kelas Perintah Konsol kustom Anda, maka setiap menjalankan php bin/magento akan menyebabkan ' Kode area tidak disetel'.

Ini adalah kekhususan Injeksi Ketergantungan Magento 2. Dalam mode Pengembang itu mengeksekusi setiap kode konstruktor dari setiap kelas yang disuntikkan sebelum init magento nyata. Anda tidak dapat melihat apa yang terjadi saat ini (perhatikan: mungkin saja saat Anda menjalankan setup:di:compile secara manual)

Cara men-debug

Coba saja jalankan setup:di:compile dan coba perbaiki semua kesalahan yang terjadi.

coba tentukan modul khusus Anda yang menggunakan Perintah Konsol

coba nonaktifkan suntikan satu per satu hingga pengecualian hilang (periksa dengan menjalankan bin/magento)

Menemukan model masalah? Besar. Buka tautan berikutnya dari rantai kami dan lakukan hal.2 sampai Anda menemukan model inti, lalu lanjutkan ke solusi.

Ketika Anda menemukan injeksi yang menyebabkan pengecualian ini (Ini biasanya model), gunakan Pabrik model ini sebagai gantinya dan buat model melalui metode Pabrik ->create() SETELAH $state->setAreaCode(smth) (di bawah contoh) . Tentu saja Anda bisa membuatnya dengan model pertama dalam rantai (Impor model dalam kasus saya):

tapi itu tidak baik, karena kesalahan ini bisa muncul tidak hanya di Console.

Jadi saya menemukan model terakhir dalam rantai, dan perbaikan saya terlihat seperti itu:

Jawaban ini tidak mengklaim sebagai yang benar, tetapi inilah yang menjadi tujuan penyelidikan saya.


4 Jawaban 4

karena Anda melakukan make altinstall untuk menginstal python2.7 Anda tidak akan memiliki paket python-devel untuk diinstal sehingga Anda memerlukan mod_wsgi untuk merujuk ke python yang tepat.

Memulai httpd: httpd: Kesalahan sintaks pada baris 221 dari /etc/httpd/conf/httpd.conf: Kesalahan sintaks pada baris 2 dari /etc/httpd/conf.d/wsgi.conf: Tidak dapat memuat /opt/mod_wsgi2.7/ usr/lib64/httpd/modules/mod_wsgi.so ke server: libpython2.7.so.1.0: tidak dapat membuka file objek bersama: Tidak ada file atau direktori seperti itu

Karena kami tidak menggunakan python yang sama dan kami tidak menautkan modul dengan opsi tertentu untuk membuatnya terlihat di tempat yang benar, itu tidak dapat menemukan libpython2.7.so.1.0 , kami dapat mengubahnya dengan membuat libtool memeriksa yang benar tempat.

Memulai httpd: httpd: Kesalahan sintaks pada baris 221 dari /etc/httpd/conf/httpd.conf: Kesalahan sintaks pada baris 2 dari /etc/httpd/conf.d/wsgi.conf: Tidak dapat memuat /opt/mod_wsgi2.7/ usr/lib64/httpd/modules/mod_wsgi.so ke server: /opt/mod_wsgi2.7/usr/lib64/httpd/modules/mod_wsgi.so: tidak dapat membuka file objek bersama: Izin ditolak

Kesalahan terakhir itu karena sistem saya menjalankan selinux dan file memiliki konteks default. Pandangan sekilas pada stackoverflow memberi tahu saya bahwa ini adalah masalah selinux.