Kunshin PyGObject Aikace-aikace da Shirye-shiryen azaman Kunshin .deb don Desktop Linux - Sashe na 4


Muna ci gaba da shirin PyGObject tare da ku akan tebur ɗin Linux, a cikin na hudu na jerin za mu yi bayanin yadda ake tattara shirye-shiryen da aikace-aikacen da muka ƙirƙira don Linux tebur ta amfani da PyGObject azaman kunshin Debian.

Fakitin Debian (.deb) sune tsarin da aka fi amfani dashi don shigar da shirye-shirye a ƙarƙashin Linux, tsarin \dpkg wanda ke ma'amala da fakitin .deb shine tsoho akan duk rarraba Linux na tushen Debian kamar Ubuntu da Linux Mint. Shi ya sa kawai za mu yi bayanin yadda ake tattara shirye-shiryen mu na Debian.

Ƙirƙiri Kunshin Debian daga Aikace-aikacenku na PyGObject

Na farko, ya kamata ku sami wasu mahimman bayanai game da ƙirƙirar fakitin Debian, wannan jagorar mai zuwa zai taimaka muku da yawa.

  1. Gabatarwa zuwa Kundin Debian

A takaice, idan kuna da aikin da ake kira \myprogram dole ne ya ƙunshi fayiloli da manyan fayiloli masu zuwa don ku iya tattara shi.

  1. debian (Jaka): Wannan babban fayil ɗin ya ƙunshi duk bayanai game da fakitin Debian da aka raba zuwa ƙananan fayiloli da yawa.
  2. po (Jaka): Babban fayil ɗin po ya ƙunshi fayilolin fassarar shirin (Za mu bayyana shi a sashi na 5).
  3. myprogram (Fayil): Wannan shine fayil ɗin Python da muka ƙirƙira ta amfani da PyGObject, shine babban fayil ɗin aikin.
  4. ui.glade (Fayil): Fayil ɗin mu'amalar mai amfani da hoto. aikin ku.
  5. bMyprogram.desktop (Fayil): Wannan shine babban fayil ɗin da ke da alhakin nuna aikace-aikacen a cikin menu na aikace-aikacen.
  6. setup.py (Fayil): Wannan fayil shine ke da alhakin shigar da kowane shirin Python cikin tsarin gida, yana da mahimmanci a cikin kowane tsarin Python, yana da sauran hanyoyin amfani da su.

Tabbas.. Akwai wasu fayiloli da manyan fayiloli da yawa waɗanda zaku iya haɗawa a cikin aikinku (a zahiri kuna iya haɗa duk abin da kuke so) amma waɗannan sune ainihin.

Yanzu, bari mu fara tattara kayan aiki. Ƙirƙiri sabon babban fayil mai suna \myprogram, ƙirƙirar fayil mai suna \myprogram sannan a saka lambar da ke gaba gare shi.

#!/usr/bin/python 
# -*- coding: utf-8 -*- 

## Replace your name and email. 
# My Name <[email > 

## Here you must add the license of the file, replace "MyProgram" with your program name. 
# License: 
#    MyProgram is free software: you can redistribute it and/or modify 
#    it under the terms of the GNU General Public License as published by 
#    the Free Software Foundation, either version 3 of the License, or 
#    (at your option) any later version. 
# 
#    MyProgram is distributed in the hope that it will be useful, 
#    but WITHOUT ANY WARRANTY; without even the implied warranty of 
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
#    GNU General Public License for more details. 
# 
#    You should have received a copy of the GNU General Public License 
#    along with MyProgram.  If not, see <http://www.gnu.org/licenses/>. 

from gi.repository import Gtk 
import os 

class Handler: 
  
  def openterminal(self, button): 
    ## When the user clicks on the first button, the terminal will be opened. 
    os.system("x-terminal-emulator ") 
  
  def closeprogram(self, button): 
    Gtk.main_quit() 
    
# Nothing new here.. We just imported the 'ui.glade' file. 
builder = Gtk.Builder() 
builder.add_from_file("/usr/lib/myprogram/ui.glade") 
builder.connect_signals(Handler()) 
window = builder.get_object("window1") 
window.connect("delete-event", Gtk.main_quit) 
window.show_all() 
Gtk.main()

Ƙirƙiri fayil ɗin ui.glade kuma cika shi da wannan lambar.

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Generated with glade 3.16.1 --> 
<interface> 
  <requires lib="gtk+" version="3.10"/> 
  <object class="GtkWindow" id="window1"> 
    <property name="can_focus">False</property> 
    <property name="title" translatable="yes">My Program</property> 
    <property name="window_position">center</property> 
    <property name="icon_name">applications-utilities</property> 
    <property name="gravity">center</property> 
    <child> 
      <object class="GtkBox" id="box1"> 
        <property name="visible">True</property> 
        <property name="can_focus">False</property> 
        <property name="margin_left">5</property> 
        <property name="margin_right">5</property> 
        <property name="margin_top">5</property> 
        <property name="margin_bottom">5</property> 
        <property name="orientation">vertical</property> 
        <property name="homogeneous">True</property> 
        <child> 
          <object class="GtkLabel" id="label1"> 
            <property name="visible">True</property> 
            <property name="can_focus">False</property> 
            <property name="label" translatable="yes">Welcome to this Test Program !</property> 
          </object> 
          <packing> 
            <property name="expand">False</property> 
            <property name="fill">True</property> 
            <property name="position">0</property> 
          </packing> 
        </child> 
        <child> 
          <object class="GtkButton" id="button2"> 
            <property name="label" translatable="yes">Click on me to open the Terminal</property> 
            <property name="visible">True</property> 
            <property name="can_focus">True</property> 
            <property name="receives_default">True</property> 
            <signal name="clicked" handler="openterminal" swapped="no"/> 
          </object> 
          <packing> 
            <property name="expand">False</property> 
            <property name="fill">True</property> 
            <property name="position">1</property> 
          </packing> 
        </child> 
        <child> 
          <object class="GtkButton" id="button3"> 
            <property name="label">gtk-preferences</property> 
            <property name="visible">True</property> 
            <property name="can_focus">True</property> 
            <property name="receives_default">True</property> 
            <property name="use_stock">True</property> 
          </object> 
          <packing> 
            <property name="expand">False</property> 
            <property name="fill">True</property> 
            <property name="position">2</property> 
          </packing> 
        </child> 
        <child> 
          <object class="GtkButton" id="button4"> 
            <property name="label">gtk-about</property> 
            <property name="visible">True</property> 
            <property name="can_focus">True</property> 
            <property name="receives_default">True</property> 
            <property name="use_stock">True</property> 
          </object> 
          <packing> 
            <property name="expand">False</property> 
            <property name="fill">True</property> 
            <property name="position">3</property> 
          </packing> 
        </child> 
        <child> 
          <object class="GtkButton" id="button1"> 
            <property name="label">gtk-close</property> 
            <property name="visible">True</property> 
            <property name="can_focus">True</property> 
            <property name="receives_default">True</property> 
            <property name="use_stock">True</property> 
            <signal name="clicked" handler="closeprogram" swapped="no"/> 
          </object> 
          <packing> 
            <property name="expand">False</property> 
            <property name="fill">True</property> 
            <property name="position">4</property> 
          </packing> 
        </child> 
      </object> 
    </child> 
  </object> 
</interface>

Babu wani sabon abu har yanzu.. Mun ƙirƙiri fayil ɗin Python da fayil ɗin mu'amala. Yanzu ƙirƙirar fayil ɗin \setup.py a cikin wannan babban fayil ɗin, kuma ƙara lambar mai zuwa gare shi, kowane layi ana bayyana shi a cikin sharhi.

# Here we imported the 'setup' module which allows us to install Python scripts to the local system beside performing some other tasks, you can find the documentation here: https://docs.python.org/2/distutils/apiref.html 
from distutils.core import setup 

setup(name = "myprogram", # Name of the program. 
      version = "1.0", # Version of the program. 
      description = "An easy-to-use web interface to create & share pastes easily", # You don't need any help here. 
      author = "TecMint", # Nor here. 
      author_email = "[email ",# Nor here :D 
      url = "http://example.com", # If you have a website for you program.. put it here. 
      license='GPLv3', # The license of the program. 
      scripts=['myprogram'], # This is the name of the main Python script file, in our case it's "myprogram", it's the file that we added under the "myprogram" folder. 

# Here you can choose where do you want to install your files on the local system, the "myprogram" file will be automatically installed in its correct place later, so you have only to choose where do you want to install the optional files that you shape with the Python script 
      data_files = [ ("lib/myprogram", ["ui.glade"]), # This is going to install the "ui.glade" file under the /usr/lib/myprogram path. 
                     ("share/applications", ["myprogram.desktop"]) ] ) # And this is going to install the .desktop file under the /usr/share/applications folder, all the folder are automatically installed under the /usr folder in your root partition, you don't need to add "/usr/ to the path. 

Yanzu ƙirƙiri fayil ɗin \myprogram.desktop a cikin wannan babban fayil ɗin, kuma ƙara lambar da ke gaba, an bayyana shi ma a cikin sharhi.

# This is the .desktop file, this file is the responsible file about showing your application in the applications menu in any desktop interface, it's important to add this file to your project, you can view more details about this file from here: https://developer.gnome.org/integration-guide/stable/desktop-files.html.en 
[Desktop Entry] 
# The default name of the program. 
Name=My Program 
# The name of the program in the Arabic language, this name will be used to display the application under the applications menu when the default language of the system is Arabic, use the languages codes to change the name for each language. 
Name[ar]=برنامجي 
# Description of the file. 
Comment=A simple test program developed by me. 
# Description of the file in Arabic. 
Comment[ar]=برنامج تجريبي بسيط تم تطويره بواسطتي. 
# The command that's going to be executed when the application is launched from the applications menu, you can enter the name of the Python script or the full path if you want like /usr/bin/myprogram 
Exec=myprogram 
# Do you want to run your program from the terminal? 
Terminal=false 
# Leave this like that. 
Type=Application 
# Enter the name of the icon you want to use for the application, you can enter a path for the icon as well like /usr/share/pixmaps/icon.png but make sure to include the icon.png file in your project folder first and in the setup.py file as well. Here we'll use the "system" icon for now. 
Icon=system 
# The category of the file, you can view the available categories from the freedesktop website.
Categories=GNOME;GTK;Utility; 
StartupNotify=false 

Mun kusa gamawa a nan yanzu. Dole ne mu ƙirƙiri wasu ƙananan fayiloli a ƙarƙashin babban fayil ɗin \debian don samar da bayanai game da kunshin mu na \dpkg” tsarin.

Bude babban fayil ɗin \debian, sannan ƙirƙirar fayiloli masu zuwa.

control
compat
changelog
rules

sarrafa: Wannan fayil yana ba da mahimman bayanai game da kunshin Debian, don ƙarin cikakkun bayanai, da fatan za a ziyarci Filin Sarrafa Fakitin Debian.

Source: myprogram
Maintainer: My Name <[email > 
Section: utils 
Priority: optional 
Standards-Version: 3.9.2 
Build-Depends: debhelper (>= 9), python2.7 

Package: myprogram 
Architecture: all 
Depends: python-gi 
Description: My Program 
Here you can add a short description about your program.

compat: Wannan babban fayil ne kawai ga tsarin dpkg, kawai ya haɗa da lambar sihiri 9, bar shi haka.

9

changelog: Anan zaku iya ƙara canje-canjen da kuke yi akan shirin ku, don ƙarin bayani, da fatan za a ziyarci Tushen Canjin Fakitin Debian.

myprogram (1.0) trusty; urgency=medium 

  * Add the new features here. 
  * Continue adding new changes here. 
  * And here. 

 -- My Name Here <[email >  Sat, 27 Dec 2014 21:36:33 +0200

dokokin: Wannan fayil yana da alhakin gudanar da tsarin shigarwa akan injin gida don shigar da kunshin, zaku iya duba ƙarin bayani
game da wannan fayil daga nan: Dokokin Fakitin Debian.

Kodayake ba za ku buƙaci ƙarin wani abu don shirin Python ku ba.

#!/usr/bin/make -f 
# This file is responsible about running the installation process on the local machine to install the package, you can view more information about this file from here: https://www.debian.org/doc/manuals/maint-guide/dreq.en.html#defaultrules Though you won't need anything more for your Python program. 
%: 
    dh [email  
override_dh_auto_install: 
    python setup.py install --root=debian/myprogram --install-layout=deb --install-scripts=/usr/bin/ # This is going to run the setup.py file to install the program as a Python script on the system, it's also going to install the "myprogram" script under /usr/bin/ using the --install-scripts option, DON'T FORGET TO REPLACE "myprogram" WITH YOUR PROGRAM NAME. 
override_dh_auto_build:

Yanzu da muka ƙirƙiri duk mahimman fayiloli don shirin mu cikin nasara, yanzu bari mu fara tattarawa. Da farko, tabbatar cewa kun shigar da wasu abubuwan dogaro don tsarin ginin kafin farawa.

$ sudo apt-get update
$ sudo apt-get install devscripts

Yanzu ka yi tunanin cewa babban fayil ɗin \myprogram yana cikin babban fayil ɗin ku (/home/user/myprogram) don haɗa shi azaman kunshin Debian, gudanar da waɗannan umarni masu zuwa. .

$ cd /home/user/myprogram
$ debuild -us -uc
[email :~/Projects/myprogram$
debuild -us -uc dpkg-buildpackage -rfakeroot -D -us -uc
dpkg-buildpackage: source package myprogram
dpkg-buildpackage: source version 1.0
dpkg-buildpackage: source distribution trusty
dpkg-buildpackage: source changed by My Name Here
<[email >
dpkg-source --before-build myprogram
dpkg-buildpackage: host architecture i386
fakeroot debian/rules clean
dh clean
dh_testdir
dh_auto_clean
....
.....
Finished running lintian.

Kuma shi ke nan! An ƙirƙiri kunshin ku na Debian cikin nasara:

Domin shigar da shi akan kowane rarraba tushen Debian, gudu.

$ sudo dpkg -i myprogram_1.0_all.deb

Kar ka manta don maye gurbin fayil ɗin da ke sama tare da sunan kunshin .. Yanzu bayan ka shigar da kunshin, za ka iya gudanar da shirin daga menu na aikace-aikacen.

Kuma zai yi aiki..

Anan muka kawo karshen kashi na hudu na shirin mu akan PyGObject.. A darasi na gaba za mu yi bayanin yadda ake sarrafa manhajar PyGObject cikin sauki, har sai a saurara da ita…